Cron式ビルダー

分・時・日・月・曜日をプルダウンや数値入力で選ぶだけでcron式を組み立てられる無料ツール。生成されたcron式・日本語の説明文・次回実行される5件の日時をその場でプレビューでき、crontabやGitHub Actionsのスケジュール設定作成に便利です。

よく使うスケジュールの早見表

代表的なスケジュールのcron式一覧です。行をクリックすると、上のビルダーにそのままプリセットとして反映されます。

プリセット名 cron式 意味
毎日深夜0時 0 0 * * * 毎日0時0分(深夜)に実行します。
平日9時 0 9 * * 1-5 平日(月〜金)の9時0分に実行します。
毎時0分 0 * * * * 毎時0分(1時間に1回)に実行します。
毎週月曜日 0 0 * * 1 毎週月曜日の0時0分に実行します。

cron式とは

cron式は、UNIX系OSのジョブスケジューラーに「いつ実行するか」を伝えるための5つの数値フィールドです。左から順に 分・時・日(日付)・月・曜日 を並べ、空白で区切って `30 3 * * 1` のように書きます。この例は「毎週月曜日の午前3時30分」を意味します。記法は短くて済む代わりに、書き間違えても構文としては正しく通ってしまうことが多く、意図しない時刻に動いていたことに後から気づく、という事故が起こりがちです。

このツールは、5つのフィールドをそれぞれ「毎回」「値を指定」「リスト」「範囲」「間隔」の5つのモードから選んで組み立て、結果のcron式とその意味を同時に表示します。入力から式へ、式から日本語の説明へ、という両方向を画面上で確認できるため、書いた式が本当に意図どおりかを実行前に検証できます。処理はすべてブラウザー内で完結し、入力した内容がサーバーへ送られることはありません。

cron式の作り方

  1. プリセットから出発する 「毎日深夜0時」「平日9時」「毎時0分」「毎週月曜日」の4つから近いものを選ぶと、各フィールドがその設定で埋まります。ゼロから組むより速く、書き間違いも減ります。
  2. フィールドごとにモードを選ぶ 分・時・日・月・曜日のそれぞれで、毎回(*)・値を指定・リスト・範囲・間隔(*/n)のいずれかを選びます。使わないフィールドは「毎回」のままにしておきます。
  3. 値を入力する リストならカンマ区切り、範囲なら開始と終了、間隔なら何ごとに実行するかの数値を入れます。分は0〜59、時は0〜23、日は1〜31、月は1〜12、曜日は0〜6(0が日曜)です。
  4. 生成された式と説明を確認する 画面に出るcron式と、その日本語の読み下しを突き合わせます。説明が意図とずれていれば、そのフィールドの設定を直します。
  5. crontabへ貼り付ける 確認できたら式をコピーし、`crontab -e` で開いた行の先頭へ置いて、そのうしろに実行したいコマンドを書きます。

使いこなすためのヒント

  • 曜日フィールドを「範囲」モードで1〜5に設定すると、月曜日から金曜日までの平日を一発で指定できます。
  • 「リスト」モードはカンマ区切りで複数の値を指定するモードで、例えば分フィールドに「0,15,30,45」と入力すれば15分ごとの実行と同じ意味になります。
  • 日(日付)と曜日の両方を「毎回(*)」以外に設定すると、cronの仕様上どちらか一方に一致すれば実行される「OR」条件になる点に注意してください。
  • 生成されたcron式は「コピー」ボタンでクリップボードにコピーできるので、そのままcrontabやGitHub ActionsのYAMLに貼り付けられます。
  • プリセットボタンや下の早見表の行をクリックすると、代表的なスケジュールをワンクリックでビルダーに反映できます。

こんなときに使えます

バックアップやバッチ処理の時刻を決めるとき

データベースのダンプやログの集計は、アクセスの少ない深夜に寄せるのが定石です。「毎日3時5分」のような式を、記法を思い出さずに組み立てられます。

営業日だけ動かしたいとき

