Cron式は一見するとランダムな数字とアスタリスクの羅列に見えますが、インターネット上で何百万ものスケジュールタスクの実行タイミングを制御しています。バックアップスクリプトの設定、メールレポートのスケジューリング、CI/CDパイプラインの構成など、Cronの理解は不可欠です。このチュートリアルでは、無料のCronパーサーを使って簡単にマスターする方法を紹介します。
必要なもの
- 解読したいCron式、またはCronで表現したいスケジュール
- Webブラウザ(Chrome、Firefox、Safari、またはEdge)
- アカウント登録やインストールは不要
ステップバイステップガイド
Cron式を入力する
Cronパーサーツールを開きます。入力フィールドにCron式を入力またはペーストします。例えば、0 9 * * 1と入力してみましょう。ツールが即座にパースし、わかりやすい言葉で意味を表示します。
わかりやすい結果を読む
パーサーが式を明確な説明に変換します。0 9 * * 1の場合、「毎週月曜日の09:00に実行」のような説明が表示されます。ツールは次回のスケジュール実行時刻も表示するので、スケジュールが期待通りかどうか確認できます。
調整と実験
式を変更するとリアルタイムで説明が更新されます。数字を変更したり、アスタリスクを値に置き換えたり、範囲を追加したりしてみましょう。この即時フィードバックの仕組みは、Cron構文を学び、必要なスケジュールを正確に構築する最速の方法です。
豆知識 Cron式は通常5つのフィールドで構成されます:分、時、日(月の日)、月、曜日。一部のシステムでは6番目のフィールドとして秒が追加されますが、5フィールドが標準です。
5つのフィールドの理解
Cron式はスペースで区切られた5つのフィールドで構成されます:
┌───────────── 分 (0-59)
│ ┌───────────── 時 (0-23)
│ │ ┌───────────── 日 (1-31)
│ │ │ ┌───────────── 月 (1-12)
│ │ │ │ ┌───────────── 曜日 (0-7、0と7は日曜日)
│ │ │ │ │
* * * * *
アスタリスク*は「すべて」を意味します。数字は「この値のときだけ」を意味します。これが基本で、他のすべてはこの上に構築されています。
よく使うCronパターン
最もよく使うパターンを紹介します。Cronパーサーにこれらを入力して、説明と検証を確認してみましょう:
| 式 | 意味 |
|---|---|
* * * * * |
毎分 |
0 * * * * |
毎時(0分に) |
0 9 * * * |
毎日9:00 |
0 9 * * 1 |
毎週月曜日9:00 |
0 9 * * 1-5 |
平日9:00 |
0 0 1 * * |
毎月1日の0:00 |
0 */6 * * * |
6時間ごと |
30 8 * * 1,3,5 |
月・水・金の8:30 |
0 0 * * 0 |
毎週日曜日の0:00 |
*/15 * * * * |
15分ごと |
ヒント ステップ構文*/nは「nインターバルごと」を意味します。分フィールドの*/15は15分ごと(各時の0分、15分、30分、45分)を意味します。曜日フィールドの範囲構文1-5は月曜日から金曜日を意味します。
特殊文字の説明
| 文字 | 意味 | 例 |
|---|---|---|
* |
すべての値 | * * * * * = 毎分 |
, |
複数の値 | 0 9,17 * * * = 9時と17時 |
- |
値の範囲 | 0 9 * * 1-5 = 平日 |
/ |
ステップ間隔 | */10 * * * * = 10分ごと |
自分でCron式を作る
Cron式をゼロから作成するには、スケジュールを5つの質問の答えとして考えます:
- 何分に?(0-59、または
*で毎分) - 何時に?(0-23、または
*で毎時) - 月の何日に?(1-31、または
*で毎日) - 何月に?(1-12、または
*で毎月) - 何曜日に?(0-7、または
*で毎日)
例えば、「毎週火曜日と木曜日の14:30」は:分=30、時=14、日=、月=、曜日=2,4で、30 14 * * 2,4になります。
重要 Cronは24時間制を使用します。午前9時は9ですが、午後9時は21です。また、タイムゾーンはCronジョブを実行するサーバーのものが使われ、ローカルの時刻ではありません。システムがどのタイムゾーンを使用しているか必ず確認してください。
よくある質問
日(月の日)と曜日の両方を設定するとどうなりますか? 標準のCronでは、どちらかの条件が満たされた場合にジョブが実行されます(ANDではなくOR)。多くの人がこの点で混乱します。両方の条件を同時に必要とする場合は、日付を確認するラッパースクリプトを使用してください。
2時間ごとの実行をスケジュールできますか?
はい。0 */2 * * *を使用すると、2時間ごとの0分に実行されます。
5フィールドと6フィールドのCronの違いは何ですか? 一部のシステム(Spring、Quartzなど)は先頭に秒フィールドを追加します。標準のUnix Cronは5フィールドです。Cronパーサーは両方のフォーマットに対応しています。
次のステップ
Cron式の読み書きができるようになったら、プロジェクトでスケジュールを構築してみましょう。他の開発者ツールとして、パターンマッチングの正規表現テスターや設定ファイル用のJSONフォーマッターもチェックしてみてください。