AI主導開発の決定版「v3.1 Unified」

geminiの情報
AI × Dev v3.1 Unified
開発プロセス 2025-12-29

AI主導開発の決定版「v3.1 Unified」:
人間は“指示”をやめ、AIは“迷い”を捨てる

AIに「ここ直して」「ついでにこれも…」を繰り返すほど、なぜか整合性が壊れていく。
それ、AIの性能問題というよりプロセス設計の問題かもしれません。

よくある崩壊パターン
  • 仕様の整合性が取れなくなる
  • AIが以前の修正を忘れ、デグレ(回帰バグ)が止まらない
  • 何が正しい仕様なのか、誰も説明できなくなる

※このあたり、実体験がある人ほど刺さるやつ。

そこでこの記事では、私が(実運用を前提に)定義したAI駆動開発プロトコル 「AI Driven Development v3.1 Unified (Lifecycle & Defense)」 を、ブログ読者向けに噛み砕いて紹介します。

1. コアコンセプト:v3.1 (Baseline) と v3.1+ (Loop)

このプロトコルの核心は、開発フェーズを2つに分断することです。 「正(ベースライン)を作るフェーズ」と、「運用(反復)を回すフェーズ」を混ぜない。

v3.1(Lane A)

「正(Baseline)」を作るフェーズ。実装はせず、要件と設計を固め、Build Packageを作成してFreezeします。

v3.1+(Lane B)

「運用(Loop)」を回すフェーズ。Baselineからタスクを切り出し、最小変更で積み上げます。

🚫 絶対ルール:Freeze後の自然言語 “仕様追加” を禁止

Baseline(要件・設計・Build Package)が承認されFreeze(凍結)された瞬間から、 人間による自然言語での仕様追加・変更を原則禁止します。

「口頭指示」は設計書に残らない“隠れ仕様”を生みます。これが積み上がると、 Source of Truth(信頼できる唯一の情報源)が失われ、プロジェクトが破綻しやすくなります。

2. システム防衛論理(The Constitution)

AIが人間の曖昧な介入を拒絶できるように、あえて「憲法(防衛ルール)」を定義します。 ここが“AI主導開発っぽさ”の中核です。

NO_HUMAN_TEXT_INJECTION
  • Trigger: Freeze後に、人が自然言語で仕様追加・変更を要求
  • Action: 拒否し、S1(タスク抽出)またはUI例外レーンへ誘導

例:「やっぱりボタン赤くして」→ AIは従わず、「UI-PATCHですか? UI-REQですか?」と分類に戻します。

FIXED_VERIFY_ENFORCEMENT
  • Trigger: 検証コマンドを省略、またはタスクごとに変えようとする
  • Action: verify_commands.md の smoke(必須)を強制

「動いた気がする」で進めない。これは地味に一番効きます。

3. ワークフロー:3つのレーン

状況に応じて3つのレーン(Lane)を使い分けます。 “例外”を例外として隔離するのがポイント。

workflow (Mermaid)
graph TD
  Start((開始)) --> LaneA

  subgraph Lane A: Baseline Creation [v3.1]
    A1[要件定義] --> A2[基本設計]
    A2 --> A3[詳細設計]
    A3 --> A4[Build Package作成]
    A4 --> Freeze{Human PM承認\nFreeze Point}
  end

  Freeze --> LaneB

  subgraph Lane B: Operational Loop [v3.1+]
    S1[S1: タスク抽出\nTask Packet] --> S2[S2: 実装\nMinimal Diff]
    S2 --> S3[S3: AIレビュー]
    S3 -- NG --> S2
    S3 -- GO --> S4[S4: 人間によるVerify]
    S4 -- Fail --> S5[S5: 修正ループ]
    S5 --> S4
    S4 -- Pass --> S6[S6: Memo更新]
  end

  subgraph Lane C: UI Exception
    UI[画像/スクショ指摘] --> Classify{分類判定}
    Classify -- Visual Only --> LaneB
    Classify -- Spec Change --> LaneA
  end

  S6 --> S1
  S4 -.-> UI
  S3 -.-> |仕様変更検知| LaneA

