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つのパラメータで構成されます。
項目 | 意味 | 取れる値 |
---|---|---|
分 | minute | 0–59 |
時 | hour | 0–23 |
日 | day | 1–31 |
月 | month | 1–12 |
曜日 | weekday | 0–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 Scheduler | Asia/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換算ミスを防ぎ、自動化の再現性を飛躍的に高めることができる。
本ガイドに記載したパターンをベースに、各プロジェクトにおけるスケジューリング戦略の最適化を推進することを推奨する。
【参考文献】
- AWS EventBridge Scheduler公式 – Schedule expressions using rate or cron
- GCP Cloud Scheduler公式 – Using cron job schedules
- Firebase公式 – Scheduled Functions
コメント