ToolActToolAct

Cron式ジェネレーター

Cronスケジュール式のビジュアル生成・解析ツール

Cron 表达式
* * * ? * *
每秒钟执行
常用
字段设置
秒 (0-59)
分 (0-59)
时 (0-23)
日 (1-31)
月 (1-12)
周 (0-6)
最近 5 次执行时间
12026-07-04 00:00:00
22026-07-04 00:01:00
32026-07-04 00:02:00
42026-07-04 00:03:00
52026-07-04 00:04:00

Cron式とは?

Cron 式は、定期実行されるタスクのスケジュールを文字列で表す形式です。利用するスケジューラーによって、分、時、日、月、曜日に加えて、秒や年を含む 5、6、7 フィールド構成があります。アスタリスク、カンマ、範囲、ステップ、疑問符、特殊なプレースホルダーを使うことで、「5 分ごと」「平日 9 時」「月末」などのルールを表せます。このツールは Cron 式を読み、検証し、次回実行時刻を確認するために役立ちます。ただし Linux cron、Quartz、クラウドスケジューラー、各種フレームワークでは、フィールド数、タイムゾーン、対応記法が異なる点に注意が必要です。

使い方

使い方

  1. 生成モードまたは解析モードを選択
  2. ドロップダウンで時間フィールド(秒・分・時・日・月・曜日)を設定
  3. プリセットをクリックしてよく使う式を素早く入力
  4. 生成モードでは式と次の 5 回の実行時刻が表示されます
  5. 解析モードでは既存の式を検証し、実行時刻を表示します

構文記号

  • * — すべての値
  • 「,」 — 複数の値を列挙(例:1,3,5)
  • - — 範囲指定(例:1-5)
  • / — ステップ間隔(例:*/5 は 5 ごとなので)
  • ? — 値を指定しない(日または曜日で使用)
  • L — 月または週の最終日
  • W — 最も近い平日
  • # — 第 N 曜日(例:2#3 = 第 3 火曜)

開発時の注意

  • 結果は目安として扱い、実際のコード・ビルド・API の環境で必ずテストしてください。
  • バージョン、方言、環境変数、プロジェクトの規約を考慮してください。

重要な注意点

  • 日と曜日のフィールドに同時に値を設定することはできず、片方には ? を使う必要があります
  • 各フィールドには有効な範囲があります:分 0〜59、時 0〜23
  • フィールドの順序は固定です:秒 分 時 日 月 曜日 年
  • 曜日は大文字小文字を区別せず、MON と mon は同じです

利用シーン

フィールドを暗記せずにQuartzスタイルのスケジュールを構築するビジュアルなフィールドコントロールで秒・分・時・日・月・曜日を含む6フィールド式を組み立てます。範囲指定、ステップ、最終日、平日、第N曜日パターンにも対応します。式ビルダーは純粋にクライアント側で動作するため、プロジェクト設定ファイルやスケジュールジョブJSONにコミット・プッシュする前にドラフトを確認できます。
デプロイ前に既存のCron式を解析する5フィールドまたは6フィールドの式を貼り付けてコントロールを展開し、秒・日・曜日・?が意図通りに使われているかを確認します。解析結果は平易な説明と次回以降の実行時刻を表示するため、深夜0時に起動すべき業務時間帯のジョブを見落としているかを素早く検出できます。
次回実行時刻でスケジュールの妥当性を確認するジョブやレポート、バックアップ、リマインダー、サーバータスクに式を使用する前に、生成された説明と次回5回分の実行時刻を確認してください。曜日のオフバイワンや秒フィールドの予期しない動作を早期に発見できます。2月29日にピン留めした 0 0 0 29 2 ? は平年を毎年スキップするため、給与計算やバッチ処理に組み込む前に解析プレビューでそのギャップを可視化しましょう。
Linux cronとQuartz構文の違いに注意する5フィールド式はLinux cronやUnixデーモンで動作し、秒を含む6フィールド式はQuartzやSpring、多くのクラウドスケジューラーで動作します。保存する前にターゲットシステムを確認しましょう。同じ数字でもスケジュールの意味が変わります。Quartzは@hourly、@daily、@midnight、@weekly、@monthly、@yearly、@rebootのような省略記法もサポートしており、Springの@Scheduledアノテーションでは便利ですが、classic crondでは拒否されます。
ジョブのデプロイ前にタイムゾーン処理を確認するスケジューラーがCron式をサーバー時刻・UTC・America/New_Yorkなどの名前付きゾーンのいずれで解釈するかを確認してください。本社時刻で記述したジョブが、グローバルにデプロイされたワーカー上で数時間遅れて起動する場合があります。

