開発者

Cron式パーサー

任意の5フィールドのcron式を貼り付けるだけで、その意味を分かりやすい言葉ですぐに確認できます——ジョブがいつ実行されるかを知るためにアスタリスクやスラッシュとにらめっこする必要はもうありません。

このツールは役に立ちましたか?

Cron式パーサーとは?

Cronは、Unix/Linuxのcronジョブ、CI/CDパイプライン、KubernetesのCronJob、その他無数のタスクスケジューラで使用される標準的なスケジューリング構文です。cron式は繰り返しスケジュール全体を5つのコンパクトなフィールドに詰め込みます——強力ですが一目で読み解くのが難しいことで有名です。「0 */4 * * 1-5」は平日の4時間ごとでしょうか、それとも全く別の意味でしょうか? このパーサーはcron式をフィールドごとに分解し、分かりやすい英語の文章に変換します。デプロイ前にスケジュールが正しいことを確認したり、cron構文表を参照せずに他の人が書いたスケジュールを素早く理解したりするのに役立ちます。

この計算機を使用するタイミング

  • スケジュールされたタスクやCI/CDパイプラインをデプロイする前にCronスケジュールを確認するとき
  • スケジュールされたジョブが予期しない時刻に実行された(または実行されなかった)原因をデバッグするとき
  • チームメイトが書いたKubernetes CronJobやGitHub Actionsスケジュールを確認するとき
  • システム管理者やDevOps認定コースのためにCron構文を学ぶとき
  • サーバーマイグレーション中に既存のcrontabエントリを監査するとき
  • 複数の時間制約を組み合わせた複雑なスケジューリングパターンを設計するとき

手順:

  1. 5フィールドのcron式を入力欄に貼り付けるか入力します。
  2. 各フィールドがその意味とともに個別に分解されて表示されます。
  3. スケジュール全体の分かりやすい言葉での説明を読みます。
  4. 「毎時」や「平日午前9時」といったよくあるスケジュールにはプリセットボタンを試してください。

計算式

┌───────────── 分 (0-59) │ ┌───────────── 時 (0-23) │ │ ┌───────────── 日 (1-31) │ │ │ ┌───────────── 月 (1-12) │ │ │ │ ┌───────────── 曜日 (0-6, 日曜=0) │ │ │ │ │ * * * * *

ユースケース

  • スケジュールされたタスクやCI/CDパイプラインをデプロイする前にcronスケジュールを検証する
  • 同僚が書いたKubernetesのCronJobやサーバーレスのスケジュール関数を理解する
  • スケジュールされたジョブが予期しない時間に実行された(または実行されなかった)理由をデバッグする
  • システム管理者やDevOpsのコースでcron構文を学ぶ
  • サーバー移行中に既存のcrontabエントリを監査する

主な利点

  • 難解なcron構文を瞬時に分かりやすい言葉に翻訳
  • 5つの各フィールドを個別に分解して明確化
  • 最も一般的なスケジューリングパターン用のワンクリックプリセット
  • 登録不要、すべてブラウザ内で完結

プロのヒント

  • 迷った場合は、まず非常に近い未来の時刻でテストして、スケジュールが期待通りに起動することを確認してください
  • 可読性のため、可能な限りすべての値をカンマで列挙するのではなく範囲(1-5)を使用してください
  • サーバーやスケジューラーのタイムゾーン設定を再確認してください——これは「時間が違う」というcronバグの最も一般的な原因です
  • 単純な毎日/毎週のスケジュールより複雑なものについては、分かりやすい言葉での説明を書き出し、デプロイ前に意図と照らし合わせてください

避けるべきよくある間違い

  • 日(月内)と曜日がANDではなくORで結合されることを忘れる
  • 0始まりの曜日(0=日曜)を他システムの1始まりの慣習と混同する
  • 日(月内)フィールドの*/7が「7日ごと」を意味すると思い込む——実際は毎月リセットされる1日、8日、15日、22日、29日を意味する
  • ほとんどのcron実装がUTCやユーザーのタイムゾーンではなく、サーバーのローカルタイムゾーンで実行されることを忘れる

重要な用語の説明

Cron:Unix系オペレーティングシステムで使用される時間ベースのジョブスケジューラー
Crontab:cronジョブのリストを定義するために使用されるファイルまたはコマンド
ステップ値:フィールドの最小値から「N単位ごと」を意味する「/N」構文
CronJob:cronでスケジュールされたタスクを実行するためのKubernetesのネイティブリソース

関連コンセプト

  • 時間差計算機: 2つの日付と時刻の間の期間を計算
  • 日付カウントダウン: 特定の日付までの日数をカウント
  • Unixタイムスタンプコンバーター: Unixタイムスタンプと日付を変換
  • タイムゾーンオーバーラップ計算機: タイムゾーン間の勤務時間のオーバーラップを検出
  • JSONフォーマッター: JSONデータをフォーマットして検証