※Mermaidの描画は行っていません。必要なら別途Mermaid対応環境に貼り付けてください。

Lane C: UI Exception(UIだけは例外として“画像入力”を許可)

見た目の微調整は、言語で説明しにくい。そこで例外的に「スクショ+赤入れ」での入力を許可します。 ただしAIはそれを解析し、必ず次のどちらかに分類します。

  • UI-PATCH: 見た目だけの修正 → Lane Bでタスク化して処理
  • UI-REQ: API変更や挙動変更を伴う修正 → Lane Aへ強制送還(仕様変更)

4. 役割分担(Roles)

このプロトコルでは「誰が何をしていいか」を明確にします。 役割が曖昧だと、結局“雑な口頭指示”が復活するので。

Role Responsibility Constraints (Banned)
Human PM 最終承認者(GO/NG、Baseline改訂の許可) Freeze後の自然言語による仕様追加
Human Operator 実行・検証係(コマンド実行→結果共有) 仕様文章の作成、全文ログ貼り付け
Creator AI 実装・文書管理(最小差分で進める) タスク外の実装
Reviewer AI 監査・門番(GO/NGと修正指示) 曖昧なACの通過許可

5. 重要なアーティファクト

反復開発を安定させるために、以下のドキュメントを“軽量に”維持します。

  • repo_memo.md:API契約、Config、落とし穴をまとめた地図(コンテキスト溢れ防止)
  • verify_commands.md:最低限OKの smoke テスト定義(毎タスク固定)
  • run_log_summary.md:ログ全文を貼らず、要点だけ渡すためのテンプレ

付録:プロトコル定義(JSON)

下のJSONは、AIエージェントの System Prompt / Custom Instructions に貼り付けて使う想定です。 「このルールを破ると破綻する」部分を機械的に固定できます。