仕組み

Cron 式は、ゼロ以上の時間マッチング制約を固定順序のフィールドにエンコードする形式です。古典的な Vixie/BSD cron(Linux crond で使用)は 5 フィールドを使用します:分(0〜59)、時(0〜23)、日(1〜31)、月(1〜12 または JAN-DEC)、曜日(0〜6 または SUN-SAT、慣例として日曜 = 0)。Spring や Egistix ライブラリで普及した Quartz スケジューラーは先頭に秒フィールドを追加した 6 フィールド構成、末尾に年フィールドを加えた 7 フィールド構成をサポートします。各フィールドにはリテラル値、リスト(1,3,5)、範囲(1-5)、ステップ(0/15 は 0 から 15 刻みを意味)、ワイルドカード *(すべての値にマッチ)が使用できます。疑問符 ? は Quartz 独用の「特定の値なし」を示すセンチネルで、日または曜日のいずれか一方に制約がある場合、もう一方に必ず配置する必要があります。 次回の N 回の実行時刻の計算には貪欲前進探索アルゴリズムを使用します:基準時点(通常は現在)から開始し、制約にマッチしない最下位フィールドをインクリメントし、すべての下位フィールドを最小値にリセットし、フィールドがオーバーフローした場合(例:分が 59 を超過、時が 23 を超過)に上位フィールドへカスケードさせます。これは Donovan/Spoonhour 反復法として知られ、O(K x F)(K は候補数、通常 5、F はフィールド数)で実行されます。曜日名(MON、FRI など)は小文字に変換されてマッチングされ、月名の略称も受け付けられます。Quartz の特殊文字 L は月内の最終出現曜日を解決します(例:0 0 0 ? * 5L は最終金曜日)。月の最終日から遡って要求された曜日を計算します。W 文字は指定された日付に最も近い平日(月〜金)を見つけ、必要に応じて前後の月にまたがります。 タイムゾーンの処理は最もよくある設定ミスです:式自体にタイムゾーンメタデータが含まれないため、同じ 0 0 9 * * ? でも America/New_York、Asia/Tokyo、UTC のサーバーでは異なる UTC オフセットで発火します。@daily(0 0 0 * * ?)、@hourly(0 0 * * * ?)、@reboot(デーモン起動時に 1 回実行、時間式ではない)、@weekly(0 0 0 ? * 1)などの省略記法は、解析前に等価な 6 フィールド形式に展開されます。よくある落とし穴として、日 + 曜日の結合があります:古典的 cron ではいずれかがマッチした場合にジョブが実行されます(OR 論理)が、一部の新しい方言では AND 論理に切り替わります。式 0 0 0 15 * 5 は Vixie cron では「15日の深夜0時 AND すべての金曜日」を意味し、多くの初心者が想定する「15日 OR 金曜日の深夜0時」ではありません。Y2038 問題は cron に直接影響しません(time_t を使用)が、32 ビット Unix crond を実行する組み込みデバイスでは 2038-01-19T03:14:07Z に time_t 符号付き 32 ビット整数がオーバーフローします。

  • 古典的 5 フィールド:分 時 日 月 曜日。Quartz は秒(6 フィールド)とオプションで年(7 フィールド)を追加。
  • ? は日/曜日のいずれか一方に値がある場合、もう一方に配置する必要がある。* はそのフィールドのすべての値にマッチ。
  • 日 + 曜日は Vixie cron では OR、一部の新しいスケジューラーでは AND。デプロイ前に確認すること。
  • L は月の最終曜日に解決:例 0 0 0 ? * 5L = 最終金曜日。月の日数から計算される。
  • W は指定日付に最も近い平日(月〜金)を見つける。前後の月にまたがる場合がある。
  • Cron 式にはタイムゾーンメタデータが含まれない。同じ式でもサーバーローカル時刻、UTC、名前付きゾーンで異なる時刻に発火する。
  • Y2038:32 ビット time_t は 2038-01-19 03:14:07 UTC でオーバーフロー。レガシー組み込みシステムの crond に影響。
  • 省略記法 @hourly/@daily/@midnight/@weekly/@monthly/@yearly/@reboot は等価な 5 フィールドまたは 6 フィールド式に展開される。
  • ステップ / 演算子は最左の値からカウント:hour フィールドの 2/3 は 2, 5, 8, 11, 14, 17, 20, 23 に発火。
  • 5 回の反復貪欲前進探索(O(KxF))で基準時点から次回 N 回の実行時刻を計算。

