CRON式の書き方と定期実行スケジュール設定
CRONはLinux/Unixの定期実行スケジューラで、バックアップ・メール送信・データ集計などの自動化に使われます。CRON式(Cron expression)の5フィールド構成を理解することで任意のスケジュールを正確に設定できます。
CRON式の5フィールド
CRON式は「分 時 日 月 曜日」の5つのフィールドで構成されます。例えば「0 9 * * 1-5」は「平日(月〜金)の毎朝9時0分」を意味します。*はすべての値、,は複数指定(0,30で0分と30分)、-は範囲(1-5で月〜金)、/はステップ値(*/15で15分ごと)を表します。Linuxの標準cronは5フィールドですが、Quartz(Javaのスケジューラ)では秒フィールドが先頭に追加された6〜7フィールド形式を使います。GitHub ActionsのCRON式もLinux標準の5フィールド形式ですがUTC基準です。CRON Builderではフィールドごとにビジュアルで設定でき、誤ったCRON式を入力するとリアルタイムにエラーを表示します。
よく使うCRON式パターン
毎分: * * * * * / 毎時0分: 0 * * * * / 毎日午前0時: 0 0 * * * / 毎週月曜9時: 0 9 * * 1 / 毎月1日0時: 0 0 1 * * / 平日9〜18時の毎時: 0 9-18 * * 1-5。CRON Builderではこれらをプリセットとして用意しており、UIで選択・調整してCRON式を組み立てられます。月末日のCRON設定はL記号で表せますが(「0 0 L * *」= 毎月最終日)、対応していないスケジューラもあります。多くのクラウドサービス(AWS EventBridge・GCP Cloud Scheduler・Vercel cron)ではCRON式を設定でき、サーバーレス関数の定期実行やデータ集計ジョブの自動化に使われます。
GitHub Actions・Cloud Schedulerでの使い方
GitHub ActionsのWorkflowファイルでは「on: schedule: - cron: 」にCRON式を記述することで定期実行できます。Google Cloud SchedulerやAWS EventBridgeも同様のCRON式(またはrate式)をサポートしています。ただしGitHub Actionsではすべての時刻がUTC基準なので、日本時間に換算(-9時間)して設定する必要があります。
次回実行時刻の確認
CRON式を設定した後に「いつ次回実行されるか」を確認するのは重要です。CRON Builderでは入力したCRON式の次回実行時刻を3件リアルタイム表示します。デスクトップ版では最大50件のCSV出力も可能で、長期的なスケジュールの確認に使えます。たとえば「0 0 29 2 *」は「2月29日午前0時」を意味しますが、うるう年にしか実行されないため4年に1度しかジョブが動きません。このような意図しない設定はCRON Builderで次回実行時刻を確認することで即座に気づけます。本番環境に設定する前に期待するスケジュールで動くかをCRON Builderで検証し、タイムゾーンの設定も合わせて確認することでサーバー時刻とのずれによる誤動作を防げます。