5フィールドCron式を選択肢から組み立てる仕組み
このツールが出力するのは,左から「分・時・日・月・曜日」を半角スペースで並べた5フィールドのCron式です.初期値は「0 9 * * *」で,分は0分,時は9時,日・月・曜日はアスタリスクによる全値指定になっています.画面には任意のCron文字列を入力する欄はなく,各フィールドのセレクトボックスで用意された値だけを選びます.
選択状態は分,時,日,月,曜日の5つに分けて保持し,「分 時 日 月 曜日」の順で単純に連結します.たとえば分を0,時を22,日と月をアスタリスク,曜日を0,6にすると「0 22 * * 0,6」です.文字列を解析して入力欄へ戻す処理,許可範囲を検査するパーサー,カレンダー上の次回日時を探す処理はありません.
選択肢を限定することで入力しやすくしていますが,出力先の実装に対する構文保証や実行保証を行うものではありません.
生成対象は時刻条件を表す5フィールドだけです.実際のcrontabファイルでは,その後ろに実行するコマンドを書く必要がありますが,本ツールはコマンド,リダイレクト,環境変数,ユーザー名を追加しません.system crontabのユーザー欄や,GitHub ActionsのYAML全体も出力しないため,コピーした文字列は設定先が求める構造の一部分として扱います.
画面の右側には,連結した式と簡易な日本語説明を同時に表示します.フィールドを変更すると両方が更新されるため,記号だけでなく選択した条件も見直せます.ここでの説明は画面に用意した値を読み替える補助であり,対象サーバーやサービスのCronエンジンを実行して検証した結果ではありません.
各フィールドの選択肢と記号の読み方
分フィールドは,毎分を表す「*」,0分から5・10・15・30分刻みの「*/5」「*/10」「*/15」「*/30」,固定値の0・15・30・45から選びます.時フィールドは「*」,0時から2・6・12時間刻みの「*/2」「*/6」「*/12」,固定値の0・9・12・18・22です.分と時のステップは,それぞれのフィールド内の開始値0を起点に読むラベルにしています.
日フィールドは「*」,1,15,31,「*/2」「*/5」です.31は月末という抽象的な指定ではなく31日だけを表します.ステップ値は画面上で「1日から2日刻み」「1日から5日刻み」と表示します.これは日フィールドの範囲内で値を進める指定で,月をまたいで常に48時間ごと,120時間ごとに実行するタイマーではありません.
月フィールドは「*」と1・3・6・9・12,曜日フィールドは「*」「1-5」「0,6」と0・1・3・5です.この画面では曜日の0を日曜日,1を月曜日として表示します.「1-5」は月曜日から金曜日までの範囲,「0,6」は日曜日と土曜日のリストです.曜日番号の対応や許可記号には実装差があるため,適用先でも同じ表記を受け付けるか確認が必要です.
アスタリスク,単一値,カンマ区切り,ハイフン範囲はPOSIX系crontabで見られる基本記法ですが,スラッシュによるステップは広く使われる拡張です.本ツールは選択済みの文字列を連結するだけで,POSIX完全準拠や特定実装への完全準拠を判定しません.
8つのプリセットと生成される式
クイックプリセットは8件です.「毎分」は「* * * * *」,「毎時間」は「0 * * * *」を選択します.前者はすべてのフィールドがアスタリスク,後者は分だけを0に固定した形です.「毎日午前9時」は「0 9 * * *」,「毎日深夜」は「0 0 * * *」となり,日・月・曜日を限定せず時刻だけを指定します.
曜日を使うプリセットは,「毎週日曜深夜」の「0 0 * * 0」,「平日午前9時」の「0 9 * * 1-5」,「週末夜10時」の「0 22 * * 0,6」です.日付を使う「毎月1日深夜」は「0 0 1 * *」です.ボタンを押すと5つのセレクトボックスがプリセットの値へ置き換わるので,適用後に一部だけ変更することもできます.
プリセット名は選択内容を短く表したものです.実際の基準時刻は式だけでは決まらず,実行環境のタイムゾーン設定に従います.また,スケジューラーの負荷,停止,権限,ジョブ側の状態までは扱わないため,「指定時刻に必ず開始する」という保証ではありません.式を貼り付ける前に,右側の5フィールドと適用先の設定を確認してください.
日付と曜日,31日,ステップ値で注意する点
日フィールドと曜日フィールドを両方アスタリスク以外へ限定した場合,一般的なPOSIX系cronでは「日付または曜日」として評価されます.たとえば日を15,曜日を1にすると,「15日かつ月曜日」だけではなく,15日または月曜日に一致する指定として読まれます.ツールの簡易説明も,両方が限定されたときは「日付条件または曜日条件」と表示します.
ただしCron方言やサービス固有の規則は同一ではないため,最終判断は適用先の公式資料で行ってください.
日フィールドの31は「その月の最終日」ではありません.2月,4月,6月,9月,11月には31日がないため,その月では31という条件に一致しません.本ツールは月の日数を計算して別の日へ置き換えず,月末指定のLも出力しません.毎月末の処理が必要な場合は,利用するスケジューラーが提供する記法や,ジョブ側で翌日の日付を判定する方法などを個別に検討する必要があります.
「*/2」も偶数日という意味ではありません.一般的なステップ拡張では,日フィールドの開始値1から2刻み,すなわち1,3,5という順に読むためです.月が変わるとフィールドの評価も新しい月の範囲へ戻るので,前回実行から常に同じ経過時間になるとは限りません.分や時のステップも同様に,分は0〜59,時は0〜23という各フィールド内の候補を表し,独立した経過時間タイマーとは区別します.
簡易説明,タイムゾーン,コピー機能
日本語説明は,月・日・曜日の条件と,時・分の条件を組み合わせて生成します.すべてがアスタリスクなら「毎分」,時がアスタリスクで分が固定値なら「毎時の指定分」,時が固定値で分がアスタリスクなら「その時刻の間は毎分」という形です.ステップ値は分と時では0から,日では1からという起点を含めます.説明文は選択内容の確認用であり,自然言語から式を作る機能や任意式を日本語へ翻訳する機能ではありません.
5フィールド式にはタイムゾーン名やUTCオフセットを埋め込みません.同じ「0 9 * * *」でも,サーバーがUTCで動く場合と日本時間で動く場合では実行される現地時刻が異なります.GitHub ActionsやAWS EventBridge Schedulerのようにスケジュール設定とは別にタイムゾーンを扱うサービスもあるため,式と環境設定を一組として確認してください.
夏時間を採用する地域では,存在しない時刻や重複する時刻の扱いも実装側の仕様に依存します.
「Cron式をコピー」を押すと,表示中の5フィールド文字列をClipboard APIへ渡します.APIが成功した場合だけチェックアイコンと「コピー完了」を約2秒表示します.権限やブラウザの制約で失敗した場合は,手動で式を選択してコピーする案内を表示します.コピー時に空白を整形したり,コマンド部分を追加したり,設定ファイルをダウンロードしたりはしません.
8つのプリセットを選び直した場合も,コピー対象はその時点で画面に表示されている式です.コピー履歴,自動保存,設定名の付与,複数式の一覧管理はありません.別の候補を残したい場合は,式をコピーして手元の設定ファイルやメモへ保存してから次の条件へ変更してください.
GitHub Actions・AWS等との形式差と非対応範囲
GitHub Actionsのscheduleは5フィールド形式を使いますが,実行間隔は最短5分で,スケジュールはデフォルトブランチの最新コミットを対象とします.既定のタイムゾーンはUTCで,現在の公式構文ではIANAタイムゾーン名を別項目で指定する形式もあります.
指定時刻ぴったりの実行は保証されず,高負荷時には遅延する可能性があります.このツールはGitHub Actions用YAMLやtimezone項目を生成せず,5フィールド部分だけを作ります.
AWS EventBridge Schedulerは「分・時・日・月・曜日・年」の6フィールドで,日と曜日には疑問符などの固有記号を使います.タイムゾーンもスケジュール式とは別の設定です.そのため,本ツールの「0 9 * * *」をAWS用の式としてそのまま貼り付けることはできません.Quartzの秒・年フィールド,L・W・#・?,サービス別の変換も非対応です.
このほか,任意文字列の入力,構文解析,値域検証,存在しない日付の検出,次回・過去の実行日時一覧,ジョブの登録や実行,実行履歴,通知,サマータイムのシミュレーションは行いません.出力をcrontab,CI,クラウドサービスへ反映するときは,コマンド部分,権限,環境変数,タイムゾーン,最短間隔,日と曜日の扱いを,その環境の公式ドキュメントとテスト環境で確認してください.