無料で使える最強のクーロン!GitHub Actionsで定期実行スクリプトを動かす
「毎日朝8時に天気の情報をLINEに送りたい」「毎月末にWebサイトのバックアップを取りたい」 ちょっとしたプログラムを書いた後、次にぶつかる壁が**「これをどうやって自動で定期実行させるか?」**です。
こんにちは!自宅のスマートホーム化(自動化)をやりすぎて、たまに家族から「電気が勝手に消える!」とクレームを受ける40代のWebエンジニアです。
今回は、自前のサーバー(VPSやラズパイなど)をわざわざ契約・構築しなくても、完全無料でプログラムを定期実行できる神サービス、「GitHub Actions」の超便利な使い方をご紹介します。
なぜ「GitHub Actions」なのか?
昔はプログラムを定期実行(スケジュール実行)させるとなると、Linuxサーバーを借りて「cron(クーロン)」という仕組みを設定するのが当たり前でした。しかし、そのためには毎月数百円〜数千円のサーバー代がかかり、セキュリティのメンテナンスも自分でやらなければなりません。
そこで登場するのがGitHub Actionsです。 本来はソフトウェア開発のテストやデプロイ(公開)を自動化するためのCI/CDツールですが、この機能の中に「スケジュール実行機能(cron)」が備わっています。
- 完全無料(パブリックリポジトリなら無制限、プライベートでも月に一定時間まで無料)。
- サーバーの保守管理が一切不要。
- Python、Node.js、Rubyなど、好きな言語のスクリプトを動かせる。
まさに個人開発者や自動化オタクにとっての救世主です。
定期実行の仕組み(Mermaid図解)
GitHub Actionsを使った定期実行のフローはとてもシンプルです。
graph TD
A["GitHubサーバーの時間管理 (UTC)"] -->|指定した時刻に発火| B{"GitHub Actions 起動"}
B --> C["仮想環境 (Ubuntuなど) を立ち上げ"]
C --> D["必要な言語 (Pythonなど) をセットアップ"]
D --> E["リポジトリ内のプログラムを実行"]
E --> F["結果を出力 / 通知"]
F --> G["仮想環境を破棄して終了"]
style B fill:#eff6ff,stroke:#2563eb
style G fill:#f8fafc,stroke:#475569
実践:毎日朝9時に「Hello World」を出力する
実際に、GitHub Actionsを使って定期実行を設定してみましょう。必要なのは、プロジェクトのルートディレクトリに .github/workflows/ というフォルダを作り、そこに設定ファイル(YAML形式)を置くだけです。
1. 実行したいスクリプトの準備
まずは実行したい簡単なPythonスクリプト(hello.py)を作成します。
# hello.py
import datetime
# 日本時間を取得
tz_jst = datetime.timezone(datetime.timedelta(hours=9))
now = datetime.datetime.now(tz_jst)
print(f"[{now.strftime('%Y-%m-%d %H:%M:%S')}] 定期実行テスト: おはようございます!")
2. GitHub Actionsの設定ファイル (YAML) を書く
次に、本題のGitHub Actionsの設定ファイルです。.github/workflows/daily_run.yml という名前で以下の内容を作成します。
name: 毎朝9時の定期実行タスク
on:
schedule:
# ここが定期実行の設定 (cron記法)
# 注意: GitHub Actionsの時間はUTC (協定世界時) なので、日本時間(JST)より9時間遅れています。
# 日本時間の朝9時に動かしたい場合は、9 - 9 = 0 (UTC) と設定します。
- cron: '0 0 * * *' # 毎日UTC 0:00 (JST 9:00) に実行
# 手動で実行できるボタンを表示する設定 (テストに便利です)
workflow_dispatch:
jobs:
run-script:
runs-on: ubuntu-latest # 実行環境は最新のUbuntu
steps:
# 1. リポジトリのコードをチェックアウト(取得)する
- name: Checkout repository
uses: actions/checkout@v4
# 2. Pythonの環境をセットアップする
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11' # 使うPythonのバージョン
# 3. 必要なパッケージがあればインストール (今回はなし)
# - name: Install dependencies
# run: pip install requests
# 4. 実際にスクリプトを実行する
- name: Run Python script
run: python hello.py
【超重要】時刻設定の罠:JSTとUTCの違い
ここで私が過去に何度もやらかした大きな失敗談を一つ。 GitHub Actionsのcron設定は、すべて「UTC(協定世界時)」で解釈されます。
私が最初に「よし、毎朝8時に実行しよう!」と思って cron: '0 8 * * *' と設定したところ、実際に動いたのは夕方の17時でした。(日本時間はUTC+9時間のため、UTCの8時は日本の17時になります)。
日本時間(JST)で実行したい時刻から**「マイナス9時間」**した時刻をcronに設定することを絶対に忘れないでください。
まとめ:アイデア次第で広がる自動化の世界
GitHub Actionsの定期実行を覚えれば、もう無駄にサーバーを起動しっぱなしにする必要はありません。
- APIを叩いて最新ニュースを取得し、Slackに投げる
- スクレイピングで商品の在庫をチェックして、入荷したらLINEで通知
- 静的サイトジェネレーター(Zolaなど)のビルドとデプロイを自動化
これらがすべて無料で、このYAMLファイルを1枚書くだけで実現できてしまいます。 最初はYAMLの書き方に戸惑うかもしれませんが、慣れれば数分で設定できます。ぜひ、あなただけの自動化システムを構築してみてください!
関連記事(IT)
長いコマンド打ってない?Makefileで開発タスクを劇的に効率化する
2026/08/21
GASでサクッとSlack通知!Googleスプレッドシートと連携する自動化の第一歩
2026/08/21
Notion APIとPythonで作る!毎週の定例タスクを自動生成する仕組み
2026/05/30