日本語 · English

Kairos 言語仕様 — 1. 導入

1.1 Kairos とは

Kairos は、汎用スケジューラのためのスケジュール定義言語である。連続時間軸という基底(Chronos)から、 発報すべき意味ある時点(kairos)の集合を紡ぐ——名はこの営みに由来する。ギリシャ語で Chronos が「流れる連続 した時間」を、kairos が「機を得た特定の時」を指す対に重ねている。

言語はスケジュール(日時の列=時間ストリーム)の生成に特化し、その列を出力するところまでを担う。列を解釈して 実際に発報・登録・実行するのは実装系の責務であり、言語のスコープ外とする(§1.4)。

1.2 解こうとする問題

一般的なスケジューラでは「月末 N 日前」「第 N 営業日(祝日考慮)」といった指定を簡潔に書けない。独立・標準化 された定義言語は事実上 iCalendar の RRULE(RFC 5545)のみで、他はスケジューラ固有の cron 系方言である。いずれも 「月末 N 日前(暦日)」までは書けるが、「第 N 営業日」を式の中で簡潔に書けるものは無く、営業日対応は言語ではなく 「営業日カレンダー」オブジェクト+「非営業日はスキップ/翌営業日へずらす」フラグの外付け二層で解決されている。

既存言語がこの穴を埋められない本質は、機能不足ではなく、式が一枚岩で合成できない点にある。cron も RRULE も 「導いた日を基準にさらに別の定義を作る」閉包性を持たない。Kairos はこの閉包性を中核に据える(§2 で詳述)。

既存方式との比較——何ができて、何ができないか

○=言語/定義の中で書ける・△=部分的(ハック・外付け・実装依存)・✗=書けない。比較対象は POSIX/Vixie cron・Quartz の cron 拡張(L/W/#+除外カレンダー)・iCalendar RRULE (RFC 5545+RFC 7529)・営業日カレンダー付きの業務スケジューラ一般(カレンダーオブジェクト+ 前後シフトのフラグ二層)。

能力 cron Quartz RRULE 営業日付き製品 Kairos
固定時刻の繰り返し(毎日 9:00)
第 N 曜日(第 2 月曜) △(日と曜日の OR 罠) ○(# ○(BYDAY+BYSETPOS) ○(nth・§4.3)
月末・月末 N 日前(暦日) ✗(28〜31 列挙のハック) ○(L ○(BYMONTHDAY=-1) ○(month \|> last \|> shift
営業日の認識(祝日考慮) △(除外=スキップのみ) ✗(EXDATE の静的列挙) ○(実体+bizDay 導出・§3.9)
営業日算術(第 N 営業日・月末 3 営業日前) △(前後シフトのフラグ止まり) ○(rollshift(unit: bizDay)・§7.1)
祝日の導出(振替・国民の休日をルールで) ✗(データ列挙のみ) ○(カスケード・§7.5)
独自暦(会計年度・ISO 週・旧暦・二十四節気) △(RFC 7529 RSCALE・実装は稀) ○(premise 層=暦法のユーザー定義・§3)
合成・閉包(導いた列を入力に次を定義) △(RDATE/EXDATE の和差のみ) ○(全式がストリーム→ストリーム・§2.3)
クロス TZ の合成(東京×NY の共通営業日) ○(rebase・整列検査・§4.4)
DST の規定 △(実装依存=飛び・二重発火) ○(壁時計) ○(壁時計宣言・隙間/重複は明示エラー・§3.6)
データの尽きた先の検出(鮮度の可観測性) ○(covering・範囲外註釈・残走路・§4.10)
決定性・監査(定義=時点の集合) ✗(現在時刻への内包) ○(外延・missed-fire も列挙可能)
取り違えの静的検査 ○(整列・粒度・tz・宣言必須の統治・§4.5)

Kairos が(意図して)できないことと、その受け皿:

できないこと 受け皿・分解
発報・リトライ・実行管理 実装系(発報層)の責務——言語は時点の集合を定義するまで(§1.4・分業の一般形と図は §7.8)
実行状態へのフィードバック(「前回完了から 5 時間ごと」の単一無限列) 注入された時点からの次回計算に分解すれば現行語彙の純関数(§7.7——スコープ外はフィードバックだけ)
回数での終了(RRULE の COUNT=10 相当) 評価範囲・covering での有界化(「列の先頭 N 個」の選択語は持たない——需要待ち)
カレンダーデータの真正性の保証 出所統治(source:/asof:)で判定材料を運ぶ——判定は外部(ADR-15)
実行履歴・負荷などランタイム条件での分岐 スコープ外(発報層で t やデータとして注入する側に倒す)

1.3 設計の背骨

1.4 スコープ

含む: スケジュール定義の表現(言語そのもの)/定義からの時間ストリーム生成/営業日・暦・窓・ロール規約の表現。

含まない:

1.5 本仕様の構成と凡例

  1. 導入(本章)
  2. 型と層 — 三つの型・二層構造・閉包・記号
  3. premise 層 — 前文・暦法定義(原始/派生)・値式
  4. 本体層 — 生成子・窓・選択子・点変換・結合子・フィルタ・ストライド・糖衣
  5. 文法と記号 — 記号一覧・演算子シグネチャ・命名の確定状況・字句・EBNF
  6. 用語集 — 引くための索引(概念用語・記述語・記号・不変条件)
  7. 代表例

凡例: 命名は全語確定済み——仮称は残っていない(F51 の一括確定と rephase 裁定〈2026-07-26〉・§5.4)。設計判断 の根拠(なぜそう決めたか)は設計記録 20-adr/(ADR-01〜47)と 10-domain-model.md に対応し、本仕様では要旨の みを畳んで示す。