使用例

毎日午前0時(日次バックアップ)

式         : 0 0 * * *
意味       : 毎日 00:00 に実行
次回実行   : 2026-06-11 00:00, 2026-06-12 00:00, 2026-06-13 00:00
用途       : データベースバックアップ、日次レポート生成

15分ごと(ヘルスチェック)

式         : */15 * * * *
意味       : 毎時 0, 15, 30, 45 分に実行
次回実行   : 14:00, 14:15, 14:30, 14:45, 15:00
用途       : API ヘルスチェック、キューポーリング、同期ジョブ

平日午前9時(業務時間中の通知)

式         : 0 9 * * 1-5
意味       : 月曜から金曜の 09:00
次回実行   : 月 09:00, 火 09:00, 水 09:00, 木 09:00, 金 09:00
用途       : 朝会リマインダー、Slack デイリーダイジェスト

毎月1日 03:30(月次請求)

式         : 30 3 1 * *
意味       : 毎月 1 日の 03:30
次回実行   : 7月1日 03:30, 8月1日 03:30, 9月1日 03:30
用途       : 月次請求処理、ログローテーション、アーカイブ

毎週日曜 午前0時(週次クリーンアップ)

式         : 0 0 * * 0
意味       : 毎週日曜の 00:00(Linux cron では 0 = 日曜)
次回実行   : 日 00:00, 日 00:00, 日 00:00
用途       : 週次レポートメール、キャッシュ削除、再学習

Quartz 秒指定 - 30秒ごと

式         : */30 * * * * ?
意味       : 30 秒ごと(Quartz の 6 フィールド構文)
次回実行   : 14:00:00, 14:00:30, 14:01:00, 14:01:30
備考       : day-of-month が * のため day-of-week は ? を使用。この構文には Linux cron ではなく Quartz を使用してください。

よくある質問

どのcron形式に対応していますか?

標準の5フィールドcron(分、時、日、月、曜日)、6フィールド(秒付き、Quartz、Spring、多くのクラウドスケジューラで使用)、オプションの年付き7フィールドに対応しています。ページでは形式を選択でき、式を構築する際に各フィールドの説明が表示されます。

なぜdayOfMonthとdayOfWeekの両方がフィールドにあるのですか?

標準のcronではこれらをORとして扱います。「月の最初の日 OR 毎週月曜日」はどちらかの条件を満たすと実行されます。AND条件にするには、通常非標準の?構文(Quartz)や回避策が必要です。ページでは次回の実行時刻を表示するので、意図を視覚的に確認できます。

スケジュールは実際に私のシステムで実行されますか?

いいえ。このページは式を生成・検証するだけで、ジョブ自体はあなたのスケジューラ(Linuxのcron、GitHub Actions、Kubernetes CronJob、AWS EventBridge、Quartzなど)で実行されます。スケジューラごとにcron方言が微妙に異なるため、ターゲットに合った形式を選んでください。

スケジュールはどのタイムゾーンを使用しますか?

標準のUnix cronはシステムのローカルタイムゾーンを使用します。クラウドスケジューラはまちまちです。AWS EventBridgeはデフォルトでUTC、GitHub ActionsもデフォルトでUTC、Kubernetes CronJobはAPIサーバーのタイムゾーンを使用します。スケジューラのドキュメントを読み、サマータイムの切り替えで予期せぬ時刻にジョブが実行される可能性があることを忘れないでください。

「30分ごと」はどう表現しますか?

*/30 * * * *(分=0,30、毎時、毎日、毎月、毎曜日)。「営業時間内のみ15分ごと」は、*/15 9-17 * * 1-5(さらに月曜から金曜の9~17時に制限)です。ページでは次回5~10件の実行時刻を表示して確認できます。

実本番のスケジュールに使っても安全ですか?

ページは式を生成するだけで、ジョブの実行はスケジューラの仕事です。まずサンプル実行で式をテストし(ほとんどのスケジューラには「手動実行」オプションがあります)、多くのシステムでジョブが衝突してスパイクが発生する深夜(00:00)にジョブをスケジュールすることは避けてください。

何かアップロードされますか?

いいえ。式の解析と次回実行時刻の計算は、JavaScriptのcronライブラリを使ってブラウザ内で行われます。