PR

Cron式 完全ガイド【最小労力で最適なスケジューリング設計を実現する】


AWS/GCP/Firebase対応版Cron式 完全ガイド【最小労力で最適なスケジューリング設計を実現する】


【はじめに】

本稿は、AWS EventBridge Scheduler、GCP Cloud Scheduler、Firebase Functions Schedulerなど、各種クラウドサービスにおけるCron形式の時間指定方法について、最短で理解・実装できることを目的とする。
単なる記述例だけでなく、「実装のコツ、ヒューマンエラー防止、再現性向上策」まで網羅する。


【Cron式とは?】

Cron式とは、タスク実行のスケジュールをテキスト1行で柔軟に記述する形式である。
GUIによる細かな設定を省略し、最小労力で高精度のタイムスケジュール管理が可能となる。

特に、AWS/GCP/Firebaseなどのクラウド環境では、インフラコストをかけずにジョブスケジューリングができるため、**ROI(投資対効果)**の観点から極めて有用である。


【Cron式の基本構造】

Cron式は、通常以下の**5フィールド(AWS EventBridgeでは6フィールド)**から構成される。

cron式の基本構造

cron式は、次の5つのパラメータで構成されます。

項目意味取れる値
minute0–59
hour0–23
day1–31
month1–12
曜日weekday0–7(0と7は日曜)

分 時 日 月 曜日
*  *  * *  *

「*」は**任意の値(全ての値)**を意味します。


よく使う記述パターン

1. 毎分実行

* * * * *

→ 毎分タスクが実行されます。

2. 毎時〇分に実行

例:毎時10分に実行

10 * * * *

3. 特定の時間帯だけ毎分実行

例:0時台の時間帯に毎分実行

* 0 * * *

リスト・範囲・間隔指定

順番フィールド内容許容値
1分(Minutes)0–59
2時(Hours)0–23
3日(Day-of-month)1–31
4月(Month)1–12またはJAN–DEC
5曜日(Day-of-week)0–7(0と7は日曜)またはSUN–SAT
6年(Year)1970–2199(AWSのみ、通常省略)

※AWSでは6フィールド、GCP/Firebaseでは5フィールド(年なし)


【特殊記号の使い方】

記号意味
*すべての値を対象毎分、毎時など
,複数指定0,15,30,45 * * * * → 毎時0分、15分、30分、45分に実行
-範囲指定9-17 * * * * → 9時から17時の毎時
/間隔指定*/5 * * * * → 5分ごとに実行

【タイムゾーンとUTC変換】

サービスタイムゾーン指定注意点
AWS EventBridge SchedulerAsia/Tokyoなど指定可能タイムゾーン設定を推奨(UTC換算不要)
GCP Cloud Schedulerタイムゾーン指定可明示的に設定しないとUTC基準になる
Firebase Functions SchedulerデフォルトUTC手動でJST換算が必要

タイムゾーン指定できるなら、絶対に指定するべき。


【実践例まとめ】

要件Cron式(AWS版)説明
毎分実行cron(* * * * ? *)
毎時15分に実行cron(15 * * * ? *)
毎日AM4:02に実行cron(2 4 * * ? *)
毎月10日のAM6:15に実行cron(15 6 10 * ? *)
7月1日 AM3:00に実行cron(0 3 1 7 ? *)
毎週月曜AM10:00に実行cron(0 10 ? * MON *)
毎日AM4:30とAM9:30に実行cron(30 4,9 * * ? *)
毎週月・金AM3:00に実行cron(0 3 ? * MON,FRI *)
毎日AM3:00〜9:00の毎時実行cron(0 3-9 * * ? *)
毎月10日のAM3:15〜6:15に毎時実行cron(15 3-6 10 * ? *)
10分ごと実行cron(0/10 * * * ? *)
3時間ごと実行cron(0 */3 * * ? *)
AM1:00, 6:00, 9:00, 10:00, 11:00実行cron(0 1,6,9-11 * * ? *)

【コピペOK:よく使うCron式テンプレート集】

✅ 毎分実行

* * * * *

✅ 毎時10分に実行

10 * * * *

✅ 毎日AM4:02に実行

2 4 * * *

✅ 毎月10日AM6:15に実行

15 6 10 * *

✅ 毎月1日のAM3:30に実行

30 3 1 * *

✅ 毎週月曜日AM10:00に実行

0 10 * * 1

✅ 毎日AM4:30と9:30に実行

30 4,9 * * *

✅ 毎週月・金曜AM3:00に実行

0 3 * * 1,5

✅ 毎日AM3:00~9:00の間に毎時実行

0 3-9 * * *

✅ 毎月10日、AM3:15~6:15に毎時実行

15 3-6 10 * *

✅ 毎10分ごとに実行

*/10 * * * *

✅ 3時間ごとに実行

0 */3 * * *

✅ AM1:00、6:00、9:00、10:00、11:00に実行

0 1,6,9-11 * * *

【よくある失敗パターン】

ミス対策
UTC変換ミスで実行タイミングがずれるタイムゾーン設定を利用する
Day-of-monthとDay-of-weekを両方指定してエラーどちらかを ? にする(AWS)
曜日番号間違い(0=日曜、1=月曜)曜日番号ルールを確認する
/, の使い方ミス具体例をテンプレ化して使う

【開発効率向上のためのTips】

  • タイムゾーン指定+人間が読めるCron式を標準化する
    (例: Asia/Tokyo, cron(30 3 1 * ? *)
  • 定型パターンを事前にリスト化してテンプレにする
    (例: 毎月1日3:30など)
  • 環境ごとに分岐条件を設定しない設計を心がける
    (例: AWS用、GCP用でCron式を一元管理)

これにより、「作業ミスゼロ+運用負荷最小」 を実現できる。


【まとめ】

Cron式の理解・テンプレ化は、クラウドサービスにおけるインフラ運用コスト削減開発効率向上ビジネススケール拡大に直結する。
特にタイムゾーン指定を正しく行うことで、UTC換算ミスを防ぎ、自動化の再現性を飛躍的に高めることができる。

本ガイドに記載したパターンをベースに、各プロジェクトにおけるスケジューリング戦略の最適化を推進することを推奨する。


【参考文献】


コメント

タイトルとURLをコピーしました