• Status: Accepted
  • Mode: Light
  • Kruchten Type: Property
  • Scope: platform
  • Implementation Status: Done (UC スライス ID usecase_dev_mapping.md 実装済)
  • 起案者: [email protected]
  • 起案日時 (JST): 2026-05-13 00:46
  • 承認日時 (JST): 2026-05-13 01:15
  • Deciders: [email protected] (単独)

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 レビューで確定)。

コンテキスト

ADR-0021(UC スライス × Walking Skeleton 開発)の実装開始にあたり、以下の識別子・命名規則が未定義のまま複数ファイルで異なる表記が生じる恐れがある:

  • UC スライス ID(例: UC-4-S01)の桁数・区切り文字
  • Feature Flag キー(PropertiesService に保存する文字列)
  • テスト関数名(GAS 上の 901_test_runner.js)
  • Walking Skeleton ステータスの選択肢
  • Now/Next/Later の表記ゆれ

【判断基準】

  • 一貫性: 全ファイル・スクリプト・GAS コードで同一規則を使用できること
  • PropertiesService 制限内: Feature Flag キーが 30 文字以内に収まること
  • GAS 互換: テスト関数名が GAS V8 の識別子規則に準拠すること
  • 拡張性: UC 数が 9 以下の現状に適合し、10 以上になった場合は別途 ADR で桁数を再評価

【影響範囲】

  • docs/_internal/usecase_dev_mapping.md(slice_id・walking_skeleton_status・now_next_later 列の定義)
  • docs/_internal/todo_master_tables.md(slice_id 列の自動同期対象)
  • 900_test/901_test_runner.js(新規テスト関数の命名)
  • 000_infra/001_env.js(Env.featureFlag(key) 追加時の前提)
  • scripts/2.5_inject_walking_skeleton.js(テンプレートに規則を埋め込む)

決定

以下の命名規則を全ファイル・全モジュールで統一して採用する。

  1. slice_id: UC-{N}-S{NN} 形式(例: UC-4-S01
    • N: UC 番号(1 桁)、S{NN}: スライス通し番号(2 桁ゼロ埋め)
    • SSoT: usecase_dev_mapping.md
  2. walking_skeleton_status: pending / skeleton / in_progress / done の 4 値
    • pending: 未着手、skeleton: 4 要素貫通完了、in_progress: 実装中、done: 完了
  3. now_next_later: Now / Next / Later の 3 値(大文字始まり)
    • Now: 現在の WIP(同時 1 スライスが原則)、Next: 次の優先キュー、Later: バックログ
  4. Feature Flag キー: FF_UC{N}_S{NN}_{verb} 形式(例: FF_UC4_S01_runway
    • PropertiesService の Script Properties に保存
    • verb は機能を表す英小文字(runway / forecast / simulate 等)
    • PropertiesService 9KB/値・500KB/セット制限を考慮しキー長は 30 文字以内
  5. テスト関数名: test_{slice_id}_{condition}_() 形式(例: test_UC4_S01_normal_()
    • slice_id のハイフンはアンダースコアに変換(GAS V8 関数名の制約)
    • condition: normal / boundary / error 等の英小文字
    • 既存の testT{N}_* 命名は変更せず、新規分のみ本規則を適用(段階移行)

検討した代替案 (Alternatives Considered)

  • 案 A【採用】完全統一命名規則(上記方針): 一貫性が高く、自動同期スクリプト・inject_walking_skeleton との連携が容易。Jr 入社後も規則が明確で迷わない。
  • 案 B【不採用】既存 MAS-XXX 番号を slice_id として流用: 既存資産との互換性は高いが、UC 軸(業務シナリオ単位)の概念が失われる。MAS 番号は技術軸の識別子であり粒度が異なるため不適切。
  • 案 C【不採用】自由命名(規則なし): 初期コスト最小だが、Jr 入社後の混乱・自動同期スクリプトの複雑化・監査時の説明困難を招く。

影響 (Consequences)

  • 正の影響:
    • 全ファイル・スクリプト・GAS コードで識別子表記が統一され、自動同期スクリプト(todo_master_tables.md 等)の実装が単純化される
    • Jr 入社後も命名規則が明確で迷わず、レビュー・監査時の説明が容易
    • Feature Flag キーが 30 文字以内に収まり、PropertiesService の制限(9KB/値・500KB/セット)に対し安全マージンを確保
    • テスト関数名が GAS V8 識別子規則に準拠し、runAllTests() からの動的呼び出しが安定
  • 負の影響:
    • 規則定義・ドキュメント化: 0.5 時間
    • usecase_dev_mapping.md への 3 列追加(全 UC/OP 行): 1 時間
    • scripts/2.5_inject_walking_skeleton.js への規則組み込み: 0.5 時間
    • 合計: 約 2 時間、追加インフラコストなし
    • 既存 testT{N}_* 命名と新規 test_{slice_id}_{condition}_() 命名が並存する期間が発生(段階移行)
  • リスク:
    • UC 数が 10 以上になった場合、N の桁数(現在 1 桁)が破綻する → 別途 ADR で桁数を再評価する前提
    • verb 部分が自由記述のため、表記ゆれ(forecast / forecasts 等)の余地が残る

撤退条件 (Rollback Plan)

  • 判定指標:
    • Feature Flag キーが 30 文字以内に収まらないユースケースが発生した場合
    • UC 数が 10 以上に増え、UC-{N}-S{NN} の桁数が破綻した場合
    • GAS V8 のテスト関数名規則と衝突するケースが見つかった場合
  • 期限: Walking Skeleton 第1ラウンド完了時点でレビュー(要追記)
  • 代替案: 桁数拡張(UC-{NN}-S{NN})または案 B(MAS-XXX 流用)への部分移行を検討

Confirmation (準拠確認 / Fitness Function)

本セクションは ADR-0036 (Accepted 2026-05-14) で遡及追加された。ADR-0031 パターン (業界標準準拠メタデータ後付け = 誤字修正範疇) に準拠する遡及で本文の意思決定内容は不変。

  • 検証手段: N/A — 要マッピング更新 (ADR-0036 遡及時点で未定義、月次レビューで確定)
  • 実行頻度: —
  • 違反時の対応: —

参照 (References)

  • 関連 ADR: ADR-0021(UC スライス × Walking Skeleton 開発)
  • 関連 PR/Issue: -
  • 外部資料:
    • docs/_internal/usecase_dev_mapping.md
    • docs/_internal/todo_master_tables.md
    • 900_test/901_test_runner.js
    • 000_infra/001_env.js
    • scripts/2.5_inject_walking_skeleton.js