Skip to content

Crontab ジェネレーター & cron 式ビルダー

ブラウザ上で cron 式を生成・検証・デコードできます。ローカルタイムまたは UTC での次回実行プレビュー、POSIX 5 フィールド構文、プリセット、自然言語による説明に対応。無料・プライベート・登録不要。

トラッキングなし ブラウザで動作 無料
パースと次回実行計算はすべてブラウザ内で行われます。サーバーへのデータ送信はありません。

フィールド
プリセット

自然言語による説明

次回 5 回の実行予定

次回実行プレビューのタイムゾーン
    POSIX 5 フィールド準拠、OR セマンティクスの正しさ、ステップ演算子のアンカリング、名前付きトークンの展開、Quartz 演算子拒否時の親切なエラーについてレビュー済み — Go Tools エンジニアリングチーム · May 20, 2026

    cron 式とは?

    cron 式とは、繰り返しスケジュールを定義する 5 フィールドの文字列です。左から順に分(0-59)、時(0-23)、日(1-31)、月(1-12)、曜日(0-6、0 と 7 はどちらも日曜日)が並びます。各フィールドは単一の値、リスト(`1,3,5`)、範囲(`1-5`)、ワイルドカード(`*` = 任意の値)、ステップ(`*/15` = 15 ごと)を受け付けます。5 つのフィールドの組み合わせで、スケジュール対象のコマンドが実行される時刻が厳密に決まります — 例えば `0 9 * * 1-5` は「分 0、時 9、任意の日、任意の月、曜日は月曜から金曜」と読めて、自然言語にすると「平日 9:00」となります。

    cron は 1979 年の Unix Version 7 で生まれ、5 フィールド文法は 40 年以上ほぼ変わっていません — 元の構文がいかによく設計されていたかの証左です。今日では cron 式は Unix の crontab ファイルにとどまらず、Kubernetes CronJobs、GitHub Actions ワークフロー、AWS EventBridge ルール、GitLab CI のスケジュールパイプライン、Cloudflare Workers Cron Triggers、各クラウドのサーバーレスプラットフォームのすべてが同じ 5 フィールド文法を受け付けます。cron を一度学べば、現代のあらゆるインフラ環境でジョブをスケジュールできるということです。

    POSIX 標準は 5 つの演算子を定義しています: `*`(任意の値)、`,`(値のリスト)、`-`(範囲)、`/`(ステップ)、そして月名(JAN-DEC)と曜日名(SUN-SAT)の名前付きトークン。多くの実装ではさらに 5 つの一般的なショートカットを展開します: `@yearly`(`0 0 1 1 *`)、`@monthly`(`0 0 1 * *`)、`@weekly`(`0 0 * * 0`)、`@daily`(`0 0 * * *`)、`@hourly`(`0 * * * *`)。Quartz スケジューラ(Java ライブラリ)はこれに任意の秒フィールドと追加演算子(`?`、`L`、`W`、`#`)を加えています — Java/Spring 環境では便利ですが、標準 cron への移植性はありません。本ツールが POSIX 5 フィールド標準に従うのは、それが主流の方式であり、あなたの Linux サーバー、GitHub Actions ランナー、Kubernetes クラスタが実際に理解する文法だからです。

    POSIX cron の特殊な挙動として注意すべきものが 1 つあります: 日と曜日の両方が制限されている場合(いずれも `*` でない場合)、どちらか一方にマッチすればスケジュールが実行されます — AND ではなく OR セマンティクスです。つまり `0 0 1 * 5` は毎月 1 日と毎週金曜日の両方で実行され、1 日に当たる金曜日だけではありません。これは cron で最も多いハマりどころで、本ツールの次回実行プレビューが実際に発火する日時を表示することで一目瞭然になります。デプロイ前に確認しましょう。

    パースと次回実行計算はすべて JavaScript によってブラウザ内で完結します — 式、スケジュール、その他のデータが一切サーバーへ送信されることはありません。本ツールはあらゆる標準 POSIX cron 式を即座にパースし、自然言語の説明と 5 回分の実行プレビューを完全プライベートで提供します。

    cron 式は他の開発者向けツールと密接に関連しています。cron ジョブのデバッグでは想定実行時刻と Unix タイムスタンプを照合することが多く、複雑なスケジュールは JSON 設定として文書化されることが多く、その検証にはJSON フォーマッターが役立ちます。OR セマンティクス、タイムゾーンの落とし穴、Linux/Kubernetes/GitHub Actions での例を含む cron バリアントの詳細ガイドは、当サイトの cron スケジュールリファレンスをご覧ください。

    # Linux crontab entry — runs every 15 minutes
    */15 * * * *  /usr/local/bin/poll-api.sh
    
    # Kubernetes CronJob — weekdays at 9:00 AM UTC
    apiVersion: batch/v1
    kind: CronJob
    metadata:
      name: daily-report
    spec:
      schedule: "0 9 * * 1-5"
      timeZone: "UTC"
      jobTemplate:
        spec:
          template:
            spec:
              containers:
                - name: report
                  image: report-runner:1.0
              restartPolicy: OnFailure
    
    # GitHub Actions workflow — hourly
    on:
      schedule:
        - cron: '0 * * * *'
    
    # AWS EventBridge — first of each month
    ScheduleExpression: cron(0 0 1 * ? *)
    # (Note: AWS uses the Quartz 6-field form with '?' for day-of-week)

    主な特長

    ライブ POSIX 5 フィールドパーサー

    POSIX cron に準拠した厳格なパーサー: 分(0-59)、時(0-23)、日(1-31)、月(1-12 または JAN-DEC)、曜日(0-6 または SUN-SAT、7 も日曜日として受け付け)。標準演算子(`*` `,` `-` `/`)とマクロ(`@yearly` `@monthly` `@weekly` `@daily` `@hourly`)にすべて対応します。

    次回 5 回の実行プレビュー

    現在のローカル時刻を基準に次回 5 回の実行時刻を計算します。Local と UTC をワンクリックで切り替え可能 — 別リージョンのサーバーに crontab をデプロイする前にタイムゾーンの罠を見抜く、最も確実な方法です。

    自然言語による説明

    有効な式にはすべて人間に読みやすい説明が付きます: 「15 分ごと」「平日 9:00」「1 月と 7 月の毎月 1 日 02:30」など。コードレビューやチーム引き継ぎが楽になります — `*/5 9-17 * * 1-5` の意味を推測する必要はもうありません。

    フィールド単位のエラーメッセージ

    無効な式には即座に赤いフィードバックが表示され、問題のあるフィールドが強調されて具体的なエラーが出ます: 「Error in minute: value out of range [0, 59]: "60"」。3 日後にレポートが動いていなかったと気付くような、サイレントな crontab 失敗はもう起こりません。

    よく使うスケジュール用のプリセットチップ

    実用的な 11 種のワンクリックプリセットを用意しました: 毎分、5/15 分ごと、1 時間ごと、毎日 0:00 と 9:00、平日 9:00、毎週日曜/月曜、毎月 1 日、毎年。タップ、微調整、リリースの 3 ステップです。

    フィールドごとのビルダー入力

    5 フィールドの順序を覚える必要はありません — Minute、Hour、Day of month、Month、Day of week とラベルのついた 5 つの小さな入力欄で、1 か所ずつ編集でき値の欠落や順序ミスを防げます。上部の完全な式は自動的に再構築されます。

    POSIX OR セマンティクスを正しく処理

    日と曜日の両方が制限された場合、OR ルールが適用されます — `0 0 1 * 5` は毎月 1 日と毎週金曜日の両方で実行されます。次回実行プレビューがデプロイ前にこれを可視化し、週末の予期せぬページ通知を防ぎます。

    100% ブラウザ完結のプライバシー

    cron 式はインフラのタイミングや社内スケジューリングパターンを露出することが多いものですが、ブラウザの外に出ることはありません。サーバーへのデータ送信もロギングも分析もありません。ブラウザの Network タブで確認可能です。本番スケジュールや社内システムでも安全です。

    Quartz 対応のエラーメッセージ

    `?` `L` `W` `#` を含む Quartz 式を貼り付けた場合、パーサーは「Quartz operators not supported — use POSIX syntax」と説明します。サイレントな失敗をデバッグする代わりに、cron 向けに書き直すべきだと一目で分かります。Quartz スケジュールは Linux cron では動作しません。

    cron バリアントとスケジューラ

    Vixie cron(Linux デフォルト)

    5 フィールド POSIX

    ほとんどの Linux ディストリビューションのデフォルト。厳格な POSIX に明示的タイムゾーン用の `CRON_TZ=` 拡張を加えたもの。日 / 曜日の OR セマンティクスが適用されます。本ツールの主要ターゲットです。

    BSD cron

    5 フィールド POSIX

    macOS や BSD 系のデフォルト。POSIX 互換で、vixie cron との実装差はわずか。ほとんどの式は同じように動作します。

    systemd timer(OnCalendar)

    カレンダー仕様、cron ではない

    systemd ベースの Linux における cron の代替。`OnCalendar: 2026-*-* 09:00:00` 構文を使います — 非繰り返しスケジュールでは読みやすいですが、cron 式との相互運用性はありません。

    Quartz Scheduler(Java/Spring)

    6 または 7 フィールド

    秒フィールド(必須)と年フィールド(任意)を追加し、演算子 `?`、`L`、`W`、`#` を備えています。Java アプリには便利ですが、Linux cron には移植できません。

    AWS EventBridge

    `?` を使う 6 フィールド Quartz 形式

    片方だけが制限されている場合、`*` ではなく `?`(Quartz 規約)を日または曜日に使う必要があります。式は Linux cron にそのまま移植できません。

    Kubernetes CronJob

    5 フィールド POSIX + timeZone フィールド

    POSIX 5 フィールドのスケジュールに `spec.timeZone` フィールド(1.27 以降)を追加。kubelet のホストタイムゾーンに依存するよりずっとクリーン。式は Linux cron からそのまま移植可能。

    GitHub Actions

    5 フィールド POSIX

    常に UTC で実行されます。タイミングはベストエフォート — 高負荷時にはスキップされる可能性があります。15 分未満の間隔は避けましょう。式は Linux cron からそのまま移植可能。

    cron 式の例

    15 分ごと

    */15 * * * *

    ステップ演算子: 分フィールドの `*/15` は「分 0 から始めて 15 分ごと」を意味し、毎日毎時の :00、:15、:30、:45 に実行されます。API のポーリング、キャッシュ更新、ハートビートチェックで最も一般的な間隔です。

    平日の 9:00

    0 9 * * 1-5

    曜日フィールドの範囲 `1-5` は月曜から金曜を意味します(1=月、5=金)。きっかり 09:00 に実行されます — 業務時間レポート、夜間データに依存するバッチジョブ、デイリースタンドアップの通知などに便利です。

    毎月 1 日の真夜中

    0 0 1 * *

    日フィールドが `1`、下位フィールドはすべて 0。月次請求、ログローテーション、月末締めなどで一般的です。日と曜日が両方制限されるのは「どちらも `*` でない」ときだけ — ここでは曜日が `*` なので日フィールドのみが効きます。

    平日の 9:00〜17:00 の間、5 分ごと

    */5 9-17 * * 1-5

    別々のフィールドでステップ(`*/5`)と範囲(`9-17`)を組み合わせた例です。業務時間限定のモニタリングやキュー処理に有用。合計: 12 回/時 × 9 時間 × 5 日 = 1 週間あたり 540 回。

    四半期実行: 1/4/7/10 月の 1 日 0:00

    0 0 1 JAN,APR,JUL,OCT *

    カンマ区切りで月名を列挙しています。決算、コードフリーズレビュー、コンプライアンス監査などの四半期スケジュールに。名前と数字の混在(`1,APR,7,10`)も同じ意味でパースされますが、可読性のためにどちらか片方に統一しましょう。

    POSIX の OR 罠: 毎月 1 日 OR 毎週金曜日

    0 0 1 * 5

    日(`1`)と曜日(`5`)の両方が制限されている場合、POSIX cron はどちらか一方にマッチすれば実行します。したがってこの式は毎月 1 日と毎週金曜日の両方で発火 — 1 日が金曜日のときだけではありません。これは cron で最も頻発するハマりどころで、次回実行プレビューが一目で気付かせてくれます。

    毎日 02:30(低トラフィック帯)

    30 2 * * *

    時と分は具体値、他はワイルドカードという形です。02:00〜04:00 UTC の枠は、主要な業務リージョンの稼働時間と重ならないため、夜間バッチの事実上の定番です。UTC タイムゾーン切り替えと組み合わせ、想定通りの時刻に発火するかを確認しましょう。

    マクロ相当: @daily

    @daily

    `@daily` ショートカット(`@midnight` も同義)は `0 0 * * *` に展開され、毎日真夜中に実行されます。その他のマクロ: `@yearly` = `0 0 1 1 *`、`@monthly` = `0 0 1 * *`、`@weekly` = `0 0 * * 0`、`@hourly` = `0 * * * *`。マクロは簡潔ですが、5 フィールド形式の方がスケジューラ間の互換性が高くなります(マクロをサポートしないスケジューラもあるため)。

    cron 式の組み立て方

    1. 1

      cron 式を入力または貼り付け

      上部の入力欄に 5 フィールドの cron 式を入力します(例: `*/15 * * * *`)。入力に応じてツールがパースと検証を行います — 有効なら緑のチェック、無効ならフィールド名付きの赤いエラーが表示されます。`@daily` や `@hourly` などのマクロも受け付けます。

    2. 2

      または 5 つのフィールド入力を調整

      フィールドの順序を覚える必要はありません — ラベル付きの入力欄で Minute、Hour、Day-of-month、Month、Day-of-week を個別に編集できます。上部の完全な式は自動的に更新されます。ワイルドカードには `*`、ステップには `*/N`、範囲には `a-b`、リストには `1,3,5` を使いましょう。

    3. 3

      プリセットで一気に土台作成

      任意のプリセットチップ(15 分ごと、平日 9:00 など)をタップして一般的なスケジュールを読み込み、フィールドを微調整して要件に合わせます。本番で実際に使うパターンを 11 種類のプリセットがカバーします。

    4. 4

      次回実行プレビューで確認

      今後 5 回の実行日時を確認しましょう — Local と UTC を切り替えてスケジュールが意図通りに発火するか確かめます。これが POSIX の日 / 曜日 OR の罠を本番で噛まれる前に見抜く、最も確実な方法です。

    5. 5

      コピーしてスケジューラに貼り付け

      Copy をクリックして式を取得します。crontab、systemd timer、GitHub Actions の `cron:`、AWS EventBridge、Kubernetes CronJob の `schedule`、その他 cron 互換スケジューラに貼り付けましょう。対象スケジューラのタイムゾーン確認も忘れずに — 詳しくは下の Best Practices セクションを参照してください。

    cron でよくあるミス

    POSIX OR の罠: 両方の日フィールドを制限

    日と曜日の両方が制限されている場合、POSIX cron はどちらか一方にマッチすればジョブを実行します — 両方ではありません。したがって `0 0 1 * 5` は毎月 1 日と毎週金曜日の両方で発火し、1 日に当たる金曜日だけではありません。単一条件にしたい場合は、2 つの日フィールドのどちらかに `*` を使うか、AND チェックを行うラッパースクリプトを書きましょう。

    ✗ 誤り
    # 意図: 「毎月の第 1 金曜日」
    0 0 1-7 * 5
    # 実際: 毎月 1〜7 日 OR 毎週金曜日に発火 — 両方の条件
    ✓ 正しい
    # 本物の AND セマンティクスはラッパーで
    0 0 * * 5  [ $(date +\%d) -le 7 ] && /your-script
    # あるいは片方の条件を捨てて緩いスケジュールを許容する

    開発環境と本番環境のタイムゾーンずれ

    Linux サーバーの cron スケジュールは、書き手のローカルタイムゾーンではなくシステムタイムゾーンを使います。UTC 設定のサーバー上で 9:00 の cron は、US East では 4:00 に発火します。スケジュールは常に対象サーバーのタイムゾーン — できれば UTC — で設計し、crontab の先頭で `CRON_TZ=...` を使ってタイムゾーンを明示的に固定しましょう。

    ✗ 誤り
    # US East の開発者が書いて UTC サーバーにデプロイ
    0 9 * * *  /your-report.sh
    # UTC 9:00 = US East 4:00 に発火 — 開発者の意図とは違う
    ✓ 正しい
    # タイムゾーンを固定するか、UTC で明示的に記述
    CRON_TZ=America/New_York
    0 9 * * *  /your-report.sh

    ステップ演算子の混同: '*/15' と '15'

    分の `*/15` は「0 から始めて 15 分ごと」(つまり 0、15、30、45)を意味します。単なる `15` は「分 15 のみ」 — 毎時 1 回の実行です。初学者は「15 分ごと」のつもりで `15` と書いてしまいがちですが、本ツールの自然言語の説明を見ればデプロイ前にミスが明らかになります。

    ✗ 誤り
    # 意図: 15 分ごと
    15 * * * *
    # 実際: 毎時 1 回、分 15 のみ(意図より 4 回/時 少ない)
    ✓ 正しい
    # 正解
    */15 * * * *
    # 15 分ごと: 毎時の分 0、15、30、45

    POSIX スケジューラ上での 6 フィールド式

    Quartz/Spring/node-cron は先頭位置に任意の秒フィールドをサポートします。Linux crontab、GitHub Actions、AWS EventBridge(ほぼ)、Kubernetes CronJob はサポートしていません — 5 フィールドを期待します。6 フィールド式を貼り付けるとスケジュールがサイレントに壊れます: 秒が分、分が時、というように解釈されます。

    ✗ 誤り
    # Linux crontab にコピーされた Quartz の 6 フィールド
    0 0 9 * * 1-5
    # Linux の解釈: 分=0、時=0、日=9、月=*、曜日=1-5
    # = 平日にマッチする月の 9 日 0:00 — カオス
    ✓ 正しい
    # POSIX 5 フィールド、秒を落とす
    0 9 * * 1-5
    # = 平日 9:00

    月に対して範囲外の日

    cron は日を実際の月に対して検証しません。`0 0 31 2 *`(2 月 31 日)はパースが通りますが、2 月は最大 29 日までしかないため決してマッチしません。初学者はパーサーがこれを検出してくれると考えますが、しません。本ツールの次回実行プレビューは、式が構文的には有効でも論理的に不可能な場合に「今後 4 年間に実行予定はありません」と表示します。

    ✗ 誤り
    # 2 月 30 日や 31 日 — 永遠に動かない
    0 0 30 2 *
    0 0 31 2 *
    # パースは通るがスケジュールは発火しない
    ✓ 正しい
    # 「2 月の最後の平日」パターンはスクリプトで
    0 0 28-29 2 *  [ $(date -d tomorrow +\%m) = 03 ] && /your-script

    Quartz 構文を POSIX と混同

    AWS のドキュメント、Spring のチュートリアル、Stack Overflow の多くの回答は `?`、`L`、`W`、`#` を含む Quartz の cron 式を載せています。これらは Linux crontab では動きません。曜日スロットに `?` を含む 6 フィールド式をコピーすると、Linux のパーサーはそれを拒否します(あるいはもっと悪いことに、サイレントに誤解釈します)。本ツールは Quartz 演算子を検出して違いを説明します。

    ✗ 誤り
    # Quartz: 「月の最後の金曜日」 — POSIX では無効
    0 0 ? * 6L *
    ✓ 正しい
    # POSIX で「最後の金曜日」はラッパースクリプト方式
    0 0 25-31 * 5  /your-script
    # 任意の月の 25〜31 日の金曜日に実行

    代表的なユースケース

    Linux crontab ジョブ
    `/etc/crontab`、`/etc/cron.d/*`、ユーザー個別の `crontab -e` ファイル用エントリを構築・検証できます。保存前に次回実行プレビューで、サーバー設定のタイムゾーンにおける正しい時刻にスケジュールが収まることを確認しましょう。
    Kubernetes CronJob のスケジュール
    Kubernetes CronJob の `spec.schedule` フィールドを生成します。Kubernetes 1.27 以降は `spec.timeZone` もサポート — UTC 切り替えで UTC ベースにスケジュールを設計し、`timeZone` を明示的に設定してワーカーノードのローカル時間に左右されないようにしましょう。
    GitHub Actions のスケジュールワークフロー
    `on.schedule` 配下の `cron:` エントリを構築します。GitHub Actions は常に UTC で動作 — プレビューを UTC に切り替えてスケジュールを確認しましょう。15 分未満の間隔は避けてください。GitHub のスケジューラは負荷時に短間隔ジョブをスキップします。
    AWS EventBridge のルール
    EventBridge のスケジュールルール向けに cron 式を構成します。注意点: AWS は曜日に `?` を使う Quartz スタイルの 6 フィールド構文を採用 — 本ツールが出力する POSIX 5 フィールドに対し、先頭に秒(`0`)を付け、2 つの日フィールドのいずれかの `*` を `?` に置き換えて変換する必要があります。
    GitLab CI のスケジュールパイプライン
    GitLab のスケジュール CI パイプライン用の cron 式を検証できます。GitLab は本ツールが出力するのと同じ POSIX 5 フィールド構文と UI 日付ピッカーを使いますが、cron 形式の方が非標準な間隔を細かく制御できます。
    Cloudflare Workers の Cron Triggers
    `wrangler.toml` 内の `[triggers.crons]` エントリを構築します。Cloudflare は POSIX 5 フィールド構文を採用。最小間隔は 1 分、ワーカーは UTC で実行されます。プレビューで想定時間内にトリガーが発火することを確認しましょう。
    Node.js node-cron のスケジュール
    `node-cron` ライブラリ向けに式を構築します。5 フィールド POSIX と先頭の任意秒フィールドの両方に対応しています。1 分未満の精度が特に必要でなければ 5 フィールドにとどめましょう — 6 フィールド式は Linux crontab に移植できません。
    コードレビューとドキュメント
    PR や Runbook の cron 式を貼り付けるだけで意味が即座に分かります — `30 7 * * 1-5` の解釈に頭を悩ませたり、リファレンスカードを取り出したりする必要はもうありません。自然言語による説明はインラインコメントや README にも最適です。

    cron 構文リファレンス

    フィールド順: M H D M W
    分(0-59)、時(0-23)、日(1-31)、月(1-12)、曜日(0-6、7 も日曜日)。語呂合わせ: 「My Hat Doesn't Match Wendy's」。曜日フィールドは数値(0-6)と名前(SUN-SAT、大文字小文字を区別しない)の両方を受け付けます。
    演算子
    `*` = 任意の値、`,` = リスト区切り(`1,3,5`)、`-` = 範囲(`1-5`)、`/` = ステップ(`*/15`、`5/10`)、名前: 月の JAN-DEC、曜日の SUN-SAT(大文字小文字を区別しない)。
    マクロ(エイリアス)
    `@yearly` = `0 0 1 1 *`、`@annually` = `0 0 1 1 *`、`@monthly` = `0 0 1 * *`、`@weekly` = `0 0 * * 0`、`@daily` = `0 0 * * *`、`@midnight` = `0 0 * * *`、`@hourly` = `0 * * * *`。`@reboot` は特殊な非スケジュール(起動時のみ実行)であり、本ツールでは説明付きのエラーで拒否されます。
    POSIX 日のセマンティクス(OR ルール)
    日と曜日の両方が制限されている場合(いずれも `*` でない場合)、どちらか一方にマッチすればスケジュールが実行されます — OR セマンティクスです。片方だけが制限されている場合は、そのフィールドが決定権を持ちます。両方とも `*` の場合はすべての日にマッチします。この OR ルールは vixie cron、BSD cron、大半の POSIX 実装に適用されます。Quartz は AND と OR を区別するために `?` を使います。
    6 フィールドモード(Quartz-Lite)
    入力に 6 つの空白区切りトークンがある場合、ツールは最初を秒フィールド(0-59)として扱います。Quartz、Spring `@Scheduled(cron=...)`、node-cron で便利です。Linux crontab や POSIX スケジューラには移植できません — それらは秒を分として扱い、すべてを 1 つずつズラして解釈します。
    ステップ演算子のアンカリング
    `*/N` はフィールドの最小値にアンカリングされます: 分の `*/15` は `0,15,30,45` であり、「今から 15 ごと」ではありません。非ワイルドカードのベースを使う場合: 分の `5/15` は `5,20,35,50`。フィールド範囲を割り切れないステップ値は折り返し付近でスキップしますが、これはバグではなく正しい挙動です。
    バリデーション境界
    分 ∈ [0,59]、時 ∈ [0,23]、日 ∈ [1,31]、月 ∈ [1,12]、曜日 ∈ [0,7]。範囲外の値はフィールド単位のエラーになります。日は月との整合性は検証されません(`0 0 31 2 *` はパースが通るものの、2 月には 31 日がないため決して発火しません — 次回実行プレビューは「今後 4 年間に実行予定はありません」と表示します)。
    Quartz 演算子は拒否
    POSIX cron は Quartz の `?`(特定値なし)、`L`(last)、`W`(最も近い平日)、`#`(n 番目の曜日)をサポートしていません。本ツールは無効な POSIX としてサイレントにパースするのではなく、「Quartz operators not supported」と明確にメッセージで拒否します。Quartz スケジュールには Quartz 対応ツールか Spring スケジューラを使ってください。
    次回実行検索の年上限
    次回実行の計算は最大 4 年先まで検索します。それより低頻度(例: 「2 月 29 日」パターン)の式は「今後 4 年間に実行予定はありません」と表示されます。不可能なパターンでの無限ループを避けるため意図的な仕様です。

    cron スケジュールのベストプラクティス

    サーバーは UTC で運用し、表示時にローカルへ変換
    サーバーを UTC に設定し(`/etc/timezone` または `TZ=UTC`)、cron 式もすべて UTC で記述しましょう。ダッシュボードやレポートで表示するときだけローカル時間に変換します。これにより、夏時間切り替え時にローカル時間のスケジュールが二重発火・スキップするような、典型的なタイムゾーンバグを一掃できます。本ツールの UTC 切り替えを使い、最初から UTC でスケジュールを設計しましょう。
    POSIX の日 / 曜日 OR の罠を避ける
    OR セマンティクスを望まない限り、日と曜日の両方を制限しないでください。「1 月の毎週月曜日」が欲しいなら `0 0 * 1 1`(日は `*`)と書き、「毎月 1 日」が欲しいなら `0 0 1 * *`(曜日は `*`)と書きます。POSIX の OR ルールでは `0 0 1 * 1` は毎月 1 日と毎週月曜日の両方で実行されるため、ほぼ確実に意図と異なります。デプロイ前に次回実行プレビューを確認すればこの誤りを検出できます。
    スケジュールのタイムゾーンを明示的に固定
    モダンなスケジューラはスケジュール定義内でタイムゾーンを固定できます: crontab 先頭の `CRON_TZ=America/New_York`(vixie cron 3.0 以降)、Kubernetes CronJobs 1.27 以降の `spec.timeZone: "America/New_York"`、AWS EventBridge Scheduler の `ScheduleExpressionTimezone` を含むスケジュール式など。サーバーのデフォルトに頼らずタイムゾーンを明示的に固定しましょう — サーバーのタイムゾーンはインフラ移行時に予告なく変わることがあります。
    負荷を :00 ではなく複数の分に分散
    重要度の低いジョブで `0 * * * *`(毎時 0 分)を多用するのは避けましょう — 規模が大きくなると、ちょうど :00 にスケジュールされた多数のジョブで負荷スパイクが発生します。各ジョブにランダムな分オフセット(`23 * * * *`、`41 * * * *`)を割り当てて負荷を分散します。日次ジョブも同様で、多くのジョブが 3:00 に集中する場合、`0 3 * * *` よりも `30 3 * * *` の方がデータベースに優しい設計です。
    ジョブを冪等にする
    cron にはリトライも重複防止も取りこぼしリカバリもありません。ジョブは何度実行しても安全(冪等)で、自己チェック可能であるべきです。「9 時にレポート送信」ではなく「今日のレポートが未送信なら送信する」と設計しましょう — ダウンタイム、誤った二重スケジュール、並行実行のいずれからも自己回復します。冪等性はスケジューラではなくジョブの性質であり、最も重要な信頼性プラクティスです。
    重要なスケジュールにはハートビートを追加
    cron のサイレント失敗は最大の弱点です — スケジュールが発火しなくても誰も気付きません。重要なジョブには、実行終了時にハートビートサービス(Healthchecks.io、Cronitor、Dead Man's Snitch など)へ ping させ、想定の ping が届かないときにアラートしてもらいましょう。これでジョブの失敗もスケジュール自体の不発も検出できます。無料枠で個人や小規模チームの大半のニーズをカバーできます。
    リリース前に次回実行プレビューで検証
    新しい cron スケジュールをデプロイする前に、本ツールのプレビューで今後 5 回の実行日時を確認しましょう。Local と UTC を切り替えます。意図通りの時刻に発火するか — 5 分早すぎないか、間違った日でないか、大事にしていた週末をスキップしていないかを確認します。プレビューは最も安価な本番テストです。

    よくある質問

    このツールは何ができますか?
    ブラウザ上で cron 式をパース、検証、説明し、ローカルタイムまたは UTC で次回 5 回分の実行プレビューを表示します。任意の標準 POSIX 5 フィールド cron 式を入力するか、プリセットチップとフィールドごとの入力で構文を覚えずに式を構築できます。自然言語の説明(「15 分ごと」「平日 9:00」など)と、実際にジョブが発火する日時を出力します。誤った式はフィールド単位のエラーメッセージで即座に検出されるため、壊れたスケジュールをデプロイする前に気付けます。すべて 100% クライアントサイドで動作し、何もアップロード・記録・保存されません — 本番 crontab や時刻パターンが機密の社内スケジュールでも安全に使えます。
    cron 式とは何ですか?
    cron 式とは、繰り返しスケジュールを定義する 5 フィールドの文字列です。フィールドは分(0-59)、時(0-23)、日(1-31)、月(1-12)、曜日(0-6、0 と 7 はどちらも日曜日)です。各フィールドは単一の値、リスト(`1,3,5`)、範囲(`1-5`)、ワイルドカード(`*` = 任意)、ステップ(`*/15` = 15 ごと)を受け付けます。5 つのフィールドの組み合わせで、スケジュール対象のコマンドがいつ実行されるかが厳密に決まります。cron は Unix V7(1979 年)に登場して以来、Linux/Unix の時間ベースのジョブスケジューリング、コンテナオーケストレーション(Kubernetes CronJobs)、CI/CD(GitHub Actions、GitLab CI)、サーバーレスプラットフォーム(AWS EventBridge、Cloudflare Workers Cron Triggers)の事実上の言語であり続けています。数十年にわたり多くの代替案が提案されてきましたが、cron の簡潔で表現力豊かな 5 フィールド文法を置き換えるには至っていません。
    入力データはどこかにアップロードされますか?
    いいえ。パース、検証、次回実行計算はすべて JavaScript によりブラウザ内で 100% 完結します。入力した式は送信も、サーバー保存も、ロギングも、分析もされません。そのため、本番 crontab、インフラのタイミングが見える社内スケジューリングパターン、その他機微なスケジュールでも安全に利用できます。ブラウザの Network タブで確認できます — cron 式を入力してもネットワークリクエストは一切発生しません。入力データを扱う Cookie は使っておらず、入力内容をキャプチャするサードパーティ分析もありません。
    POSIX cron と Quartz の違いは?
    POSIX cron は Unix/Linux crontab、systemd timer、GitHub Actions、GitLab CI、AWS EventBridge、Kubernetes CronJobs、その他大半のスケジューラで使われる 5 フィールド標準です。Quartz は Java のスケジューリングライブラリで、秒フィールドを追加した 6 または 7 フィールド構成と、追加演算子 `?`(特定値を持たない、日と曜日が衝突する際に使用)、`L`(last — 月末、月の最後の金曜日など)、`W`(最も近い平日)、`#`(月の n 番目の曜日、例: `2#1` = 第 1 火曜日)を備えています。本ツールは利用範囲がはるかに広い POSIX cron を実装しており、Quartz 演算子は明確な「Quartz operators not supported」メッセージとともに構文エラーとして報告します。Quartz が必要な場合は、Quartz Scheduler や Spring の `@Scheduled` といった Java スケジューラがターゲットですが、スケジュール定義は Linux cron にそのまま移植できません。
    なぜ '0 0 1 * 5' は毎週金曜日 AND 毎月 1 日に実行されるのですか?
    これは POSIX cron における日 / 曜日の OR セマンティクスで、cron で最も多いハマりどころです。ルール: 両方のフィールドが制限されている場合(いずれも `*` でない場合)、cron はどちらか一方にマッチすればジョブを実行します — 両方が満たされる必要はありません。したがって `0 0 1 * 5`(日=1、曜日=5)は毎月 1 日と毎週金曜日の両方で発火し、1 日に当たる金曜日だけではありません。後者(AND セマンティクス — 1 日と金曜日が一致する日)が必要な場合、標準 cron では表現できません — 毎週金曜日または毎月 1 日に実行されるスクリプトを用意し、実際の日付に応じて早期 exit する必要があります。Vixie cron(GNU/Linux のデフォルト)、BSD cron、AWS EventBridge いずれもこの OR ルールに従います。本ツールの次回実行プレビューを見れば、実際のスケジュールが一目瞭然です — 怪しい式は貼り付けてデプロイ前に検証しましょう。
    30 秒ごとにジョブを実行するには?
    標準 POSIX cron では実現できません。cron の最小粒度は 1 分で、最小フィールドが分(0-59)です。1 分未満のスケジュールの選択肢: (1) `* * * * *` で 2 つのジョブを動かし、片方には `sleep 30 &&` を前置する — 粗いやり方ですが vixie cron で動作します。(2) 秒対応スケジューラを使う — Quartz、カスタムコントローラ付き Kubernetes CronJob、systemd timer の `OnCalendar: *-*-* *:*:00/30` など。(3) ループ内で 30 秒スリープする常駐デーモンを動かす — 多くのモニタリング用途ではこれが正解です。(4) 本当にリアルタイム応答が必要なら、イベント駆動トリガー(Webhook、メッセージキュー)に切り替えましょう。30 秒 cron パターンは、ほぼ常に cron が抽象化の選択として間違っているサインです。
    cron はどのタイムゾーンを使いますか?
    Linux サーバーでは vixie cron はシステムタイムゾーンを使います — 通常は `/etc/timezone` や `TZ` 環境変数で設定されています。これは頻発するバグ源です: US East のサーバーで設定した 9:00 cron は UTC 14:00 に発火しますが、UTC 設定のサーバーでは UTC 9:00(つまり East 時間で午前 4:00)に発火します。対策はいずれか: サーバーを常に UTC に揃えて cron 式もすべて UTC で書く、または crontab の先頭で `CRON_TZ=America/New_York` 変数を設定してタイムゾーンを明示的に固定する(vixie cron 3.0 以降でサポート)。マネージドスケジューラごとに挙動は異なります: GitHub Actions は常に UTC、AWS EventBridge はスケジュール定義内でタイムゾーン指定可能、Kubernetes CronJob は 1.27 以降で `spec.timeZone` を追加しました。本ツールの UTC/Local 切り替えで両方のタイムゾーンでスケジュールをプレビューでき、想定通りの時刻に発火するか確認できます。
    '*/15' は実際どのように展開されますか?
    ステップ演算子 `*/N` は「フィールドの最小有効値から N ごと」を意味します。分(範囲 0-59)の場合、`*/15` は `0,15,30,45` に展開され、毎時 4 回(15 分単位)の実行となります。ステップは「現在時刻から 15 分ごと」ではなく、フィールドの開始値を起点にアンカリングされます。他のフィールドも同様: 時の `*/2` は `0,2,4,...,22`(12 回)、日の `*/3` は `1,4,7,...,31`(11 回)。非ワイルドカードのベースの場合(例: `5/15`)、ベースから展開され、分の `5/15` は `5,20,35,50` です。範囲を割り切れないステップ値は折り返し付近でスキップしますが、これはバグではなく正しい cron 挙動です。次回実行プレビューを見れば実際のスケジュールが明らかになります。
    秒フィールド付きの 6 フィールド式は使えますか?
    先頭に秒フィールド(範囲 0-59)を持つ 6 フィールド式は Quartz/Spring/Cron4j 拡張であり、POSIX ではありません。本ツールは入力がちょうど 6 つの空白区切りトークンを持つ場合に 6 フィールド式を受け付けます — Quartz、Spring `@Scheduled(cron=...)`、秒対応の Node.js ライブラリ(`node-cron` など)がターゲットなら有用です。標準 POSIX スケジューラ(Linux crontab、GitHub Actions、AWS EventBridge、Kubernetes CronJob)では 5 フィールドを使ってください — 先頭に秒フィールドを追加すると、スケジューラが分を秒、時を分、というように 1 つずつズレた解釈をして、警告なしにスケジュールが壊れます。判断に迷ったら、対象スケジューラのドキュメントで「秒付き 6 フィールド対応」と明記されているかを確認しましょう。明記されていなければ 5 フィールドが正解です。
    cron で表現できる最大間隔は?
    外部状態なしで確実に表現できるのは年 1 回までで、`0 0 D M *`(例: `0 0 1 1 *` = 毎年 1 月 1 日の真夜中)が上限です。「2 年ごと」やそれ以上の間隔は cron 単体では足りません — スクリプト先頭で外部の日付チェックが必要です(例: `[ $(($(date +%Y) % 2)) -eq 0 ] && /your-command` で偶数年に実行)。「90 日ごと」など整列しない数日単位の間隔も cron では不可能で、ネイティブな日剰余演算子がないため、参照日と日通日を比較するラッパーを書くことになります。スケジューリング要件がこのレベルまで複雑なら、本格的なワークフロースケジューラ(Airflow、Temporal、AWS Step Functions)を検討してください — cron の文法は意図的にシンプルで、通常の週次/月次パターンを超えると破綻します。
    ダウンタイム後に取りこぼした実行はどう扱う?
    標準 cron にはリカバリ機構がなく、スケジュール時刻にシステムが停止していれば、その実行は単にスキップされます。「取りこぼした」というログも残りません。重要なジョブには 3 つの選択肢があります: (1) `anacron`(または `Persistent=true` 付き `systemd-cron`)を使う。起動後に取りこぼしジョブを実行してくれるため、ラップトップや断続稼働システムに適しています。(2) リトライ機能付きスケジューラに切り替える: Kubernetes CronJob には `startingDeadlineSeconds`(指定された遅延以内なら実行)と `concurrencyPolicy`(重複実行の制御)、AWS EventBridge にはリトライポリシーがあります。(3) ジョブ自体に冪等性を持たせる: 「9 時にレポート送信」ではなく「今日のレポートが未生成なら生成する」とすれば、どれだけ長いダウンタイムの後でも自己回復します。選択肢 3 が最も堅牢で、どのスケジューラとも組み合わせ可能です。
    GitHub Actions の cron が時間通りに動かないのはなぜ?
    GitHub Actions のスケジュールはベストエフォートです — GitHub インフラの高負荷時には数分遅れて発火することがあり、非常に高負荷の状態では完全にスキップされる場合もあります(特に 5 分ごとなど短い間隔)。同じ但し書きは多くのマネージドスケジューラに当てはまります — 正確なタイミングをスケールと信頼性とトレードオフにしているのです。実用上の含意: (1) 秒単位の正確さが必要なものをスケジュールしない。cron は「だいたいこの時間、毎日」用です。(2) 短い間隔ならスケジュールジョブより常駐ワーカーを選ぶ。(3) 厳密な金融・コンプライアンス時刻には、自前のサーバー上の専用 cron デーモン、あるいは Standard schedule を指定した AWS EventBridge Scheduler のような厳密なスケジューラを使う。(4) GitHub Actions では特に 15 分未満の間隔を避ける — 負荷時にスケジューラが頻繁にスキップします。

    Unixタイムスタンプ & エポック変換 — マルチ精度

    日付/時刻ツール

    無料オンラインUnixタイムスタンプ変換ツール。秒・ミリ秒・マイクロ秒を自動検出し、UTC・ローカル時刻・ISO 8601・相対時間に即座に変換。リアルタイムEpochクロック搭載。登録不要、100%ブラウザ処理でプライバシーも安心。

    進数変換ツール — 2進数・16進数・10進数・8進数

    単位変換

    無料オンライン進数変換ツール。2進数、8進数、10進数、16進数および任意の基数(2-36)間で数値を瞬時に変換。BigInt対応で桁数制限なし。登録不要・サーバー送信なし、すべての処理がブラウザ内で完結。コピーボタンやコードリテラル出力で開発作業を効率化。

    Base64エンコーダー&デコーダー

    エンコーディングとフォーマット

    Base64のデコード・エンコードが無料でオンラインで行えます。リアルタイム変換、UTF-8・絵文字対応。100%ブラウザ上で動作しデータは外部に送信されません。登録不要。

    CSV to JSON 変換ツール

    エンコーディングとフォーマット

    CSVをブラウザ内で即座にJSONに変換。RFC 4180・型推論・ヘッダー行・大整数安全対応。100%プライベート、アップロード不要。

    JPEG・PNG・WebP をオンラインで圧縮 — 無料・一括対応

    単位変換

    無料オンライン画像圧縮ツール。JPEG、PNG、WebP 画像をブラウザ上で最大 80% 縮小。サーバーへのアップロード不要で完全プライベート。最大 20 枚の一括圧縮、品質調整、圧縮前後の比較機能を搭載。登録不要ですぐに使えます。

    JSON Diff(差分)

    エンコーディングとフォーマット

    2つのJSONファイルをブラウザで即座に比較・差分確認。サイドバイサイドのハイライト表示、RFC 6902 JSON Patch出力、タイムスタンプやIDなどのノイズフィールドを無視。100%プライベート、アップロード不要。