# Cron式の解説ツール

Cron式を分かりやすい言葉で読み、任意のタイムゾーンでの次回実行を確認し、標準形に整えます。

https://codeknife.dev/ja/cron-kaisetsu/

## 概要

Cron式を分かりやすい言葉で読み、任意のタイムゾーンで次にいつ実行されるかを確認し、正規の形に整えます。標準の5フィールドの cron と、秒を含む Quartz または Spring の方言に対応しています。すべてブラウザ内で計算されます。

## 使い方

1. 式を入力または貼り付けます。例: `*/15 9-17 * * MON-FRI`。`@daily` や `@hourly` などのショートカットにも対応しています。カーソルのあるフィールドが強調され、下で説明されます。
2. 方言を選びます。**標準(5フィールド)**か、**Quartz / Spring**(秒から始まる6または7フィールド)です。
3. スケジュールを読み取るタイムゾーンと、一覧表示する次回実行の数を選びます。
4. 入力欄の上で式の意味を言葉で読み、その下で次回の実行時刻を確認します。すべてのcronが理解するわけではない書き方は、注意として表示されます。
5. **ランダム**やスケジュールのチップから始めるか、**複数行**に切り替えて1行に1つずつ式を確認します。

## 例

```
@daily                  →  0 0 * * *
*/15 9-17 * * MON-FRI   →  月曜日から金曜日の午前9:00から午後5:59まで、15分ごと
```

毎月第2月曜日の正午を表す Quartz 式です。

```
0 0 12 ? * MON#2
```

## 知っておくと便利なこと

- 5つのフィールドは、分、時、日、月、曜日です。
- 標準の cron では日曜日は0です。Quartz と Spring では1で、日と曜日のどちらかのフィールドに `?` が必要です。
- cron は、それが動いているマシンやスケジューラーの時計で実行されます。そのタイムゾーンを選んでください。多くの場合は UTC です。
- Quartz の `L`、`W`、`#`(月末日、直近の平日、第n曜日)に対応しています。
- 読み取れないフィールドは赤くなり、メッセージでそのフィールドが示されます。
- 日と曜日の両方を指定すると、両方が一致したときだけでなく、どちらか一方が一致したときにジョブが実行されます。`@reboot` には一覧にできるスケジュールがなく、標準cronでの日曜日の `7` やQuartzの文字 `?`、`L`、`W`、`#` は注意として表示されます。

## Cron式とは?

Cron式は、ジョブをいつ実行するかを5つのフィールド(分、時、日、月、曜日)で表します。* はすべての値、*/15 は15ごと、1-5 は範囲、1,15 はリストです。QuartzとSpringは先頭に秒フィールドを加え、末尾に年を付けることもあり、L、W、# などの拡張も使えます。

## よくある質問

### 実行時刻はどのタイムゾーン?

選択したものです。cronはそれが動くマシンやスケジューラーの時計で実行されるため、実際の時刻を見るにはそのタイムゾーン(多くはUTC)を選んでください。

### 標準とQuartzの違いは?

標準cronは5フィールドで日曜が0です。QuartzとSpringは6〜7フィールドで秒から始まり、日曜が1で、日または曜日のフィールドのどちらかに ? が必要です。

### 式はどこかに送信される?

いいえ。説明と実行時刻はブラウザ内で計算されます。入力した内容が当社のサーバーに送信されることはありません。