Spec & Test Driven Iteration(STIT)

v1.3 ― 開発プロセス標準プロトコル


目的: 本ドキュメントは、Spec & Test Driven Iteration(STIT)における プロジェクト非依存の開発プロセス標準プロトコルを定義する。

ここで定義するのは以下に限定される。

  • Gate(開始条件)の定義
  • 必須入力情報(ファイル名ではなく「役割」)
  • 出力順序の強制
  • 版確認ルール
  • Decision Log 記録義務
  • 軽微修正の例外規定

本ドキュメントは 憲法レベルの規範であり、 すべてのプロジェクト固有ルールは 本書を参照する側 でなければならない。 本書を上書き・弱体化してはならない。


0. 適用範囲と非対象

対象(In Scope)

  • Gate 定義(何が満たされていなければならないか)
  • 開発開始前に必要な前提情報
  • 出力順序の固定
  • 版の正当性確認
  • 判断記録(Decision Log)の義務
  • 軽微修正の例外規定

非対象(Out of Scope)

  • アーキテクチャ詳細
  • 実装方法・技術選定
  • ツール・フレームワーク
  • ファイル名・ディレクトリ構成
  • プロジェクト固有の制約

1. 基本原則

必要な判断前提が明示されていない限り、 いかなる実装・修正・提案も開始してはならない。

STIT は、以下を防ぐために存在する。

  • 暗黙の前提
  • 推測による設計
  • 後付け正当化
  • 実装主導による仕様のねじれ

2. Gate の概要

Gate とは、次の二値判定である。

  • PASS: 必要な判断材料がすべて明示されている
  • BLOCK: 情報が不足・不明・曖昧である

Gate は、以下の に必ず評価される。

  • 仕様定義
  • テスト定義
  • 実装・修正

3. Gate 1 ― コンテキスト存在確認(参照 Gate)

要求事項

開発タスク開始前に、以下の 情報の役割 が必ず提示されていなければならない。

必須コンテキスト(役割ベース)

  1. システム設計コンテキスト

    • システム全体構造
    • 対象変更が属する論理的範囲
  2. プロジェクトの目的・制約

    • 何のための変更か
    • リスク許容度・対象読者・スコープ
  3. 変更対象の定義

    • 何を変更・評価するのか
    • 明示的に「含まないもの」

ルール

  • ファイル名・形式は問わない
  • いずれかが欠けていれば Gate BLOCK
  • 推測・補完は禁止

4. Gate 2 ― 版の正当性確認(最新版保証)

要求事項

参照されるすべての情報には、以下が明示されていなければならない。

  • バージョン識別子(形式自由)
  • 最終更新情報(日付・リビジョン等)

ルール

  • 版が不明な場合 → Gate BLOCK
  • 複数の版が衝突している場合 → Gate BLOCK

5. Gate 3 ― 仕様成立性

要求事項

テスト・実装に進む前に、以下が仕様として記述されていなければならない。

  • 期待される挙動
  • 失敗時・境界条件の挙動
  • 未定義挙動は「未定義」と明記

禁止事項

  • 実装詳細の混入
  • 利便性のみを根拠とした具体値

6. Gate 4 ― テスト可能性

要求事項

各仕様について、以下が成立していなければならない。

  • 観測可能な結果が定義されている
  • 合否判定条件が明確である

ルール

  • テスト不能・検証不能な挙動は Gate BLOCK

7. 出力順序(強制)

すべての開発作業は、必ず以下の順序に従う。

  1. 仕様定義
  2. テスト定義(または判定基準)
  3. 実装・変更
  4. レビュー
  5. 判断記録(Decision Log)

この順序を破った成果物は 無効 とみなす。


8. Decision Log 記録義務

以下の場合、Decision Log への記録は必須である。

  • Gate により進行が止められた場合
  • 複数の妥当な選択肢が存在した場合
  • 提案・仕様が Reject / Deferred された場合

ルール

  • 追記専用(append-only)
  • 判断理由を必ず明示

9. プロジェクト固有ルールとの関係

  • プロジェクト固有ルールは 制約を追加することは可能
  • Gate を緩めることは禁止
  • 矛盾が生じた場合、本ドキュメントが最優先される

10. 軽微修正の例外

以下の軽微修正では、Spec・Test・Review を省略できる。省略はユーザーが明示的に「軽微修正」として指定した場合のみ可能。

10.1 Architectural Impact: None(即時適用可能)

以下の変更は、Spec・Test・Review を省略して即座に適用できる。

変更タイプ 具体例
ドキュメント修正 コメント修正、タイポ修正、ログメッセージの文言変更
定数調整 設定値・定数の微調整(外部動作に影響しない範囲)

10.2 Architectural Impact: Low(条件付き適用)

以下の変更は、5つの条件をすべて満たす場合に限り、Spec・Test・Review を省略できる。

条件 判定基準
外部動作 観測可能な動作が変わらない
テスト 既存テストがすべてパスする
規模 変更行数が50行以内
範囲 影響範囲が1ファイル以内
API 公開シグネチャが変わらない

Low 具体例

変更タイプ 具体例
リファクタリング 関数内部の実装改善、変数名・関数名の変更
コード品質 コードフォーマット・スタイル改善、dead code除去
構造化 内部ヘルパー関数の抽出、コードブロックの整理

Low 判断に迷う場合

軽微修正の適用可否が判断に迷う場合は、フルSTITフローを適用すること。

10.3 判定フローチャート

[タスク開始]
    ↓
[軽微修正か?] ─── Yes ──→ [Impact評価: None/Low/Other]
    ↓ No                            ↓
[フルSTITフロー]         [None] → [実装] → [完了]
                              ↓
                         [Low] → [実装] → [既存テスト実行] → [完了]
                              ↓
                         [Other] → [フルSTITフロー] → [完了]

11. バージョン履歴

  • v1.3: 軽微修正の例外規定を追加
  • v1.2: プロジェクト非依存・抽象 Gate 定義(本書)
  • 旧版は履歴扱いとし、正本とはしない

End of Spec & Test Driven Iteration v1.3


This site uses Just the Docs, a documentation theme for Jekyll.