曜日フィールドを1〜5の範囲にすれば平日限定になります。祝日までは判定できないので、祝日を除きたい場合はスクリプト側で判定を入れてください。

既存のcron式を読み解くとき

引き継いだサーバーのcrontabに `*/15 2-5 * * *` のような式があったとき、同じ設定を再現して説明文を読めば、意味を取り違えずに済みます。

CIやコンテナのスケジュール設定に使うとき

GitHub Actions の `schedule` や Kubernetes の CronJob も同じ5フィールド記法です。ただしこれらは通常UTCで動くため、時フィールドを時差分ずらす必要があります。

cronの用語

cron
UNIX系OSで、指定した時刻にコマンドを自動実行する常駐プログラムです。設定は利用者ごとのcrontabという表に書きます。
crontab
cronに渡すスケジュール表そのもの、およびそれを編集するコマンド(`crontab -e`)を指します。1行が「cron式+実行するコマンド」の組になります。
アスタリスク(*)
そのフィールドについて「すべての値」を意味します。分フィールドが * なら毎分、月フィールドが * なら毎月です。
間隔(*/n)
n個おきに実行する書き方です。分フィールドの `*/15` は0分・15分・30分・45分を意味します。起点は必ずそのフィールドの最小値で、実行した時刻からn分後という意味ではありません。
リストと範囲
リストはカンマ区切りで値を並べる書き方(`1,15`)、範囲はハイフンでつなぐ書き方(`9-17`)です。両者は `1-5,10` のように混ぜて書くこともできます。
日と曜日の同時指定
多くのcron実装では、日フィールドと曜日フィールドの両方を * 以外にすると、**どちらか一方に合致した日**に実行されます(かつ、ではありません)。`0 0 1 * 1` は「毎月1日、および毎週月曜日」という意味になるため、意図しない実行を招きやすい組み合わせです。

よくある質問

crontabは「分 時 日 月 曜日」の5つの数値・記号をスペース区切りで並べた文字列です。このツールでは各フィールドをプルダウンや数値入力で選ぶだけで、その5つのフィールドを自動的に組み立ててくれるので、書式を暗記していなくても正しいcron式を作れます。

曜日フィールドを「値を指定」モードにして1(月曜日)を選べば、「0 0 * * 1」のように毎週月曜日だけに一致するcron式になります。時刻を変えたい場合は分・時フィールドも「値を指定」モードで調整してください。

曜日フィールドを「範囲」モードにして1(月曜日)から5(金曜日)までを指定してください。ただしcronの祝日の概念は持たないため、日本の祝日を除外したい場合はスクリプト側で別途祝日判定を行う必要があります。

はい。標準的な5フィールド形式(Vixie cron互換)のcron式を生成するため、Linuxサーバーのcrontab、GitHub Actionsのschedule、Kubernetes CronJob等、5フィールド形式のcron構文を採用している多くの環境にそのまま使えます。
ツールくん

余談ですが ― なぜcron式は「作る」より「読む」ほうが難しいのか

cron式は5つのフィールドさえ覚えれば書けるように見えますが、実際に手で書こうとすると「*/15と1-30/5はどちらが正しいか」「曜日は0始まりか1始まりか」といった細かい仕様を思い出す必要があり、意外と手間取ります。逆に、既に書かれたcron式を読んで意味を理解する作業(本サイトのCron式パーサーが担う役割)は、フィールドを順に追っていけば比較的機械的にできます。

このツールはその非対称性に着目し、UIの選択操作からcron式を「作る」作業を支援する。ドロップダウンや数値入力で意図(「平日の9時に実行したい」等)を直接表現し、その意図を満たすcron式を自動的に組み立てることで、構文を暗記する負担そのものをなくしている。

生成したcron式が意図通りに動くかどうかを確認する最後のステップとして、次回実行予定の日時を5件プレビューできる機能を備えている。特に日(日付)と曜日を同時に制限した場合はOR条件になるという分かりにくい仕様があるため、実際の候補日時を目で確認できることは、想定と異なる頻度で実行されてしまうトラブルを未然に防ぐのに役立つ。