>_devtools-hub
cronバックエンドインフラ

cron式の書き方と定番パターン — スケジュール設定の完全ガイド

cron式の5フィールド構文(分・時・日・月・曜日)から、「毎日0時」「毎週月曜日」「毎月1日」などの定番パターン、特殊文字(*/,-)の使い方まで実践的に解説します。

バッチ処理・定期レポート送信・キャッシュクリア・バックアップなど、定期実行タスクの設定にはcron式を使います。「毎日午前2時に実行したい」という要件をcron式に変換する際、フィールドの順序や特殊文字の意味を誤解してしまうことはよくあります。この記事では、cron式の基本構文から実務でよく使うパターン、ハマりやすい落とし穴まで体系的に解説します。

cron式の5つのフィールド

cron式は左から「分(0-59)・時(0-23)・日(1-31)・月(1-12)・曜日(0-7、0と7が日曜日)」の5フィールドで構成されます。例えば `30 2 * * *` は「毎日2時30分」、`0 9 * * 1` は「毎週月曜日9時0分」を意味します。各フィールドに `*` を使うと「すべての値」を意味します。Linuxのcrontabとは異なり、AWS EventBridgeやGitHub Actionsなどのサービスによっては「秒」フィールドが追加され6フィールドになる場合があります。使用するシステムのドキュメントで確認することが重要です。フィールドの順序を「分・時・日・月・曜日」の順に覚えるために「毎分・毎時・毎日・毎月・毎曜日」と唱える方法がよく使われています。

特殊文字:*/,-の使い方

`*`(アスタリスク)はすべての値を意味します。`*/n` はn間隔(`*/15` なら15分ごと)、`,`(カンマ)は複数値の列挙(`1,15` なら1日と15日)、`-`(ハイフン)は範囲指定(`1-5` は月〜金)に使います。例えば `0 */6 * * *` は6時間ごと(0・6・12・18時)、`0 9 * * 1-5` は平日(月〜金)の9時0分、`0 0 1,15 * *` は毎月1日と15日の0時0分を意味します。`L`(Last)や `W`(Weekday)などの特殊文字はQuartzスケジューラやAWS固有の拡張で、標準cronでは使えないため注意が必要です。Cron Builderでフィールドをビジュアルに設定し、次の5回の実行日時を確認することで意図通りの設定になっているか検証できます。

定番パターン集

`0 0 * * *`(毎日0時)はバックアップ・日次レポートの定番設定です。`0 */1 * * *`(毎時0分)はAPIのキャッシュクリアや定期同期に使われます。`0 9 * * 1`(毎週月曜9時)は週次レポートメール送信の典型パターンで、ビジネス向けシステムでよく使われます。`0 0 1 * *`(毎月1日0時)は月次集計バッチ。`*/5 * * * *`(5分ごと)は健全性チェック(ヘルスチェック)やポーリング処理に使います。`0 2 * * 0`(毎週日曜2時)は週次のデータ整備やフルバックアップに向いています。トラフィックが少ない深夜〜早朝の時間帯に重い処理を設定することで、本番環境への影響を最小化できます。

タイムゾーンとcronの落とし穴

cronのデフォルトのタイムゾーンはサーバーのシステムタイムゾーンです。UTCで動いているサーバーに「毎朝9時(JST)」の処理を設定したい場合は `0 0 * * *`(UTC 0:00 = JST 9:00)と書く必要があります。Linuxのcrontabではタイムゾーン変数を `CRON_TZ=Asia/Tokyo` として設定できます。AWS EventBridgeではスケジュール作成時にタイムゾーンを明示的に選択できます。夏時間(サマータイム)が存在する地域では、時刻が1時間前後するため `2:30` に設定したジョブが年に2回ずれる問題が起きます。UTCで設定しておくと夏時間の問題を避けられますが、ビジネス上「毎朝9時JST」が必要な場合はタイムゾーン対応のスケジューラを使うことを推奨します。

まとめ

cron式は一見暗号のように見えますが、「分・時・日・月・曜日」の順と `*/,-` の4つの特殊文字を覚えるだけで大半のパターンを書けます。設定後は必ず「次の実行日時」を確認するのがベストプラクティスで、Cron Builderのプレビュー機能を使えば意図通りの設定か即座に確認できます。

このツールで試す

Timestamp Converter

Unix タイムスタンプ ↔ 日時 リアルタイム変換

開発者向けユーティリティ時刻

使ってみる →

BOOTH

CRON 式ビルダー

cron 式をビジュアルで組み立て・日本語で解説

開発者向けユーティリティDevOps

使ってみる →

BOOTH

Time Zone Converter

最大5都市のタイムゾーンを同時変換・ビジネスアワー重複をビジュアル表示

開発者向け効率化時刻

使ってみる →

BOOTH