XAPPSXAPPS
← Blog
·3分で読めます

GitHub Actions で毎日データを自動収集する

#自動化#GitHub#個人開発

「毎日決まった時間に、自動でデータを集めたい」。そんなとき、自分は GitHub Actions のスケジュール実行を使っています。Amazon売れ筋ランキングでも、この仕組みで毎日データを蓄積しています。この記事では、実際のワークフロー定義を見せながら、その作り方を具体的に紹介します。

サーバーを立てなくていい

定期的な処理というと、サーバーを用意して常駐させるイメージがあります。でも個人開発でそれをやると、管理も費用もそれなりに負担です。OSのアップデート、再起動への対応、止まっていないかの監視——本題ではない仕事が増えていきます。

GitHub Actions なら、決まった時刻に処理を走らせるだけならサーバーを持たずに済みます。リポジトリに設定ファイルを置いておけば、あとは GitHub 側が時間になったら勝手に実行してくれます。

実際のワークフロー定義

やっていることは、.github/workflows/ にこんな YAML を一つ置くだけです。

name: daily-collect
on:
  schedule:
    - cron: "0 0 * * *"   # UTC 0:00 = JST 9:00
  workflow_dispatch:        # 手動実行もできるように
jobs:
  collect:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: pip install -r requirements.txt
      - run: python collect.py
        env:
          API_KEY: ${{ secrets.API_KEY }}

ポイントを補足すると、

  • cron は UTC 基準です。JST 9:00 に動かしたいなら 0 0 * * *(UTCの0時)と書きます。ここはよく間違えるところです。
  • workflow_dispatch を足しておくと、GitHub の画面からボタン一つで手動実行できます。デバッグ時にとても便利です。
  • APIキーなどの秘密情報は、リポジトリの Settings → Secrets に登録して ${{ secrets.API_KEY }} で読みます。コードに直書きしないこと。

収集したデータをどこに置くか

取得したデータの保存先は、用途で使い分けています。

  1. データベースに入れる(Supabase など):履歴を貯めて後から集計したいとき
  2. リポジトリにコミットして戻す:JSON ファイルとして持ちたいとき

2 の「コミットして戻す」は、ワークフローの最後に git commit & git push を足すだけで実現できます。データ更新そのものが Git の履歴として残るので、いつ何が変わったか追えるのが地味に便利です。

「貯める」ことの価値

この手の自動収集で大事なのは、表示そのものよりもデータを貯め続けることだと感じています。スナップショットを毎日ためておけば、あとから「先週と比べてどう変わったか」を見せられるようになります。具体的な履歴テーブルの設計は「Amazon の API で「売れ筋ランキング」サイトを作ってみた」にまとめました。

最初に少し仕込んでおくだけで、あとからじわじわ効いてくる。しかも GitHub Actions は、こうした軽い定期処理なら無料枠の範囲で十分回ります。スケジュール実行は、個人開発ととても相性の良い仕組みです。