Cron式の書き方完全ガイド——定期実行タスクを正確にスケジュールする方法
最終更新: 2026年3月29日 ・ 読了時間: 約7分
「毎日9時にバックアップを取りたい」「毎週月曜にレポートを送信したい」——サーバーやクラウド環境で定期実行タスクを設定するとき、避けて通れないのがCron式(クーロン式)です。 このガイドでは、Cron式の基本構文から実用パターン、クラウド環境での活用法まで体系的に解説します。
Cronとは
CronはUNIX系OS(Linux・macOS)に標準搭載されている定期実行デーモンです。 1975年にベル研究所で開発されて以来、50年以上にわたりサーバー管理の基盤として使われ続けています。 crontabファイルにスケジュールとコマンドを記述するだけで、指定した日時に自動でタスクを実行できます。
現在ではLinuxサーバーだけでなく、AWS CloudWatch Events、Google Cloud Scheduler、GitHub Actions、Vercel Cron Jobsなど、多くのクラウドサービスがCron式の構文を採用しています。 Cron式を覚えれば、あらゆる環境で定期実行タスクを設定できるようになります。
Cron式の5つのフィールド
標準的なCron式は、スペースで区切られた5つのフィールドで構成されます。 左から「分・時・日・月・曜日」の順に並び、それぞれ指定可能な値の範囲が決まっています。
| フィールド | 指定可能な値 | 説明 |
|---|---|---|
| 分(Minute) | 0〜59 | 何分に実行するか |
| 時(Hour) | 0〜23 | 何時に実行するか(24時間表記) |
| 日(Day of Month) | 1〜31 | 何日に実行するか |
| 月(Month) | 1〜12 | 何月に実行するか |
| 曜日(Day of Week) | 0〜7(0と7は日曜) | 何曜日に実行するか |
例えば 30 9 * * * は「毎日9時30分に実行」を意味します。*は「すべての値」を表すワイルドカードです。
特殊文字の意味
Cron式では4つの特殊文字を使ってスケジュールを柔軟に指定できます。 これらを組み合わせることで、複雑なスケジュールも1行で表現可能です。
| 文字 | 名称 | 意味 | 例 |
|---|---|---|---|
| * | アスタリスク | すべての値にマッチ | * * * * *(毎分実行) |
| , | カンマ | 複数の値をリスト指定 | 0 9,18 * * *(9時と18時) |
| - | ハイフン | 値の範囲を指定 | 0 9 * * 1-5(月〜金の9時) |
| / | スラッシュ | 間隔(ステップ値)を指定 | */5 * * * *(5分おき) |
実用パターン15選
実務でよく使うCron式のパターンをまとめました。コピーしてそのまま使えます。
| 用途 | Cron式 | 説明 |
|---|---|---|
| 毎日9時 | 0 9 * * * | 朝の定時バッチに最適 |
| 毎週月曜9時 | 0 9 * * 1 | 週次レポートの送信に |
| 毎月1日の0時 | 0 0 1 * * | 月次集計・請求処理に |
| 5分おき | */5 * * * * | 死活監視・ヘルスチェック |
| 1時間おき | 0 * * * * | データ同期・キャッシュ更新 |
| 営業日のみ9時 | 0 9 * * 1-5 | 平日(月〜金)のみ実行 |
| 週末のみ10時 | 0 10 * * 0,6 | 土日のみ実行 |
| 毎日深夜3時 | 0 3 * * * | DBバックアップ・ログローテーション |
| 15分おき | */15 * * * * | API ポーリング・メトリクス収集 |
| 毎年1月1日0時 | 0 0 1 1 * | 年次リセット・ライセンス更新 |
| 四半期初日 | 0 0 1 1,4,7,10 * | 四半期ごとのレポート生成 |
| 毎日9時と18時 | 0 9,18 * * * | 朝夕の通知配信に |
| 30分おき(営業時間内) | */30 9-17 * * 1-5 | 業務時間中のみ定期チェック |
| 毎月15日と末日 | 0 0 15,28-31 * * | 給与・経費の締め処理 |
| 毎分(テスト用) | * * * * * | 動作確認時のみ使用 |
クラウド環境でのCron
主要なクラウドサービスはCron式の構文をサポートしており、サーバーレスで定期実行タスクを運用できます。 それぞれのサービスには固有の拡張構文や制約があるため、移行時には注意が必要です。
AWS EventBridge(旧CloudWatch Events)
6フィールド形式(秒を含まない代わりに年フィールドが追加)を採用。rate(5 minutes)のような自然言語風の指定も可能です。 Lambda関数やStep Functionsとの連携が容易で、サーバーレスアーキテクチャの定期実行に最適です。
Google Cloud Scheduler
標準の5フィールドCron式をそのまま使用できます。タイムゾーン指定(Asia/Tokyo)に対応しており、JSTでの指定が直感的に行えます。 HTTP・Pub/Sub・App Engineをターゲットに実行できます。
GitHub Actions
ワークフローファイルのon.scheduleでCron式を指定します。 タイムゾーンはUTC固定のため、JSTで設定したい場合は-9時間の変換が必要です。 最短間隔は5分ですが、負荷状況により遅延が発生する場合があります。
日本時間(JST)とUTCの注意点
Cron式でもっとも多いミスが、タイムゾーンの変換間違いです。 日本標準時(JST)はUTC+9のため、UTCベースのシステムで日本時間の9時に実行したい場合は、0時(UTC)を指定する必要があります。
| 日本時間(JST) | UTC | Cron式(UTC環境用) |
|---|---|---|
| 毎日 9:00 JST | 毎日 0:00 UTC | 0 0 * * * |
| 毎日 12:00 JST | 毎日 3:00 UTC | 0 3 * * * |
| 毎日 18:00 JST | 毎日 9:00 UTC | 0 9 * * * |
| 毎日 0:00 JST | 前日 15:00 UTC | 0 15 * * * |
日付をまたぐ変換では曜日指定にも影響が出るため、特に注意が必要です。 例えば「毎週月曜の朝2時(JST)」をUTCで表すと「日曜の17時」になり、曜日が1日ずれます。 タイムゾーン指定に対応したサービス(Google Cloud Schedulerなど)では、Asia/Tokyoを直接指定することで変換ミスを防げます。
tools24.jpのCron式ビルダーで組み立てる
Cron式を手書きすると、フィールドの順番を間違えたり、特殊文字の組み合わせでミスが発生しがちです。 tools24.jpのCron式ビルダーを使えば、GUIで条件を選択するだけで正確なCron式を生成できます。 次回実行日時のプレビュー機能もあるので、意図したスケジュール通りに動くかをその場で確認できます。
関連ガイド
- 正規表現の基本ガイド — 正規表現の構文と実用パターンを解説
- ダミーデータ活用ガイド — テスト用データの生成と活用法