ADR-0010: GAS モジュラーモノリスと 3 桁番号体系によるレイヤー制御
- Status: Accepted (旧形式「## ステータス: 採用済み」より転記)
- Mode: Critical (内容から推定・旧 README 一覧より移設)
- Kruchten Type: Existence/Property
- Scope: product
- Implementation Status: Done (GAS モジュラーモノリス + 3 桁番号体系実装済)
Kruchten Type は ADR-0031 (2026-05-13) で遡及追加。分類根拠は ADR-0031 §決定セクションおよび docs/adr/README.md の Kruchten 3 分類ガイドを参照。 Status / Mode / Scope は 2026-06-11 に遡及追加 (ADR-0031 corrigendum パターン)。出典: Status = 旧形式「## ステータス」節の機械転記 / Mode = 旧 README §既存 ADR 一覧の推定値 (git 履歴) / Scope = ADR-0049 4 層分類の遡及付与 (PR レビューで確定)。
ステータス: 採用済み
コンテキスト
GAS はプロジェクト内の全ファイルをフルパスのアルファベット順に読み込む。依存関係(例: Utils を使う前に定義が必要)を制御するためのファイル読込順を人力で管理すると、ファイル追加のたびに破綻するリスクがあった。
選択肢:
- 案A: ファイルを 1 つにまとめる(モノリシック単一ファイル)
- 案B: 3 桁番号プレフィックス + ディレクトリ構造でレイヤー順を制御
決定
案B を採用する。 ディレクトリ名と先頭 3 桁のプレフィックスで読込順とレイヤーを同時に表現する。
- 百の位 = レイヤー(
000_infra,100_config,200_data, ...900_test) - 十・一の位 = 同ディレクトリ内の順序
理由
- GAS はアルファベット順ロードという制約から逃げられないため、命名規則で制御するのが最もシンプル
- ディレクトリ名と番号を一致させることで「ファイル名だけでどのレイヤーか」が一目でわかる
000_infraが必ず400_domainより先にロードされるため、名前空間の参照順が自然に保証される- 新ファイルの挿入位置が明確で、後発エンジニアが迷わない
結果・影響
- ポジティブ: ファイルを見ただけで依存方向・レイヤーが把握できる。
000_infra/001_env.js→200_data/202_repository.js→400_domain/410_subledger_engine.jsの依存方向が番号で自明 - ポジティブ: テスト用ファイル (
900_test/) が本番ビルドで削除される仕組みと相性が良い(ディレクトリまるごと除外) - ネガティブ: 番号が枯渇した場合(十・一の位が 99 に到達)はリネームが必要。現時点では余裕あり
- 制約: 同一ディレクトリ内で循環参照は禁止。上位レイヤーが下位レイヤーを呼ぶ単方向依存を厳守
Confirmation (準拠確認 / Fitness Function)
本セクションは ADR-0036 (Accepted 2026-05-14) で遡及追加された。ADR-0031 パターン (業界標準準拠メタデータ後付け = 誤字修正範疇) に準拠する遡及で本文の意思決定内容は不変。
- 検証手段: N/A — 要マッピング更新 (ADR-0036 遡及時点で未定義、月次レビューで確定)
- 実行頻度: —
- 違反時の対応: —