例

「0 9 * * 1-5」という式は、分=0、時=9、毎日、毎月、月曜から金曜という意味に分解されます——つまり「月曜から金曜の午前9時00分」です。

結果の解釈方法

パーサーは5フィールドCron式を個々のコンポーネントに分解し、各コンポーネントを平易な日本語に翻訳します。5つのフィールドは:分(0–59)、時(0–23)、日(1–31)、月(1–12)、曜日(0–6、0は日曜日)です。すべての5つのフィールドが現在の時刻と一致した場合にジョブが実行されます — これはフィールド間のAND論理です。 日と曜日の相互作用に特に注意してください。これはOR論理(ANDではなく)を使用します。日15と曜日5でスケジュールされたジョブは、毎月15日と毎金曜日に実行されます — 15日にあたる金曜日のみではありません。これはスケジューリングバグの一般的な原因です。

よくある質問

cron式の5つのフィールドとは何ですか?
順番に、分(0-59)、時(0-23)、日(1-31)、月(1-12)、曜日(0-6、0は日曜日)です。5つすべてのフィールドが現在時刻と一致するとジョブが実行されます。
cron構文のアスタリスク(*)は何を意味しますか?
アスタリスクはそのフィールドで「あらゆる値が許可される」ことを意味します。例えば、時のフィールドの*はジョブが任意の時間に実行できることを意味し、実質的にそのフィールドはスケジュールを制限しません。
*/5は何を意味しますか?
スラッシュはステップ値を示します。分フィールドの*/5は「5分ごと」を意味します——フィールドの最小値から始まり、5単位ごとに繰り返されます。
平日だけジョブをスケジュールするにはどうすればいいですか?
曜日フィールドで範囲を使用します。1-5は月曜日から金曜日を表します。特定の時と分を組み合わせて、例えば「0 9 * * 1-5」は毎平日午前9:00に実行されます。
Cron構文でカンマは何を意味しますか?
カンマは1つのフィールド内で複数の値を区切ります。例えば、分フィールドの0,15,30,45は、ジョブが0分、15分、30分、45分に実行されることを意味します。カンマは単純なORです:ジョブはリストされた値のいずれかで実行されます。
Cron構文のハイフン(範囲)とは何ですか?
ハイフンは値の範囲を定義します。例えば、曜日フィールドの1-5は月曜日から金曜日(日1から5)を意味します。範囲は両端を含みます。範囲を他の構文と組み合わせることができます:1-5,0は月曜日から金曜日と日曜日を意味します。
ジョブを2週間に1回実行するようにスケジュールするにはどうすればよいですか?
標準のCronはネイティブに隔週スケジューリングをサポートしていません。2つのオプションがあります:(1)日付をチェックし2週間に1回だけ実行するラッパースクリプトを使用する、または(2)AWS EventBridgeやカレンダーベースのトリガーを持つシステムタイマーなど、より複雑な式をサポートするタスクスケジューラを使用する。
Cronはどのタイムゾーンを使用しますか?
標準のCronはサーバーのローカルタイムゾーンを使用します。サーバーがUTCに設定されている場合、すべてのCronジョブはローカルタイムゾーンに関係なくUTCで実行されます。常にサーバーのタイムゾーン設定を確認してください。特にクラウド環境では、デフォルトのタイムゾーンが期待するタイムゾーンと一致しない場合があります。
CronとCrontabの違いは何ですか?
Cronはスケジュールされたタスクを実行するデーモン(バックグラウンドサービス)です。CrontabはCronジョブのリストを定義する設定ファイル(またはコマンド)です。Crontabを編集するとき、Cronデーモンが読み取り実行するスケジュール定義を書いています。
Cronで夏時間(DST)はどう処理しますか?
ほとんどのCron実装はDSTに自動的に調整しません。時刻が進むと、午前2:00にスケジュールされたジョブが完全にスキップされる場合があります。時刻が戻ると、ジョブが2回実行される場合があります。DSTの問題を避けるために、移行時間帯(午前2:00–3:00)外にジョブをスケジュールするか、UTCベースのスケジューリングを使用してください。
サブミリ秒間隔でCronを使用できますか?
標準のCronは分レベルの粒度を持ち、1分に1回以上タスクをスケジュールできません。サブミリ秒間隔には、systemdタイマー、より短い間隔のKubernetes CronJobs、またはアプリケーションレベルのスケジューラ(ミリ秒サポート付きnode-cron)などの代替手段を使用してください。

さらに多くのツールを見る

ツールライブラリ全体から厳選したおすすめです。