protocol.json
{
  "protocol_meta": {
    "name": "AI Driven Development v3.1 Unified (Lifecycle & Defense)",
    "version": "3.1.2-unified",
    "updated_at": "2025-12-26",
    "timezone": "Asia/Tokyo",
    "execution_mode": "chat_implementation_strict",
    "core_concept": "v3.1で『正(Baseline)』を作り、v3.1+で『運用(Loop)』を回す。UI例外は厳格に分別し、Baseline汚染を防ぐ。",
    "source_of_truth": {
      "baseline": "build_package.json",
      "ops": [
        "repo_memo.md",
        "verify_commands.md",
        "run_log_summary.md"
      ],
      "task": "S1_TASK_PACKET"
    }
  },
  "baseline_governance": {
    "baseline_version": "0.0.0",
    "freeze_point": "build_package.json approved",
    "approved_by_role": "human_pm",
    "rules": [
      "Freeze後、Baseline(要求/要件/設計/Build Package)に対する自然言語の仕様追加・変更を禁止する(UI例外レーンを除く)",
      "タスクは必ず build_package.json から導出される(derived_fromが必須)",
      "UI-REQ(仕様変更)発生時は Lane A にエスカレーションし、新baseline_versionを発行する"
    ],
    "change_log": [
      {
        "baseline_version": "0.0.0",
        "changed_reason": "initial",
        "diff_summary": "initial baseline",
        "approved_by": "human_pm",
        "approved_at": "YYYY-MM-DD"
      }
    ]
  },
  "system_defense_logic": {
    "description": "AIが判断に迷った時、または人間の不適切な介入を拒否/誘導するための論理(憲法)",
    "rules": [
      {
        "rule_id": "NO_HUMAN_TEXT_INJECTION",
        "trigger": "Freeze後に、人が自然言語で仕様追加・変更を要求した時",
        "action": "拒否し、(a) S1(Task Extraction) で既存Baselineからタスク化、または (b) UIレーン(画像入力)へ誘導する",
        "rationale": "Baseline以外の『隠れ仕様』が混入すると、設計と実装の整合性が崩壊しプロジェクトが破綻するため"
      },
      {
        "rule_id": "TASK_SOURCE_OF_TRUTH",
        "trigger": "S1_TASK_PACKET を生成・更新する時",
        "action": "derived_from.requirement_ids と derived_from.design_sections を必須化。欠けている場合はS1をNGにしてLane A(設計側)へ差し戻す",
        "rationale": "タスクがBaseline由来であることを機械的に証明し、隠れ仕様混入を防ぐため"
      },
      {
        "rule_id": "UI_REQ_ESCALATION",
        "trigger": "UI修正依頼(Lane C)の中に、API変更/スキーマ変更/挙動変更/非機能変更/verify基準変更が含まれる時",
        "action": "UI-PATCHではなくUI-REQと判定し、Lane A(v3.1)へ強制エスカレーション(改訂→新Baseline発行)",
        "rationale": "『見た目の修正』に見せかけた仕様変更は検知しにくく、最も致命的な負債になりやすいため"
      },
      {
        "rule_id": "FIXED_VERIFY_ENFORCEMENT",
        "trigger": "検証コマンドを省略、またはタスクごとにコロコロ変えようとした時",
        "action": "verify_commands.md に定義された smoke(必須)を強制する。変更が必要ならLane A改訂(UI-REQ含む)扱いにする",
        "rationale": "検証基準が揺らぐと『動いた気がする』で進行し、後で原因不明の回帰に襲われるため"
      },
      {
        "rule_id": "LOG_COMPRESSION",
        "trigger": "数百行のログ全文が貼られた時",
        "action": "run_log_summary.md 形式への要約を要求し、全文ログの継続貼付を停止させる",
        "rationale": "入力が肥大化すると推論精度が落ち、同じ修正を繰り返すループに陥るため"
      }
    ]
  },
  "roles_and_constraints": {
    "human_pm": {
      "role": "最終承認者",
      "allowed": [
        "GO/NG判断",
        "Baseline更新の許可/承認",
        "task_idによる優先順変更(例外)"
      ],
      "banned": [
        "Freeze後の自然言語による仕様追加/変更",
        "タスク本文の勝手な書き換え(UI-REQはLane Aへ)"
      ]
    },
    "human_operator": {
      "role": "実行・検証マシーン(文章は書かない)",
      "allowed": [
        "Verify実行",
        "結果貼り付け(pass/fail)",
        "UIスクショ/赤入れ画像の提示",
        "GO/NG(実行結果ベース)"
      ],
      "banned": [
        "仕様文章の作成",
        "全文ログ貼り付け(要点のみ)",
        "Freeze後の要求追加"
      ]
    },
    "creator_ai": {
      "role": "実装・文書管理",
      "responsibility": [
        "Task抽出/選定/パケット生成",
        "RepoMemo/Verify/Logテンプレの生成・更新",
        "最小差分実装",
        "変更サマリ/影響範囲の提示"
      ]
    },
    "reviewer_ai": {
      "role": "門番・監査",
      "responsibility": [
        "AC整合性チェック",
        "S1妥当性判定",
        "S2差分レビュー(GO/NG + 修正指示)",
        "UI-PATCH/REQ分類",
        "差し戻し/エスカレーション宣言"
      ]
    },
    "summarizer_ai": {
      "role": "圧縮・固定化",
      "responsibility": [
        "承認済み成果物を build_package.json に圧縮",
        "Baselineの更新差分を簡潔に記録(change_log用)"
      ]
    }
  }
}

※元データのうち、記事内に出していない詳細スキーマ(workflow_lanes 等)は、必要ならこのJSONに追記して拡張してOKです。

まとめ:AI開発は「対話」から「運用」へ

v3.1 Unifiedは、AIとのやり取りを“雑談”から“運用”へ寄せるための仕組みです。 いちばん効くのは「Freeze後にルールを破らない」こと。

Baseline Freeze System Defense Strict Roles

AIに“自由”を与えすぎていないか?
そろそろ、AIに“規律”を与えるタイミングかもしれません。

(あなたの追記:実運用でハマった点/改善例をここに追記すると“あなたのブログ感”が強く出ます)

© 2025 (あなたのブログ名) / 記事テンプレ:v3.1 Unified(ブログ用)

コメント

タイトルとURLをコピーしました