Cron式パーサー・次回実行時刻計算ツール

cron式(分 時 日 月 曜日)を解析し、スケジュールの意味を日本語で表示。ステップ・範囲・カンマ区切りにも対応し、次回実行される5件の日時も自動計算する無料ツール。crontabやGitHub Actionsのスケジュール設定の確認に便利です。

Cron式の構文(5つのフィールド)

cron式は左から「分・時・日(日付)・月・曜日」の5つのフィールドをスペースで区切って指定します。各フィールドには以下の特殊文字が使えます。

位置 フィールド 指定可能な範囲
1 分 0-59
2 時 0-23
3 日(日付) 1-31
4 月 1-12
5 曜日 0-7

曜日は0=日曜〜6=土曜が標準ですが、一部のcron実装で使われる7=日曜の表記もこのツールは受け付けます(内部的に0として扱います)。

各フィールドでは「*」(すべて)、カンマ区切りの列挙(1,15,30)、ハイフンによる範囲指定(1-5)、スラッシュによる間隔指定(*/15、1-30/5)が使え、これらは自由に組み合わせられます。

よくあるcronパターン

cron式 意味
* * * * * 毎分実行されます。
*/5 * * * * 5分ごとに実行されます。
0 * * * * 毎時0分(1時間に1回)に実行されます。
0 0 * * * 毎日0時0分(深夜)に実行されます。
0 9 * * 1-5 平日(月〜金)の9時に実行されます。
0 0 1 * * 毎月1日の0時0分に実行されます。
0 0 1 1 * 毎年1月1日の0時0分に実行されます。
*/15 9-17 * * 1-5 平日の9時から17時まで、15分ごとに実行されます。

Cron式とは

Cron式は、繰り返し実行する処理をいつ動かすかを1行で書き表す記法です。左から「分・時・日(日付)・月・曜日」の5つのフィールドをスペースで区切って並べ、それぞれに *(すべて)、カンマ区切りの列挙、ハイフンによる範囲、スラッシュによる間隔を組み合わせて指定します。*/15 9-17 * * 1-5 なら「平日の9時から17時まで15分ごと」という意味になります。

このツールは入力された式を解析し、**スケジュールの意味を文章で示したうえで、現在時刻から数えて次に実行される5件の日時**を計算します。フィールドごとの内訳も並べて出るため、どの部分が効いているのかを確かめられます。曜日は0=日曜〜6=土曜が標準ですが、一部の実装で使われる7=日曜の書き方も受け付け、内部では0として扱います。次回の探索範囲は約4年で、その中に一致する日時が無い場合はその旨が表示されます。

Cron式パーサーの使い方

  1. Cron式を入力する 「分 時 日 月 曜日」の5つをスペースで区切って入れます。フィールド数や範囲が合わないとエラーになります。
  2. 「解析する」を押す スケジュールの意味が文章で表示されます。式を読み間違えていないかを、まずここで確かめてください。
  3. フィールドの内訳を確かめる 分・時・日・月・曜日それぞれが何を指しているかが並びます。意図しないフィールドに値が入っていないかを見つけられます。
  4. 次回の実行予定を見る 現在時刻から先の5件が日時で出ます。「毎月31日」のように月によって存在しない日付を指定した場合など、意図とのずれが具体的な日付として現れます。
  5. よくあるパターンを引き写す 毎分・5分ごと・毎時0分・平日9時などの定番パターンが表にまとまっています。近いものを土台に書き換えるのが早道です。

使いこなすためのヒント

  • 「*/15 9-17 * * 1-5」のように、カンマ・ハイフンの範囲・スラッシュの間隔指定は自由に組み合わせられます。
  • 曜日フィールドは0=日曜〜6=土曜が標準ですが、一部のcron実装が使う7=日曜の表記もこのツールは受け付けます。
  • 日(日付)と曜日の両方を「*」以外に制限した場合、cronの仕様上どちらか一方に一致すれば実行される「OR」条件になる点に注意してください。
  • GitHub Actionsのschedule設定もこのツールと同じ5フィールド形式のcron構文を使うため、ワークフローの実行タイミング確認にも活用できます。
  • サーバーのタイムゾーン設定によって実際の実行時刻がずれることがあるため、crontab編集後はサーバーの現在時刻も確認しておくと安心です。

