Menu
日本語

cron式ジェネレーター

cronスケジュールを作成・解読し、次の実行時刻をプレビュー。

最終更新

プリセット
*/15
*
日(月内)*
*
曜日*
わかりやすく有効

15分ごと

次の5回の実行(ローカル時刻)
  • 12026-04-26 21:45 Sun
  • 22026-04-26 22:00 Sun
  • 32026-04-26 22:15 Sun
  • 42026-04-26 22:30 Sun
  • 52026-04-26 22:45 Sun

Cron式とは?

Cron式は、繰り返し実行のスケジュールをコンパクトに記述する書き方のこと。元はLinuxのスケジューラー Unix cron で使われていた構文だが、今では Kubernetes CronJob、GitHub Actions のスケジュール、AWS EventBridge、Cloudflare Workers、Vercel Cron、ほとんどのCI/CDプラットフォームなど、ジョブ実行の世界で広く使われている。

見た目はとっつきにくいが、実体はスペースで区切られた5つのフィールドだけ。順に minute(分)、hour(時)、day-of-month(日)、month(月)、day-of-week(曜日)。それぞれは数値、リスト(1,15)、範囲(9-17)、ステップ(*/5)、ワイルドカード(*)のいずれか。良いcronツールなら、式を日本語に変換し、次の発火時刻まで見せてくれるので、デプロイ前に動きを確認できる。

プラットフォームによっては、基本の5フィールドの先頭に *秒* フィールドを追加(Quartz、Spring、Kubernetesの6フィールド形式)したり、末尾に *年* フィールドを追加したりすることもある。式を貼り付ける前に、使うスケジューラーがどの形式を受け入れるかは必ず確認しておこう。

Cronスケジュールを書きながら身につくこと

  • 標準的なcron式は minute、hour、day-of-month、month、day-of-week の5フィールド構成。
  • * はそのフィールドの「全値」を意味する。スケジュールが意図より頻繁に発火する原因はだいたいこれ。
  • */N は「N単位ごと」という意味。minute フィールドの */5 は「5分ごと」になる。

Cron式の書き方ステップバイステップ

  1. プリセットから始める

    やりたいことに近いプリセットを選ぶ。毎分毎時毎日9時平日9時毎月 など。式がエディターに表示される。

  2. 各フィールドを調整する

    minute、hour、day-of-month、month、day-of-week を編集する。任意の値には *、カンマ区切りリスト、範囲(9-17)、ステップ(*/15)が使える。

  3. 日本語の説明を読む

    ツールが式を文章に変換してくれる(「平日 09:00」など)。表示された文章が意図と違っていれば、その式は間違っているということ。

  4. 次の発火時刻をプレビューする

    ローカルタイムゾーンで次の5〜10回の実行時刻を確認する。サマータイムの切替時刻に近いスケジュールだと挙動が変わるので要注意。

  5. スケジューラーにコピーする

    完成した式を crontab、GitHub Actions のワークフロー、Kubernetes CronJob など、使っているスケジューラーに貼り付ける。

Cronフィールド クイックリファレンス

標準的なcron式の5フィールドを順番にまとめたもの。参考: POSIX crontab(5) man ページ

位置フィールド範囲特殊文字
1Minute(分)0–59* , - /
2Hour(時)0–23* , - /
3Day of month(日)1–31* , - / ?(一部の方言)
4Month(月)1–12 または JANDEC* , - /
5Day of week(曜日)0–6(日曜=0)または SUNSAT* , - /

試してみたいCron式の例

5分ごと

*/5 * * * *

意味

5分ごと — 毎時0分から始まり、5分間隔で発火する。

ステップ値(*/5)は、すべての数字を列挙せずに「N単位ごと」を表現する一番簡単な方法。ヘルスチェックやポーリング系のジョブで定番。

平日9時

0 9 * * 1-5

意味

月曜から金曜まで毎日 09:00。

曜日の範囲 1-5 は月〜金を表す。営業時間中のリマインダーや、平日だけのダイジェスト配信などに使える。

毎月1日 0時

0 0 1 * *

意味

毎月1日の 00:00。

day-of-month を 1、それ以外を * にすれば、文字どおりの月次ジョブが書ける。請求処理、レポート、ローテーションタスクなどによく使われるパターン。

平日の営業時間中、30分ごと

0,30 9-17 * * 1-5

意味

月〜金、09:00〜17:00 の毎時 0分と 30分。

カンマリスト(0,30)+ 範囲(9-17)+ 平日の組み合わせ。業務時間中だけ意味があるBIの再集計や、キューの吐き出し処理などにちょうどいい。

Cronでありがちなミス

  • タイムゾーンを忘れる。多くのcronデーモンは「サーバーの」タイムゾーンで動く — 自分の手元時間ではない。プラットフォームが対応していれば、明示的にタイムゾーンを指定しておこう。
  • day-of-month と day-of-week を両方指定する。古典的なUnix cronでは、どちらか片方にマッチした日に発火する仕様で、初見でほとんどの人がハマる落とし穴。
  • */45 で「45分ごと」を期待してしまう。ステップ値は0から計算されるので、*/45 は 0分と45分に発火する — 真の意味で45分間隔ではない。

Cron式 よくある質問

Cron式はどう書けばいい?
標準のcron式は、スペースで区切られた5つのフィールド(minute、hour、day-of-month、month、day-of-week)からなる。「全値」を表す *、特定の数値、カンマリスト(1,15)、範囲(9-17)、ステップ(*/5)を組み合わせて書く。
*/5 * * * * の意味は?
「5分ごと」という意味。minute フィールドの */5 が0分から5分間隔で発火(0, 5, 10, 15, …, 55)し、ほかのフィールドが * なので、毎時・毎日・毎月・毎曜日に動く。
Cronのタイムゾーンは何?
デフォルトでは、cronは実行されているシステムのタイムゾーンを使う。多くのクラウドスケジューラーでは明示的にタイムゾーンを指定できる(TZ=Europe/Berlin、AWSのスケジュール式など)。迷ったらUTCで保存しておくのが無難。
Cron式で1秒ごとに実行できる?
標準の5フィールドcronでは最小単位が分なので、最高解像度は「毎分」。Quartz cron、Spring cron、一部のKubernetesバージョンでは、6番目に「秒」フィールドが追加されており、分未満のスケジュールも書ける。
0 0 * * 00 0 * * 7 の違いは?
どちらも日曜0時を表す。多くのcron実装では day-of-week は 0–6(日〜土)だが、一部の方言との互換性のために 7 も日曜として受け入れられている。

その他の開発者ツール

Coddyでコードを学ぼう

始める