m moji kit v1.0.9
変換 cron 式 → 人間可読

cron 式を読みやすい日本語に変換する

0 9 * * 1-5 のような cron 式を「平日の朝 9 時」のように人間に分かる説明にする方法を整理しています。

解説

cron 式は分・時・日・月・曜日の 5 フィールド (秒を含む 6 フィールド版もあり) で実行スケジュールを表します。`*` は任意、`,` で複数指定、`-` で範囲、`/` でステップ (`*/15` なら 15 分ごと) です。 例として、`0 9 * * 1-5` は平日 9:00、`*/15 * * * *` は 15 分ごと、`0 0 1 * *` は毎月 1 日 0:00、`0 22 * * 0` は毎週日曜 22:00 になります。読みやすい日本語に展開するには cronstrue や crontab.guru のような専用ツールを使うのが手堅いです。

サンプル入力(cron 式)

0 9 * * 1-5

サンプル出力(人間可読)

毎週の月曜日から金曜日まで、9:00 に実行

使うときのコツ

  • · * と */N と特定値の使い分けが書き始めの混乱ポイント。1 ステップずつ確認
  • · 曜日は 0 = 日曜、1 = 月曜 のシステムが多いが、Quartz は 1 = 日曜、7 = 土曜
  • · 「毎月の最終日」のような複雑な指定は L 拡張(Quartz / Spring)を必要とする

よくある質問

cron 式の最初のフィールドは何?
標準 cron は分(0-59)です。Quartz など 6 フィールド版は秒から始まります(0-59)。バージョンを確認してから書き始めてください。
「平日のみ実行」はどう書く?
曜日フィールドに 1-5(月-金)を指定します。例: `0 9 * * 1-5`。日本の祝日は cron では表現できないので、別途祝日カレンダーが必要です。
「30 分ごと」と「毎時 0 分・30 分」は違う?
実用上は同じです。`*/30 * * * *` も `0,30 * * * *` も同様に動作します。前者の方が短く読めますが、可読性のため後者を推奨する設計もあります。
毎月の最終日に動かしたい
標準 cron では難しいです。Quartz の `L` 拡張や、Linux なら `[ "$(date +\%d -d tomorrow)" = "01" ]` のようなチェックを併用します。
重複実行を防ぐには?
cron 単体では前回の終了を待つ機能がありません。flock コマンドや専用ロック、またはジョブキュー(Sidekiq / Celery 等)の利用を検討してください。
cron のタイムゾーンは?
サーバーのローカルタイムゾーンに依存します。コンテナでは TZ 環境変数で明示的に指定するのが安全です。

関連ツール

TS
タイムスタンプ変換
Unix タイムスタンプと日時を双方向に変換します。秒 / ミリ秒、UTC / ローカルに対応。