Cron式パーサーの活用シーン

crontab に書く前に意味を確かめる

サーバーへ登録する前に解析しておけば、思っていたより多く動く・まったく動かないといった事故を防げます。

GitHub Actions のスケジュールを確認する

ワークフローの schedule に書く式も同じ5フィールドの記法です。次回実行の一覧で、意図した間隔になっているかを見られます。

他人が書いた式を読み解く

引き継いだ設定に 0 */6 * * * のような式があったとき、文章に直せば何時に動くのかがすぐ分かります。

実行がずれた原因を調べる

「動くはずの時刻に動かなかった」ときに、次回実行の一覧を見れば、式そのものが原因なのか別の要因なのかを切り分けられます。

実行間隔の日付を数えたいとき

「次の実行まで何日か」を数えたい場合はカウントダウンタイマーを、営業日で数えたい場合は営業日計算を使ってください。

Cron式に関する用語集

cron
Unix系のOSで、決まった時刻に処理を繰り返し実行するための仕組みです。実行する内容と時刻の対応を書いた一覧を crontab と呼びます。
フィールド
Cron式をスペースで区切った各要素です。左から分(0〜59)・時(0〜23)・日(1〜31)・月(1〜12)・曜日(0〜6)の5つです。
アスタリスク(*)
そのフィールドの取りうる値すべてを表します。分に置けば「毎分」、月に置けば「毎月」という意味になります。
ステップ(/)
*/15 のように書いて間隔を指定します。「15分ごと」のように、範囲の中を一定の刻みで飛ばして選びます。
範囲(-)
1-5 のように連続した値をまとめて指定します。曜日に置けば月曜から金曜、時に置けば1時から5時という意味になります。
曜日の番号
0が日曜、6が土曜です。実装によっては7も日曜として受け付けるものがあり、このツールも7を0と同じものとして扱います。
タイムゾーン
cron はふつう動かす側の環境の時刻で解釈されます。サーバーの時刻設定が想定と違うと、同じ式でも実行時刻がずれる原因になります。

よくある質問

はい。標準のcron仕様では日曜日は0で表されますが、一部の実装(Vixie cron等)では7も日曜日の別表記として扱われます。本ツールはどちらの表記も日曜日として解釈します。

優先関係ではなく「OR」条件になります。日フィールドと曜日フィールドの両方が「*」以外に制限されている場合、どちらか一方の条件を満たす日であれば実行されます。片方が「*」のままなら、制限されているほうだけが条件になります。

基本的な5フィールドの書式(分 時 日 月 曜日)は共通です。ただしGitHub Actionsのスケジュールはすべて協定世界時(UTC)基準で評価される点、また実行タイミングが数分〜数十分程度遅延することがある点がサーバーのcrontabとは異なります。

はい、分・時・日・月・曜日のいずれのフィールドでもステップ指定(開始値/間隔、または*/間隔)が使えます。ただし曜日や月のように値の範囲が小さいフィールドでは、実用上の組み合わせは限られます。
ツールくん

余談ですが ― cronの半世紀

cronという名前はギリシャ語で「時間」を意味するChronos(クロノス)に由来するとされ、1970年代のUNIX初期から存在する定番のジョブスケジューラです。5つのフィールドだけで「毎分」から「毎年特定の日時」まで表現できる簡潔な構文は、半世紀近く経った今も広く使われ続けています。

近年ではLinuxサーバーのcrontabだけでなく、GitHub ActionsやGitLab CI、KubernetesのCronJobなど、多くのCI/CDツールやコンテナ基盤がこの5フィールド形式のcron構文をそのままスケジュール設定に採用しています。UNIX時代に設計された構文が、クラウドネイティブな環境でも変わらず使われ続けているのは興味深い事実です。

cron式でつまずきやすいポイントの一つが、日(日付)と曜日を同時に指定した場合の挙動です。直感的には「AND(両方を満たす日)」を期待しがちですが、実際の仕様は「OR(どちらかを満たす日)」であり、意図と異なる頻度で実行されてしまうトラブルの原因になりやすいところです。