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)
要求事項
開発タスク開始前に、以下の 情報の役割 が必ず提示されていなければならない。
必須コンテキスト(役割ベース)
-
システム設計コンテキスト
- システム全体構造
- 対象変更が属する論理的範囲
-
プロジェクトの目的・制約
- 何のための変更か
- リスク許容度・対象読者・スコープ
-
変更対象の定義
- 何を変更・評価するのか
- 明示的に「含まないもの」
ルール
- ファイル名・形式は問わない
- いずれかが欠けていれば Gate BLOCK
- 推測・補完は禁止
4. Gate 2 ― 版の正当性確認(最新版保証)
要求事項
参照されるすべての情報には、以下が明示されていなければならない。
- バージョン識別子(形式自由)
- 最終更新情報(日付・リビジョン等)
ルール
- 版が不明な場合 → Gate BLOCK
- 複数の版が衝突している場合 → Gate BLOCK
5. Gate 3 ― 仕様成立性
要求事項
テスト・実装に進む前に、以下が仕様として記述されていなければならない。
- 期待される挙動
- 失敗時・境界条件の挙動
- 未定義挙動は「未定義」と明記
禁止事項
- 実装詳細の混入
- 利便性のみを根拠とした具体値
6. Gate 4 ― テスト可能性
要求事項
各仕様について、以下が成立していなければならない。
- 観測可能な結果が定義されている
- 合否判定条件が明確である
ルール
- テスト不能・検証不能な挙動は Gate BLOCK
7. 出力順序(強制)
すべての開発作業は、必ず以下の順序に従う。
- 仕様定義
- テスト定義(または判定基準)
- 実装・変更
- レビュー
- 判断記録(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