AI-DLCを完全理解する 第9回: COMMON(共通)のメタルール

吉田真吾 (@yoshidashingo) です。

これだけは覚えて帰ってね💡

  • commonディレクトリには11のルールファイルがあり、すべてのステージに共通する「前提条件」を定義する
  • 質問ファイル方式 (question-format-guide.md) は「チャットで質問しない」という厳格なルールを持つ
  • overconfidence-prevention.mdは「聞きすぎるくらい聞け」という設計意図を文書化したものだ(ただしプロンプト指示による制御であり、技術的な強制力はない)
  • error-handling.mdとworkflow-changes.mdが、AI-DLCの「何かあったときの対処法」を体系的に定義する

https://extravaganzarr.s3.ap-northeast-1.amazonaws.com/aidlc-image03.png

引用元:AI 駆動開発ライフサイクル:ソフトウェアエンジニアリングの再構築 | Amazon Web Services ブログ


commonディレクトリの位置づけ

第8回で解説したcore-workflow.mdのMANDATORY 1 (Rule Details Loading) は、ワークフロー開始時に4つの共通ファイルを読み込むよう指示していました。しかし実際のcommonディレクトリには、その4つを含む合計11のファイルが格納されています。

common/
├── process-overview.md          # ワークフロー全体図
├── welcome-message.md           # ウェルカムメッセージ
├── session-continuity.md        # セッション再開テンプレート
├── question-format-guide.md     # 質問フォーマットガイド
├── depth-levels.md              # 適応的深度の定義
├── terminology.md               # 用語集
├── overconfidence-prevention.md # 過信防止ガイド
├── content-validation.md        # コンテンツ検証ルール
├── ascii-diagram-standards.md   # ASCII図表の標準規格
├── workflow-changes.md          # ワークフロー変更管理
└── error-handling.md            # エラー処理と復旧手順

これらは個別のステージに属さない「横断的な関心事」を扱うファイルです。ソフトウェア設計でいうクロスカッティング・コンサーン (Cross-Cutting Concerns) に近い役割です。ソフトウェア設計における認証やログ出力がアプリケーションの特定の機能ではなく全体に関わるように、これらのファイルはAI-DLCのすべてのステージに共通する前提条件やルールを定義しています。ただし、コードレベルのクロスカッティング・コンサーンが技術的に適用されるのに対し、これらはMarkdownファイルのプロンプト指示として記述されている点が異なります。

以下、機能ごとに4つのグループに分けて解説します。


グループ1: 全体図と開始・再開 ― プロセスの入口

process-overview.md: 技術リファレンスとしての全体図

冒頭に以下の記述があります:

**Note**: Similar content exists in core-workflow.md (user welcome message) and README.md (documentation).
This duplication is INTENTIONAL - each file serves a different purpose

「同じような内容がcore-workflow.mdやREADME.mdにもある。この重複は意図的なものだ。」

process-overview.mdはAIモデル向けの技術リファレンスとして設計されています。Mermaid形式のフローチャートが埋め込まれており、AIモデルがワークフロー全体の構造をコンテキストに読み込むためのファイルです。

同じワークフロー情報が3つの異なる受け手に向けて提供されている点に注目してください。ソースファイルの記述に基づく対応関係は以下の通りです

  • process-overview.md: 「Detailed technical reference with Mermaid diagram for AI model context loading」(AIモデル向けの技術リファレンス)
  • core-workflow.md: 「User-facing welcome message with ASCII diagram」(ユーザー向けのASCII図付きウェルカムメッセージ)
  • README.md: 「Human-readable documentation for repository」(リポジトリの人間向けドキュメント)

ステージの実行順序について、process-overview.mdには「No fixed sequences: Stages execute in the order that makes sense for your specific task (固定的な順序はない。タスクに合った順序で実行される) 」と記載されています。ただし、第8回で解説した通り、core-workflow.mdではINCEPTION→CONSTRUCTION→OPERATIONSというフェーズ順序は固定されており、「No fixed sequences」が指すのはフェーズ内のCONDITIONALステージの柔軟性と解釈するのが自然です。

welcome-message.md: ユーザーの第一印象を設計する

第8回のMANDATORY 4で触れたウェルカムメッセージの本体がこのファイルです。110行にわたるテンプレートで、挨拶と概要、3フェーズのASCII図、各フェーズの説明、Key Principles、次のステップの予告で構成されます。

AI-DLCにおけるユーザーの役割は「作る人」ではなく「判断する人」として位置づけられています。process-overview.mdでは「Your Team's Role」として以下が挙げられています。

  • Answer questions: 専用の質問ファイルに回答する
  • Review and approve each phase: 各フェーズをレビューし承認する
  • Collectively decide on architectural approach: アーキテクチャ方針をチームで決定する

なお、これらはprocess-overview.mdの記述であり、welcome-message.mdでは表現が若干異なる場合があります。

session-continuity.md: セッション断絶への対処

第7回で触れたaidlc-state.mdによるセッション再開の仕組みが、具体的なテンプレートとして定義されているのがこのファイルです。

**Welcome back! I can see you have an existing AI-DLC project in progress.**

Based on your aidlc-state.md, here's your current status:
- **Project**: [project-name]
- **Current Phase**: [INCEPTION/CONSTRUCTION/OPERATIONS]
- **Current Stage**: [Stage Name]
- **Last Completed**: [Last completed step]
- **Next Step**: [Next step to work on]

「MANDATORY: Load Previous Stage Artifacts」の指示により、セッション再開時には前回までに生成された成果物 (AI-DLCの各ステージが出力するMarkdownドキュメントやコードなどのファイル群) を段階的に読み込むルールが定められています:

  • 初期ステージ (Workspace Detection等) : ワークスペース分析のみ
  • 要件・ストーリー: リバースエンジニアリング+要件の成果物
  • 設計ステージ: 要件+ストーリー+アーキテクチャ+設計の成果物
  • コードステージ: 上記すべて+既存のコードファイル

ステージが進むほど読み込む成果物が増えます。session-continuity.mdが定義するこの「段階的コンテキストローディング」は、LLM (Large Language Model: 大規模言語モデル) のコンテキストウィンドウを効率的に使うための設計です。初期ステージの再開で設計文書まで読み込む必要はありませんし、コードステージの再開で要件文書を読み飛ばすわけにもいきません。


グループ2: 対話と質問 ― AIとユーザーの接点

question-format-guide.md: 「チャットで質問するな」

第3回で「質問ファイル方式」として紹介した仕組みの全ルールがこのファイルに定義されています。冒頭には以下の指示があります:

**CRITICAL**: You must NEVER ask questions directly in the chat.
ALL questions must be placed in dedicated question files.

「チャットで質問するな。すべての質問は専用のファイルに置け。」

なぜチャットではなくファイルなのか。第3回で解説した通り、理由は永続性・構造化・監査可能性の3つです。質問と回答がファイルとして残ることで、セッション再開や後からの追跡が可能になります。なお、「NEVER」はプロンプト指示としての強い要求であり、AIモデルがこのルールを100%遵守する技術的保証があるわけではありません。

質問フォーマットの構造は以下の通りです:

## Question [Number]
[質問文]

A) [選択肢1]
B) [選択肢2]
X) Other (please describe after [Answer]: tag below)

[Answer]:

重要なルールが2つあります。「Other」選択肢の必須化選択肢の数の制約 (ガイドライン) です。

1つ目の「Other」 (その他) は、すべての質問の最後の選択肢として必須とされています。用意された選択肢にぴったり合わない場合のエスケープハッチです。

2つ目の選択肢の数は「Minimum: 2 meaningful options + "Other"」「Maximum: 5 meaningful options + "Other"」とガイドラインが示されています。さらに「Don't make up options just to fill slots (枠を埋めるために選択肢を作り上げるな) 」という指示があります。選択肢は「あるべき数」だけ用意します。

もう1つの重要な仕組みが矛盾検出です。question-format-guide.mdの「Contradiction and Ambiguity Detection」セクションでは、矛盾の例として以下が挙げられています:

  • Scope mismatch: 「Bug fix」なのに「Entire codebase affected」
  • Risk mismatch: 「Low risk」なのに「Breaking changes」
  • Timeline mismatch: 「Quick fix」なのに「Multiple subsystems」
  • Impact mismatch: 「Single component」なのに「Significant architecture changes」

これらは網羅的な分類ではなく、「logically inconsistent answers(論理的に矛盾した回答)」の代表例として示されたものです。矛盾が検出された場合は{phase-name}-clarification-questions.mdで追加質問を行い、解消を目指します。ただし、矛盾検出自体がAIモデルの判断に依存するため、すべての矛盾を確実に検出できる保証はありません。question-format-guide.mdは、この矛盾検出のルールと具体例の「原典」として機能しています。

overconfidence-prevention.md: 運用フィードバックから生まれたガイド

このファイルは他のファイルとは毛色が違います。冒頭にこう書かれています:

## Problem Statement
AI-DLC was exhibiting overconfidence by not asking enough clarifying questions,
even for complex project intent statements.

「AI-DLCが過信を示していた。複雑なプロジェクトの意図表明に対しても、十分な明確化質問を行わなかった。」

これは問題が発生した後に追加されたガイドであることが読み取れます。overconfidence-prevention.mdの「Root Cause Analysis」セクションによれば、根本原因は4つのステージのルールファイルにある指示 (directives) にありました:

  • Functional Design: 「Skip entire categories if not applicable(該当しないカテゴリはスキップせよ)」
  • User Stories: 「Use categories as inspiration, NOT as mandatory checklist(カテゴリはインスピレーションとして使え。必須チェックリストではない)」
  • Requirements Analysis: 「Similar patterns encouraging minimal questioning(質問を最小限に抑える方向の類似パターン)」
  • NFR Requirements: 「"Only if" conditions that discouraged thorough analysis(『〜の場合のみ』という条件が徹底的な分析を抑制)」

これらはすべて「質問を減らす方向」に誘導する指示でした。結果として、AIが質問を十分に行わずに先に進んでしまう問題が起きたとされています。

修正の方向はソースファイルに明記されています:

旧 (OLD APPROACH) : 「Only ask questions if absolutely necessary」 新 (NEW APPROACH) : 「When in doubt, ask the question - overconfidence leads to poor outcomes」

5つの新原則 (New Guiding Principles) が定められました:

  1. Default to Asking: 曖昧さがあれば質問する
  2. Comprehensive Coverage: すべての関連カテゴリを評価し、スキップしない
  3. Thorough Analysis: すべてのユーザー回答から曖昧さを探す
  4. Mandatory Follow-up: 不明確な回答には追加質問する
  5. No Proceeding with Ambiguity: すべての曖昧さが解消されるまで先に進まない

このガイドの存在は、AI-DLCが実運用で発生した問題に対して修正を加えた痕跡と読み取れます。同時に、このガイド自体もプロンプト指示である以上、過信防止が技術的に強制されるわけではなく、AIモデルの振る舞いが改善される「意図」を表明したものである点は留意が必要です。


グループ3: 言葉と深さの統一 ― 共通言語の確立

terminology.md: 用語の厳密な使い分け

第3回でDDDの「ユビキタス言語」に触れましたが、AI-DLCもフレームワーク内の用語を定義しています。最も基本的な区別はPhaseStageです:

  • Phase: 3つの上位フェーズ (INCEPTION / CONSTRUCTION / OPERATIONS)
  • Stage: フェーズ内の個別の活動

正しい例: 「The CONSTRUCTION phase contains 7 stages」 間違い: 「The Requirements Assessment phase」 (phaseではなくstageが正しい)

もう1つの重要な区別が、アーキテクチャに関する4つの用語です:

用語 定義 使う場面
Unit of Work 開発目的でまとめたユーザーストーリーの論理グループ 計画・分割の議論
Service マイクロサービスアーキテクチャにおける独立デプロイ可能なコンポーネント デプロイ・インフラの議論
Module サービスやモノリス内の論理的な機能グループ 内部構造の議論
Component 特定の機能を提供するクラス、関数、パッケージ 設計・実装の議論

これらの用語は日常会話では混同されがちですが、terminology.mdでは明確な区別が定義されています。Unit of WorkはINCEPTIONフェーズの計画段階で使う用語であり、ServiceはCONSTRUCTIONフェーズの実装段階で使う用語です。ただし、これもプロンプト指示による定義であり、AIモデルが常にこの使い分けを正確に守れるかどうかは別の問題です。

さらにPlanning vs Generationの区別も定義されています。AI-DLCの多くのステージは「計画 (Planning) 」と「生成 (Generation) 」の2段階で構成されます。Story Planning → Story Generation、Code Planning → Code Generationのように、常にこのペアで動きます。

depth-levels.md: 「深さ」のルール

第7回で解説したAdaptive Depthの詳細定義がこのファイルです。core-workflow.mdのWorkflow Planningでも「Each stage independently evaluated for inclusion and depth (各ステージは実行するかどうかと深度を個別に評価する) 」と記述されており、ステージ選択と深度という2つの次元の概念はcore-workflow.mdにも存在します。depth-levels.mdはこの深度の次元を詳細に定義するファイルです:

**When a stage executes, ALL its defined artifacts are created.
The "depth" refers to the level of detail and rigor within those artifacts,
which adapts to the problem's complexity.**

「ステージが実行されたら、定義されたすべての成果物が作成される。『深さ』とは、その成果物内の詳細さと厳密さのレベルを指し、問題の複雑さに応じて適応される。」

※原文の「which adapts to the problem's complexity」は重要な修飾句です。深さが固定値ではなく問題の複雑さに応じて変動することを明示しています。

つまり、AI-DLCの適応には2つの次元があります:

  1. ステージ選択 (バイナリ) : 実行するか、しないか
  2. 詳細レベル (アダプティブ) : 実行する場合、どれだけ詳しくやるか

詳細レベルを決定する要因は、depth-levels.mdの「Factors Influencing Detail Level」セクションに列挙された6つ (Request Clarity, Problem Complexity, Scope, Risk Level, Available Context, User Preferences) です。ただしdepth-levels.mdでは「Model decides: Based on problem characteristics, not prescriptive rules (モデルが判断する。規範的なルールではなく、問題の特性に基づいて) 」と記載されており、深度の決定は最終的にAIモデルの判断に委ねられています。

depth-levels.mdにはRequirements Analysisの具体例が示されています。Simple Scenario (Bug Fix) ではrequirements.mdは「Concise functional requirement, minimal sections」、Complex Scenario (System Migration) では「Comprehensive functional + non-functional requirements, traceability, acceptance criteria」と記載されています。同じ成果物名でも、中身の密度がまったく違います


グループ4: 品質管理と変更・エラー対処

content-validation.md と ascii-diagram-standards.md: 図表の品質管理

第8回のMANDATORY 2 (Content Validation) の詳細ルールがcontent-validation.mdに定義されています。主に以下の3種類のコンテンツの検証ルールが記述されています:

  1. Mermaid図: シンタックスチェック、特殊文字のエスケープ、バリデーション失敗時のテキスト代替
  2. ASCII図: ascii-diagram-standards.mdの規格に準拠しているか
  3. 一般的なMarkdown: コードブロック、特殊文字、構文の正確性

ascii-diagram-standards.mdは、ASCII図の描画ルールを細かく定義しています:

### ✅ ALLOWED: `+` `-` `|` `^` `v` `<` `>` and alphanumeric text
### ❌ FORBIDDEN: Unicode box-drawing characters

使える文字は+ - | ^ v < >とアルファベット・数字のみ。 などのUnicodeのBox Drawing文字は禁止。理由は「フォントやプラットフォームによって表示が不安定になるから」です。

さらに厳格なのが文字幅の統一ルールです。「Every line in a box MUST have EXACTLY the same character count (ボックス内のすべての行は、スペースを含めてまったく同じ文字数でなければならない) 」。これは等幅フォントでの表示崩れを防ぐためのルールです。

content-validation.mdで特徴的なのは「フォールバック」の考え方です。Mermaidのバリデーションに失敗したら、Mermaid図を諦めてテキストベースの表現に切り替えます。「完璧な図を無理に作る」のではなく「確実に表示できる形に落とす」。この発想は第7回で解説した「Quality Focus」原則と方向性が一致しています。

workflow-changes.md: 途中変更のシナリオ集

AI-DLCは適応型ワークフローですが、ワークフロー自体の途中変更も想定しています。workflow-changes.mdは8つの変更シナリオとその対処手順を定義しています:

# シナリオ
1 スキップしたステージの追加 「やはりユーザーストーリーも作りたい」
2 計画済みステージのスキップ 「NFR Designは飛ばそう」
3 現在のステージの再実行 「このユーザーストーリーが気に入らない。やり直したい」
4 以前のステージの再実行 「アーキテクチャの決定を変えたい」
5 ステージ深度の変更 「要件分析をComprehensiveに切り替えて」
6 ワークフローの一時停止 「今日はここまで。明日続ける」
7 アーキテクチャ決定の変更 「モノリスからマイクロサービスに変えたい」
8 ユニットの追加・削除 「Paymentユニットを分割してBillingも作りたい」

各シナリオには「Handling (対処手順) 」と「Considerations (考慮事項) 」が定義されています。共通するパターンは以下の通りです:

  1. リクエストの確認: ユーザーが何を変えたいか明確にする
  2. 影響評価: 変更が他のステージにどう波及するか分析する
  3. 明示的な確認: ユーザーが影響を理解した上で承認する
  4. すべてのトラッキング更新: aidlc-state.md、計画ファイル、audit.mdを同期する

特に興味深いのはシナリオ4 (以前のステージの再実行) です。ソースファイルにはApplication Designを変更する場合の例が具体的に記載されています: 「Restarting Application Design will require redoing: Units Planning, Units Generation, per-unit design (all units), Code Planning, Code Generation」。つまり、5つのステージのやり直しが必要になります。ワークフロー変更の「コスト」がステージの進行度に応じて増大する設計です。この「後工程ほど手戻りコストが大きい」という特性はウォーターフォールの課題と共通する側面がありますが、AI-DLCでは影響範囲の明示と対処手順のルール化により、手戻りの影響を管理しやすくする意図が見られます。

error-handling.md: 何かあったときの対処法

最後のファイルは最も長いものです (374行) 。AIが遭遇しうるエラーを、重要度4段階 × ステージ別で体系的に定義しています。

重要度の4段階:

レベル 定義
Critical ワークフロー続行不可 (Workflow cannot continue) 必須ファイルの欠損、入力の処理不能
High フェーズが計画通り完了不可 (Phase cannot complete as planned) 必須質問への回答不足、矛盾する回答
Medium ワークアラウンドで続行可 (Phase can continue with workarounds) オプション成果物の欠損、非クリティカルなバリデーション失敗
Low 進行に影響なし (Minor issues that don't block progress) フォーマット不整合、オプション情報の不足

ステージ別では、Context Assessment (Workspace Detection) からOperationsまで各ステージ固有のエラーパターンと対処法が列挙されています。なお、ソースファイルではステージ名が一部terminology.mdの定義と異なる表記 (例: 「Requirements Assessment」) で記載されている箇所があります。

さらにこのファイルの後半はセッション再開時のエラーに特化しています。session-continuity.mdが「正常な再開」を扱うのに対し、error-handling.mdは「異常な再開」を扱います:

  • 成果物ファイルが存在するがaidlc-state.mdでは未完了とされている
  • aidlc-state.mdでは完了だが成果物ファイルが存在しない
  • 複数のステージが同時に「現在実行中」とマークされている

これらはすべて「状態の不整合」です。データベースのACIDトランザクションであれば、操作の原子性によってこうした不整合は原理的に発生しません。しかし、AI-DLCではaidlc-state.mdと成果物ファイルの更新がアトミックではないため、不整合が起こり得ます。error-handling.mdは、この不整合を検出し、ユーザーに確認した上で修復するための手順を定義しています。


11ファイルの全体像

commonディレクトリの11ファイルを俯瞰すると、4つの役割が見えます:

役割 ファイル 一言で言うと
入口 process-overview.md, welcome-message.md, session-continuity.md 始め方・戻り方
対話 question-format-guide.md, overconfidence-prevention.md 聞き方・聞く姿勢
統一 terminology.md, depth-levels.md 言葉・深さの共通基準
品質・対処 content-validation.md, ascii-diagram-standards.md, workflow-changes.md, error-handling.md 品質管理・変更・エラー

これらは個別のステージのルールファイルとは異なり、「AI-DLCというフレームワーク自体がどう振る舞うべきか」を定義するメタルールです。個別ステージのルールが「何を設計するか」を指示するのに対し、commonディレクトリは「どう設計するか」「どう対話するか」「何かあったらどうするか」というフレームワークの基盤を提供しています。ただし、これらすべてがMarkdownファイルのプロンプト指示であるため、技術的な強制力はAIモデルのプロンプト遵守能力に依存します。


まとめ

第9回はすべてのステージに共通するメタルールを定義するcommonディレクトリについて説明しました。今回学んだことは以下です。

  • commonディレクトリの11ファイルは、AI-DLCのすべてのステージに共通するメタルール(プロンプト指示)を定義します
  • process-overview.md / welcome-message.md / session-continuity.mdは「入口と再開」を担当し、同じワークフロー情報をAIモデル・ユーザー・再開セッションの3つの受け手に向けて提供します
  • question-format-guide.mdは「チャットで質問するな、ファイルに書け」というルールと矛盾検出の仕組みを定義しています(ただし遵守はAIモデルの判断に依存します)
  • overconfidence-prevention.mdは実運用で発生した「過信」問題への対処として追加されたガイドです。プロンプト指示によるAIモデルの行動制御にはこうした試行錯誤が伴うことを示す事例でもあります
  • depth-levels.mdはステージ選択 (実行 or スキップ) とは別に、成果物の詳細レベルを問題の複雑さに応じて適応させる仕組みを定義します
  • workflow-changes.mdの8つの変更シナリオとerror-handling.mdのエラー対処は、「順風満帆でないケース」にも対処手順を用意する設計を示します

次回予告

第10回では、inceptionディレクトリの7つのルールファイルを解説します。workspace-detection.md (唯一「承認不要」のステージの全容) 、reverse-engineering.md (8種の成果物テンプレート) 、requirements-analysis.md (プロダクトオーナーの役割) 、user-stories.md (最大ボリュームのステージ) などを1つずつ読み解いていきます。

AI-DLCを完全理解する 第8回: core-workflow.md を読み解く ― AI-DLCの最上位ルールファイル

吉田真吾 (@yoshidashingo) です。

これだけは覚えて帰ってね💡

  • core-workflow.mdはAI-DLCの最上位ルールファイルで、他のすべてのワークフローに優先するよう宣言されている
  • 冒頭の4つのMANDATORY(必須)ルールが「読み込み→検証→質問→挨拶」の基盤を形成する
  • 3フェーズの定義構造と、Key Principlesの8原則がフレームワーク全体のルールを規定する

ここからシリーズ後半に入ります。前半 (第1回〜第7回) がAI-DLCの概念と設計思想を解説したのに対し、後半 (第8回〜第12回) ではワークフロー定義ファイルそのものを読み解きます。AI-DLCの「なぜそう設計されているのか」から「実際にどう書かれているのか」へ ― 抽象から具体への転換です。

https://extravaganzarr.s3.ap-northeast-1.amazonaws.com/aidlc-image03.png

引用元:AI 駆動開発ライフサイクル:ソフトウェアエンジニアリングの再構築 | Amazon Web Services ブログ


後半パートの読み方

前半パート (第1回〜第7回) では、AI-DLCの概念と設計思想を既存の開発手法と比較しながら解説してきました。後半パート (第8回〜第12回) では視点を変え、AI-DLCのワークフロー定義ファイルそのものを1行ずつ読み解いていきます

AI-DLCは、AIモデルに対する「指示書」としてMarkdownファイルの集合体で構成されています。この指示書がどう書かれているかを知ることで、前半で解説した概念がどう実装されているかが具体的に見えてきます。

その出発点が、今回取り上げるcore-workflow.mdです。


冒頭宣言: なぜ「すべてに優先する」のか

ファイルの先頭2行はこうです:

# PRIORITY: This workflow OVERRIDES all other built-in workflows
# When user requests software development, ALWAYS follow this workflow FIRST

1行目は「このワークフローは他のすべての組み込みワークフローをオーバーライドする」。これはルールの優先順位の宣言です。2行目は「ソフトウェア開発リクエストを受けたら、常にこのワークフローを最初に実行せよ」。これは実行順序の指示です。優先順位と実行順序の2つの観点から、core-workflow.mdの最上位性を宣言しています。

なぜここまで強い宣言が必要なのでしょうか。AI-DLCはClaude Code、Amazon Q Developer CLIといったLLMを活用したAI開発ツール上で動作することを前提としています。これらのツールには、ソフトウェア開発に対するデフォルトの振る舞い (組み込みワークフロー) が存在します。たとえば「コードを書いて」と言われたらすぐにコーディングを始めるような動きです。

AI-DLCは「すぐにコードを書かない」ことが設計の根幹にあります。要件を分析し、設計を行い、承認を得てからコードを生成します。この設計意図をモデルに伝え、デフォルト動作よりもこのワークフローを優先させるために、冒頭で明示的に宣言しています。ただし、この宣言はあくまでLLMへのプロンプト指示であり、プログラミング言語のオーバーライドのように技術的に強制するメカニズムではありません。LLMが高い確率で従うことを意図した設計上の工夫です。


Adaptive Workflow Principle: 4つの評価軸

冒頭宣言の直後に、AI-DLC全体を貫く原則が1つだけ置かれています:

## Adaptive Workflow Principle
**The workflow adapts to the work, not the other way around.**

「ワークフローが仕事に適応する。仕事がワークフローに適応するのではない。」

第1回で「適応型ワークフロー」と紹介したものの原文が、この一文に集約されます。続けて、AIモデルが判断する際の4つの評価軸が定義されています:

  1. User's stated intent and clarity ― ユーザーの意図がどれだけ明確か
  2. Existing codebase state (if any) ― 既存コードベースの状態(もしあれば)
  3. Complexity and scope of change ― 変更の複雑さとスコープ
  4. Risk and impact assessment ― リスクとインパクトの評価

これらの評価軸は、core-workflow.md以降の各ステージの「Execute IF」「Skip IF」条件や、Adaptive Depth (第7回参照) の深度決定に反映されています。


4つのMANDATORY(必須)ルール: 基盤の基盤

Adaptive Workflow Principleの直後に、4つのMANDATORYルールが並びます。これらはすべてのステージの実行に先立って遵守すべきルールです。

MANDATORY 1: Rule Details Loading

**CRITICAL**: When performing any phase, you MUST read and use relevant content
from rule detail files in `.steering/aws-aidlc-rule-details/`
or `.amazonq/aws-aidlc-rule-details/` directory.

「フェーズを実行するときは、rule detailsディレクトリから関連ファイルを必ず読み込め」。

ソースファイルでは.steering/aws-aidlc-rule-details/.amazonq/aws-aidlc-rule-details/の2つのパスがorで併記されています。前者はClaude Code環境、後者はAmazon Q Developer CLI環境に対応しており、AI-DLCが複数のAI開発ツールで動作することを想定した設計です。

AI-DLCは二層構造で設計されています。core-workflow.mdが全体の流れ (ワークフロー) を定義し、rule-detailsディレクトリ配下の個別ファイルが各ステージの詳細手順を定義します。core-workflow.mdだけを読んでも「何をするか」は分かりますが、「どうやるか」の手順は個別ファイルに書かれています。

さらに、共通ルール (commonディレクトリ) として4つのファイルを「ワークフロー開始時に常に読み込め」と指定しています:

ファイル 役割
process-overview.md ワークフロー全体の技術リファレンス
session-continuity.md セッション再開のガイダンス
content-validation.md コンテンツの検証ルール
question-format-guide.md 質問フォーマットのルール

これらは次回 (第9回) で詳しく解説します。

MANDATORY 2: Content Validation

**CRITICAL**: Before creating ANY file, you MUST validate content
according to `common/content-validation.md` rules

「ファイルを作成する前に、必ずコンテンツを検証せよ」。具体的にはMermaid図のシンタックス検証、ASCII art図の標準準拠、特殊文字のエスケープ、複雑な視覚コンテンツへのテキスト代替、コンテンツパーシングの互換性テストが求められます。

AIが生成するドキュメントには、構文エラーのある図表が混入するリスクがあります。Mermaid図のシンタックスが壊れていれば描画されませんし、特殊文字がエスケープされていなければMarkdownの表示が崩れます。このルールは「生成したら必ず検証しろ」という品質チェックのルールです。

MANDATORY 3: Question File Format

**CRITICAL**: When asking questions at any phase, you MUST follow
question format guidelines.

「質問するときは、質問フォーマットガイドラインに従え」。AI-DLCには「質問ファイル方式」 (第3回で紹介した) という独自の対話方式があります。選択肢付きの質問をファイルに書き出し、ユーザーが[Answer]:タグで回答するフォーマットです。このフォーマットを全ステージで統一するためのルールです。

MANDATORY 4: Custom Welcome Message

**CRITICAL**: When starting ANY software development request,
you MUST display the welcome message.

「開発リクエストを開始するときは、ウェルカムメッセージを表示せよ」。ウェルカムメッセージは.steering/aws-aidlc-rule-details/common/welcome-message.mdに定義されたテンプレートです。

注目すべきは「This should only be done ONCE at the start of a new workflow」と「Do NOT load this file in subsequent interactions to save context space」という2つの付帯条件です。ウェルカムメッセージは1回だけ表示し、2回目以降のインタラクション (セッション再開時など) ではファイルの読み込み自体をスキップしてコンテキスト領域を節約します。これはLLMが前回の表示を記憶しているわけではなく、ワークフローの状態管理ファイル (aidlc-state.md等) から既にワークフローが開始済みであると判定できるため、再表示が不要となる設計です。LLMのコンテキストウィンドウ (一度に処理できるトークンの上限) は有限のリソースであり、AI-DLCはこの制約を意識した設計をしています。

4つのMANDATORYの構造

この4つを俯瞰すると、「読み込み → 検証 → 質問 → 挨拶」という基盤が見えます:

MANDATORY 1: Rule Details Loading    → 何を参照するか (知識の基盤) 
MANDATORY 2: Content Validation      → 何を守るか (品質の基盤) 
MANDATORY 3: Question File Format    → どう対話するか (対話の基盤) 
MANDATORY 4: Custom Welcome Message  → どう始めるか (体験の基盤) 

個別のステージの「中身」ではなく、すべてのステージに共通する「前提条件」を定義しているのが4つのMANDATORYの役割です。


3フェーズの定義構造

4つのMANDATORYの後、core-workflow.mdの本体部分が始まります。INCEPTION → CONSTRUCTION → OPERATIONSの3フェーズが順に定義されています。

共通する記述パターン

各フェーズは以下の統一されたテンプレートで記述されています:

# [Phase Name]

**Purpose**: [このフェーズの目的]
**Focus**: [焦点を示す問い]

**Stages in [Phase Name]**:
- [ステージ一覧]

各ステージもまた統一されたパターンに従います:

要素 内容
見出し ## [Stage Name] ([ALWAYS/CONDITIONAL/PLACEHOLDER])
実行条件 (CONDITIONALのみ) Execute IF: / Skip IF: のリスト
Execution 番号付きステップのリスト
承認ゲート Wait for Explicit Approval の指示
監査ログ MANDATORY: Log user's response in audit.md

この統一パターンが14ステージの基本構造となっています。ただし、ALWAYSステージにはExecute IF/Skip IFの実行条件がない、Workspace Detectionには承認ゲートがない、OPERATIONSはプレースホルダーのため簡略化されているなど、ステージ固有の変形があります。基本構造を統一することで、新しいステージを読むときの認知コストを低減することを意図した設計です。

INCEPTION Phase (7ステージ)

Inceptionフェーズには7つのステージが定義されています。第2回〜第4回で概念的に解説した内容の、ワークフロー定義上の姿です:

# ステージ 分類 承認
1 Workspace Detection ALWAYS 不要 (自動進行)
2 Reverse Engineering CONDITIONAL 必要
3 Requirements Analysis ALWAYS (深度可変) 必要
4 User Stories CONDITIONAL 必要
5 Workflow Planning ALWAYS 必要
6 Application Design CONDITIONAL 必要
7 Units Generation CONDITIONAL 必要

core-workflow.md上の特徴をいくつか拾い上げます。

Workspace Detectionの「自動進行」: ステップ7に「Automatically proceed to next phase」と明記されています。他のステージにはすべて「Wait for Explicit Approval」がありますが、ここだけ承認なしで次に進みます。第2回で解説した「情報収集が主目的であり、設計上の意思決定を伴わない」という設計思想が、ワークフロー定義上は「承認ステップの省略と自動進行」として実装されています。なお、aidlc-state.mdやaudit.mdの作成・更新はWorkspace Detection内で行われるため、ファイル操作が一切ないわけではありません。承認が不要なのは、ユーザーの設計判断を求める局面がないためです。

User Storiesの「2部構成」: User Storiesは「Planning」と「Generation」の2つのパートを持ちます。core-workflow.md上では1つのステージですが、内部で承認が2回発生します。第3回で触れた「質問→回答→分析→承認→生成」のフローが、ここで構造化されています。

Reverse Engineeringの実行条件: core-workflow.md上の条件は「Execute IF: Existing codebase detected AND No previous reverse engineering artifacts found」「Skip IF: Greenfield project (no existing code)」「Skip IF: Previous reverse engineering artifacts exist」です。条件文を文字通り読むと「既存コードがあり、かつ成果物がなければ実行する。成果物が既にあればスキップする」となります。第2回では「毎回再実行される」と解説しましたが、これはcore-workflow.mdの条件文だけでは説明がつきません。この条件がどのように運用されるかの詳細は、個別のreverse-engineering.mdに定義されています (第10回で解説) 。core-workflow.mdレベルでは「成果物の有無による条件分岐」として定義されている点を、ここでは正確に押さえておきます。

CONSTRUCTION Phase (6ステージ)

CONSTRUCTIONフェーズの定義で最も目を引くのは、Per-Unit Loopの構造です:

**Stages in CONSTRUCTION PHASE**:
- Per-Unit Loop (executes for each unit):
  - Functional Design (CONDITIONAL, per-unit)
  - NFR Requirements (CONDITIONAL, per-unit)
  - NFR Design (CONDITIONAL, per-unit)
  - Infrastructure Design (CONDITIONAL, per-unit)
  - Code Generation (ALWAYS, per-unit)
- Build and Test (ALWAYS - after all units complete)

第5回で解説したPer-Unit Loopがここで定義されています。5つのステージが「per-unit」として囲まれ、Build and Testだけがループの外に置かれています。

もう1つの特徴は、CONSTRUCTIONフェーズのステージだけに付与されている制約です:

**MANDATORY**: Present standardized 2-option completion message
as defined in [stage].md - DO NOT use emergent 3-option behavior

「標準化された2択の完了メッセージを提示せよ。3択や他の自発的なナビゲーションパターンを作るな」。これは第7回で解説した「NO EMERGENT BEHAVIOR」原則のワークフロー定義上の実装です。事実として、INCEPTIONフェーズにはこの制約がなく、各ステージ固有の承認フォーマットに委ねられています。CONSTRUCTIONフェーズでのみ明示的に制約が設けられている理由は仕様書には明記されていませんが、コード生成に近い段階ではAIの自律的な振る舞いをより厳密に制御したいという設計意図が推測されます。一方で、2択に限定することにより、想定外の状況でユーザーに適切な選択肢を提示できない可能性もあります。

OPERATIONS Phase (1ステージ)

# 🟡 OPERATIONS PHASE

**Purpose**: Placeholder for future deployment and monitoring workflows
**Status**: This stage is currently a placeholder for future expansion.

第7回で解説した通り、OPERATIONSフェーズは将来拡張用のプレースホルダーです。core-workflow.md上では、将来含まれる予定の5項目 (デプロイ、モニタリング、インシデント対応、保守、本番準備チェックリスト) が列挙されています。また「Current State: All build and test activities are handled in the CONSTRUCTION phase.」と付記されており、OPERATIONSが実装されるまでの間、ビルドとテストの活動はCONSTRUCTIONフェーズで取り扱われることが明示されています。


Key Principles: 8つの基本原則

3フェーズの定義の後に、「Key Principles」セクションが置かれています。フレームワーク全体に適用される8つの原則です:

  1. Adaptive Execution ― 第1回の適応型ワークフロー
  2. Transparent Planning ― 第1回で触れた実行計画の可視化
  3. User Control ― 第7回の承認ゲート
  4. Progress Tracking ― 第7回の進捗管理
  5. Complete Audit Trail ― 第7回の監査証跡
  6. Quality Focus ― 第7回のAdaptive Depth
  7. Content Validation ― MANDATORY 2で詳述
  8. NO EMERGENT BEHAVIOR ― 第7回のNO EMERGENT BEHAVIOR原則

前半パートで個別に解説した概念が、ここに原則として集約されています。

注目したいのは、Content ValidationとNO EMERGENT BEHAVIORです。Content Validationは4つのMANDATORYの1つとして、NO EMERGENT BEHAVIORはCONSTRUCTION各ステージの定義内で、それぞれ既に記述されています。にもかかわらず、原則としても重ねて宣言されています。重要なルールは「一度言えば十分」ではなく「繰り返し宣言する」という設計方針が窺えます。LLMに対するプロンプト指示では、重要なルールを複数箇所で繰り返すことで遵守率が高まるという経験的知見があり、この繰り返しは冗長ではなく意図的な設計と考えられます。ただし、繰り返しはコンテキストウィンドウの消費を増やすため、どこまで繰り返すかは冗長さとのトレードオフでもあります。


チェックボックス追跡: 二層の進捗管理

Key Principlesの直後に、チェックボックス追跡のルールが定義されています:

## MANDATORY: Plan-Level Checkbox Enforcement

### MANDATORY RULES FOR PLAN EXECUTION
1. NEVER complete any work without updating plan checkboxes
2. IMMEDIATELY after completing ANY step described in a plan file, mark that step [x]
3. This must happen in the SAME interaction where the work is completed
4. NO EXCEPTIONS: Every plan step completion MUST be tracked with checkbox updates

AI-DLCの進捗管理は二層構造になっています:

管理対象 記録先
Plan-Level 各ステージ内の詳細な実行ステップ 各ステージの計画ファイル
Stage-Level ワークフロー全体のステージ進捗 aidlc-state.md

重要なのは「SAME interaction」という制約です。「作業を完了したインタラクションと同じインタラクション内で、チェックボックスを更新せよ」。後からまとめて更新するのではなく、AIモデルが作業完了と同時に進捗を反映するよう指示しています。

なぜ即時更新が必要なのでしょうか。LLMベースのAIは、コンテキストウィンドウの上限に達するとセッションを新たに開始する必要があります。もしチェックボックスの更新を後回しにして、セッションの途中でコンテキストが切れたら、「どこまで終わったのか」が分からなくなります。作業完了と同じインタラクション内での即時更新を求めることで、セッション断絶に対するレジリエンス (回復力) を高める設計です。ただし、この即時更新もプロンプト指示であるため、LLMが更新を行う前にセッションが中断される可能性は残ります。


監査ログの書き方ルール

最後に、監査ログ (audit.md) の詳細な書き方ルールが定義されています。

記録のMANDATORYルール

- MANDATORY: Log EVERY user input with timestamp in audit.md
- MANDATORY: Capture user's COMPLETE RAW INPUT exactly as provided (never summarize)
- MANDATORY: Log every approval prompt with timestamp before asking the user
- MANDATORY: Record every user response with timestamp after receiving it
  1. すべてのユーザー入力をタイムスタンプ付きで記録する
  2. ユーザーの入力は要約せず、完全な原文のまま記録する
  3. 承認プロンプトは、ユーザーに提示する前にタイムスタンプ付きで記録する
  4. ユーザーの応答は、受信した後にタイムスタンプ付きで記録する

3番目と4番目に注目してください。承認プロンプトは「ユーザーに聞く前」に、応答は「受け取った後」に記録します。これにより、「いつ何を聞いたか」「いつ何が答えられたか」の時系列の順序を記録する設計です。ただし、タイムスタンプの精度はAIモデルが参照できる時刻情報の仕組みに依存します。

CRITICAL: 追記のみ、上書き禁止

- CRITICAL: ALWAYS append changes to EDIT audit.md file,
  NEVER use tools that completely overwrite its contents

audit.mdへの変更は「追記 (append) 」のみ。ファイル全体を上書きする操作は禁止。

なぜ上書きが危険なのでしょうか。LLMのツール操作には「ファイルを読んで、内容を加工して、全体を書き戻す」パターンがあります。ファイルが大きくなるとコンテキストウィンドウの制約により全体を正確に保持できず、書き戻し時に内容が欠落したり意図せず変更されるリスクがあります。追記のみに限定するルールとすることで、既存の記録が消失するリスクを大幅に低減しています。ただし第7回で述べた通り、このルールはプロンプト指示として実装されているため、ファイルシステムレベルの上書き防止機構ではありません。

監査ログのフォーマット

## [Stage Name or Interaction Type]
**Timestamp**: [ISO 8601 timestamp]
**User Input**: "[Complete raw user input - never summarized]"
**AI Response**: "[AI's response or action taken]"
**Context**: [Stage, action, or decision made]

タイムスタンプはISO 8601形式 (YYYY-MM-DDTHH:MM:SSZ) で統一されます。実際のタイムスタンプの精度は、AIモデルの時刻取得手段 (ツール呼び出し等) に依存します。User InputとAI Responseが対になる構造で、Contextがステージ名や判断内容を補足します。


ディレクトリ構造の定義

core-workflow.mdの末尾には、成果物の配置先となるディレクトリ構造が定義されています:

<WORKSPACE-ROOT>/
├── [project-specific structure]     # アプリケーションコード
│
├── aidlc-docs/                      # AI-DLCのドキュメント
│   ├── inception/                   # Inceptionフェーズの成果物
│   │   ├── plans/
│   │   ├── reverse-engineering/
│   │   ├── requirements/
│   │   ├── user-stories/
│   │   └── application-design/
│   ├── construction/                # CONSTRUCTIONフェーズの成果物
│   │   ├── plans/
│   │   ├── {unit-name}/
│   │   └── build-and-test/
│   ├── operations/                  # OPERATIONSフェーズ (プレースホルダー) 
│   ├── aidlc-state.md
│   └── audit.md

重要なルールは「アプリケーションコードはワークスペースルートに、ドキュメントはaidlc-docs/に」という分離原則です。core-workflow.mdには「Application code: Workspace root (NEVER in aidlc-docs/)」と明記されています。

この分離により、設計文書とアプリケーションコードの混在を防ぎます。一方で、コードとドキュメントが物理的に離れるため、両者の対応関係の把握にはaidlc-state.mdなどによる管理が必要になります。


まとめ

第8回はAI-DLC全体の振る舞いを規定するcore-workflow.mdの構造について説明しました。今回学んだことは以下です。

  • 冒頭宣言「OVERRIDES all other built-in workflows」は、LLMのデフォルト動作よりもこのワークフローを優先するよう指示するプロンプト上の宣言です
  • 4つのMANDATORYルール (読み込み・検証・質問形式・ウェルカムメッセージ) がすべてのステージの前提条件として規定されています
  • 3フェーズ14ステージは統一テンプレート (Execute IF / Skip IF / Execution / 承認ゲート / 監査ログ) を基本構造とし、ステージの性質に応じた変形があります
  • Key Principlesの8原則は前半パートの概念を集約し、重要なルールを繰り返し宣言する構造をとっています (コンテキスト消費とのトレードオフを伴います)
  • チェックボックス追跡の二層構造 (Plan-Level / Stage-Level) と即時更新のルールが、セッション断絶への耐性を高める設計になっています
  • 監査ログは追記のみ・上書き禁止のルールにより既存記録の消失リスクを低減し、承認前/応答後のタイムスタンプにより時系列の順序を記録します

次回予告

第9回では、core-workflow.mdが「常に読み込め」と指定するcommonディレクトリの全貌を解読します。process-overview.md、session-continuity.md、question-format-guide.md、depth-levels.mdなど、AI-DLCの基盤となる共通ルールファイル群を1つずつ読み解いていきます。

AI-DLCを完全理解する 第7回: AI-DLCを貫く設計思想 ― 適応・監査・承認のしくみ

吉田真吾 (@yoshidashingo) です。

これだけは覚えて帰ってね💡

  • OPERATIONSフェーズは将来拡張のためのプレースホルダーとして設計されている
  • Adaptive Depthは「ステージの実行有無 (二値) 」と「成果物の詳細度 (適応的) 」を分離する
  • aidlc-state.mdとaudit.mdは「再開可能性」と「追跡可能性」を高める設計になっている
  • 承認ゲートは人間がAIの判断を検証・制御するための重要なチェックポイントとして機能する
  • GitOps、SOC2/ISO27001の監査、Stage Gate Processと比較し、AI-DLCの設計原則を位置づける

第1回から第6回まで、AI-DLCの14ステージを1つずつ辿ってきました。今回は視点を変え、個々のステージを横断する設計原則 ― 適応的深度、状態管理、監査証跡、承認ゲート ― に焦点を当てます。これらの仕組みにより、AIが開発プロセスを主導する際の品質と安全性のリスクを低減する設計になっています。

https://extravaganzarr.s3.ap-northeast-1.amazonaws.com/aidlc-image03.png

引用元:AI 駆動開発ライフサイクル:ソフトウェアエンジニアリングの再構築 | Amazon Web Services ブログ


前半の総括: ステージを横断する設計原則へ

第6回のBuild and Testで「Ready for Operations: Yes/No」の判定が出たところで、CONSTRUCTIONフェーズまでの全ステージを見終えました。INCEPTIONで「何を、なぜ作るか」を決め、CONSTRUCTIONで「どう作るか」を設計してコードを生成する ― この流れを支える14ステージを、第1回から第6回まで6回にわたって解説してきました。

今回は視点を変えます。個々のステージではなく、AI-DLC全体を貫く横断的な設計原則に焦点を当てます。


OPERATIONSフェーズ: 未実装

AI-DLCの3フェーズの最後、OPERATIONSフェーズの仕様書を開くと、実質的な定義はわずか数行で、未実装な状態です。今後の拡張に期待しましょう。

Purpose: Placeholder for future operational phases (deployment, monitoring, maintenance)

Status: This phase is currently a placeholder and will be expanded in future versions.

デプロイメント計画と実行、監視と可観測性のセットアップ、インシデント対応手順、メンテナンスとサポートのワークフロー、本番準備チェックリスト ― 将来のスコープとして5項目が列挙されていますが、現時点では何も実装されていません。


Adaptive Depth: 深さを問題に合わせる

第3回で「3段階の深度 (Minimal / Standard / Comprehensive) 」として紹介したAdaptive Depthを、ここで改めて掘り下げます。これはAI-DLC全体を貫く中核的な設計原則です。

「実行するか」と「どこまで詳しく」の分離

Adaptive Depthの核心は、2つの判断を明確に分離していることにあります:

判断 性質 決定タイミング
ステージの実行有無 二値 (EXECUTEかSKIP) Workflow Planningで決定
成果物の詳細度 適応的 (問題の複雑さに応じて変化) 各ステージの実行中に判断

ステージを実行すると決まったら、そのステージで定義されたすべての成果物をAIが生成します。省略されるのは成果物そのものではなく、各成果物の中の詳細度です。

詳細度を決める6つの要因

仕様書では、詳細度を判断する際に考慮すべき6つの要因が定義されています:

# 要因 内容
1 リクエストの明確さ ユーザーの要求がどれだけ明確か
2 問題の複雑さ 解決空間がどれだけ複雑か
3 スコープ 単一ファイルか、コンポーネントか、システム全体か
4 リスクレベル エラーや漏れのインパクトの大きさ
5 利用可能なコンテキスト Greenfield/Brownfield、既存文書の有無
6 ユーザーの好み 簡潔さを好むか、詳細を好むか

仕様書はこれを「問題に必要な詳細だけを生成する ― それ以上でも以下でもない」という原則で要約しています。

具体例: バグ修正とシステム移行

同じRequirements Analysisステージでも、バグ修正とシステム移行では生成される成果物の粒度が異なります:

バグ修正の場合: - requirement-verification-questions.md: 必要最小限の確認質問 - requirements.md: 簡潔な機能要件、最小限のセクション構成

システム移行の場合: - requirement-verification-questions.md: 複数ラウンド、10以上の質問 - requirements.md: 機能要件+非機能要件の包括的な定義、トレーサビリティ、受入基準

成果物のファイル名と構造は同じですが、中身の密度が問題の複雑さに応じて変わります。

なお、詳細度の判断はAIに委ねられているため(仕様書には "Model decides" と明記されている)、AIが問題の複雑さを過大評価して不必要に詳細な成果物を生成したり、逆に過小評価して重要な詳細を省略したりするリスクがあります。また、同じプロジェクトでもセッションが異なれば判断が変わりうるため、一貫性の保証はありません。このリスクは、各ステージの承認ゲートでユーザーが成果物の詳細度を検証することで低減される設計ですが、最終的な品質判断は人間に委ねられています。


aidlc-state.md: 「どこまで進んだか」を記録する状態管理ファイル

AI-DLCのプロセスは、短くても数十分、複雑なプロジェクトでは数時間に及びます。AIとの対話セッションが中断されたり、コンテキストウィンドウ (AIが一度に処理できるテキスト量の上限) に達したりすることがあります。

aidlc-state.mdは、この中断と再開の問題を解決するための仕組みです。

記録される情報

aidlc-state.mdには、プロジェクトの現在位置が常に記録されています:

  • プロジェクト名: 何のプロジェクトか
  • 現在のフェーズ: INCEPTION / CONSTRUCTION / OPERATIONS
  • 現在のステージ: どのステージを実行中か
  • 最後に完了したステップ: どこまで終わったか
  • 次のステップ: 次に何をすべきか

セッション再開の仕組み

ユーザーが新しいセッションでAI-DLCを再開すると、AIはまずaidlc-state.mdを読みます。そして以下のプロンプトを表示します:

前回の続きから再開できます。

  • A) 中断したところから続ける
  • B) 前のステージを確認する

この再開プロセスで重要なのは、仕様書が定義するSmart Context Loading (ステージに応じた段階的なコンテキスト読み込み) です。実行するステージに応じて、読み込むべき過去の成果物が変わります:

実行するステージ 読み込む成果物
初期ステージ (Workspace Detection、Reverse Engineering) ワークスペース分析
要件・ストーリー RE成果物 + 要件
設計ステージ 要件 + ストーリー + アーキテクチャ + 設計
コードステージ すべての成果物 + 既存コード

後のステージほど読み込む情報量が増えます。これは当然で、Code Generationを再開するなら、Requirements AnalysisからInfrastructure Designまでの全設計情報が必要だからです。

ただし、成果物ファイルの読み込みだけでは、前のセッションでの議論の文脈(なぜその設計判断に至ったかの推論過程)が完全に復元されるわけではありません。また、後半のステージでは読み込むべき成果物が増大し、LLMのコンテキストウィンドウの容量制約と競合する可能性があります。Smart Context Loadingはステージに応じた段階的読み込みでこの問題を緩和する設計ですが、大規模プロジェクトでの完全なコンテキスト復元には限界があります。


audit.md: すべてを記録する監査証跡

aidlc-state.mdが「現在地」を記録するのに対し、audit.mdは「過去の全記録」を保持します。AI-DLCのcore-workflow.mdには、監査ログに関する厳格なルールが定義されています。

4つの必須ルール

  1. すべてのユーザー入力をタイムスタンプ付きで記録する: 承認だけでなく、質問への回答、変更要求、コメントのすべて
  2. ユーザーの入力を完全にそのまま記録する: 要約や言い換えは禁止。原文をそのまま記録する
  3. 承認プロンプトを記録してからユーザーに提示する: 何を聞いたかも記録する
  4. ユーザーの応答を受信後にタイムスタンプ付きで記録する: 応答を受け取った後の記録も必須

タイムスタンプの形式はISO 8601 (YYYY-MM-DDTHH:MM:SSZ) が指定されています。

なぜ「要約禁止」なのか

2番目のルールが特に厳しいものです。AIは自然言語の要約機能を持つため、ユーザーの発言を「要約して分かりやすくする」ことができます。しかしaudit.mdでは、それが明示的に禁止されています。

理由は監査の原則にあります。監査証跡の価値は「後から第三者が検証できること」にあります。AIが要約した時点で、原文の意図が変わるリスクが生まれます。「承認します」と「まあいいんじゃない」では同じ承認でもニュアンスが異なります。原文を残すことで、後からの解釈の余地を排除しています。

追記のみ、上書き禁止

audit.mdに対する操作にも制約があります。既存の内容を読んだ上で追記するのが正しい方法であり、ファイル全体を上書きすることは禁止されています。これは単なる技術的な制約ではなく、監査ログは追記専用 (append-only) であるべきという監査の基本原則を、フレームワークのルールとして規定しているものです。

ただし、audit.mdは通常のMarkdownファイルであり、ファイルシステムレベルでの上書き防止機構や暗号学的な改ざん検知は備えていません。「追記のみ」ルールはLLMへのプロンプト指示として実装されており、ユーザーがテキストエディタで直接編集することは技術的に可能です。Gitなどのバージョン管理と組み合わせることで変更履歴を追跡できますが、エンタープライズの監査システムが備えるような改ざん耐性とは性質が異なります。


承認ゲート: 人間が最後に判断する

第1回で「ほぼすべてのステージに承認ゲートがある」と述べました。ここでは、この承認メカニズムの設計を掘り下げます。

ほぼすべてのステージに承認ゲートがある

14ステージのうち、承認なしで自動的に次に進むのはWorkspace Detectionだけです (理由は第2回で述べた通り) 。OPERATIONSフェーズは現時点でプレースホルダーであるため、実質的に承認ゲートが設置されているのは12ステージです。

それ以外のすべてのステージでは、「DO NOT PROCEED until user confirms」という指示が仕様書に明記されています。しかもこれは単なるガイドラインではなく、MANDATORY (必須) として定義されています。

2択の標準フォーマット

CONSTRUCTIONフェーズの承認メッセージには、統一されたフォーマットがあります:

あなたの選択肢:

  • 変更を要求する ― レビューに基づいて修正を依頼
  • 次のステージに進む ― 承認して次へ

「3番目の選択肢を追加するな」という指示まで仕様書に書かれています (NO EMERGENT BEHAVIOR) 。これはCONSTRUCTIONフェーズに限定されたルールで、3択に限らず、AIが独自に「一部だけ承認して進む」「スキップする」のような創発的なナビゲーションパターンを生み出すことを防ぐための設計です。LLM特有の問題(プロンプトに書かれていない選択肢を自律的に生成する傾向)に対する対策と位置づけられます。

承認疲れのリスク

12ステージに承認ゲートが設置されていることは安全性の観点からは望ましいですが、ユーザーが承認判断に疲弊し、内容を十分に精査せずに承認してしまう「承認疲れ (Approval Fatigue)」のリスクがあります。これはセキュリティ分野の「アラート疲れ」と同様の構造的課題です。Adaptive Depthによってステージ自体をスキップできることが部分的な緩和策になりますが、承認ゲートの有効性は最終的にユーザーの注意力に依存するという限界は認識しておく必要があります。

過信防止の仕組み

承認ゲートと関連して、AI-DLCにはOverconfidence Prevention (過信防止) という設計文書があります。AIが十分な質問をせずに先に進んでしまう傾向への対策です。

5つの原則が定められています:

  1. 迷ったら聞け: 曖昧さがあれば質問する
  2. 網羅的にカバーせよ: カテゴリを飛ばさず全領域を評価する
  3. 回答を徹底分析せよ: ユーザーの回答に曖昧さがないか精査する
  4. フォローアップは必須: 不明瞭な回答には必ず追加質問する
  5. 曖昧さを残して進むな: すべての曖昧さが解消されるまで次に進まない

仕様書は「聞きすぎるくらい聞け」と明言しています。これは、AIが間違った前提で設計を進めるコストのほうが、質問が多すぎるコストよりも大きいという設計判断に基づいています。ただし、質問が過多になるとユーザーの集中力が低下し、かえって回答の質が下がる可能性があります。開発速度も質問・回答のラウンドトリップ分だけ遅延します。Adaptive Depthが緩和策として機能し、単純なタスクでは質問数が自然に減る設計になっていますが、質問量と回答品質のバランスは実際の運用で注意が必要です。


既存手法との比較: 適応・監査・承認の系譜

GitOps: Gitを「唯一の真実」とする

GitOpsは、Alexis Richardson (Weaveworks CEO兼共同創業者) が2017年にブログ記事「GitOps - Operations by Pull Request」で提唱した運用手法です。その後、CNCF GitOps Working GroupがOpenGitOps v1.0 (2021-2022年) として4つの原則を正式に定義しました:

# 原則 内容
1 Declarative (宣言的) システムの望む状態を宣言的に記述する
2 Versioned and Immutable (バージョン管理・不変) 望む状態をバージョン管理し不変性を担保する
3 Pulled Automatically (自動プル) ソフトウェアエージェントが望む状態を自動的に取得・適用する
4 Continuously Reconciled (継続的調整) エージェントが実際の状態を継続的に観測し、望む状態に収束させる

ArgoCD、Fluxなどのツールが、この原則に基づいてKubernetesクラスターの状態をGitリポジトリと自動同期します。

AI-DLCとGitOpsの共通点は「単一の情報源 (Single Source of Truth) 」という考え方です:

観点 GitOps AI-DLC
単一の情報源 Gitリポジトリ aidlc-state.md + audit.md
状態のテキスト表現 YAMLマニフェスト (望む状態の宣言的仕様) Markdownの成果物群 (設計意図の文書化)
差分の検知 Git diffで自動検知 セッション再開時にstate読み込み
差分の修復 Reconciliation Loopによる自動修復 ユーザーが手動でセッションを再開
変更の承認 Pull Requestレビュー 各ステージの承認ゲート

管理対象のレイヤーは異なります。GitOpsが「インフラの状態」を、AI-DLCは「設計プロセスの状態」を扱います。「現在の状態がファイルに書かれている」という設計思想には共通点がありますが、性質は異なります。GitOpsのファイルは「あるべき姿 (desired state) 」を宣言し、ソフトウェアエージェントが実環境を自動的にその状態に収束させます。AI-DLCのaidlc-state.mdは「現在の進捗 (current state) 」を記録するファイルであり、次のセッション再開時にAIがこの記録を読み取って作業を継続します。自動収束と手動再開という運用面での違いがある点は重要です。

SOC2 / ISO27001: 監査証跡の国際標準

SOC2は、AICPA (米国公認会計士協会) が2010年にSSAE 16とともに導入した、サービス組織の内部統制に関する報告フレームワークです。セキュリティ、可用性、処理の完全性、機密性、プライバシーの5つのTrust Service Criteria (元はAICPAのTrust Servicesフレームワークに由来) で構成されています。

ISO 27001は、情報セキュリティマネジメントシステム (ISMS) の国際標準です。2005年にISO/IECとして初版が発行され、2013年と2022年に改訂されています。継続的改善を要求し、その構造はPDCAサイクル (Plan-Do-Check-Act) の概念を内包しています。

両標準に共通する核心は監査証跡 (Audit Trail) です:

観点 SOC2 / ISO27001の監査証跡 AI-DLCのaudit.md
記録対象 システムアクセス、変更操作、セキュリティイベント ユーザー入力、AI応答、承認判断
タイムスタンプ 必須 ISO 8601形式で必須
原文保持 証跡の改変は禁止 ユーザー入力の要約・言い換えは禁止
追記専用 ログの削除・上書きは禁止 audit.mdの上書きは禁止 (追記のみ)
改ざん耐性 技術的保証あり (WORMストレージ、暗号的ハッシュ、アクセス制御等) なし (通常のMarkdownファイル、プロンプト指示による規定のみ)
目的 第三者による事後検証 (法的証拠能力を含む) 設計判断の追跡と再現性の確保

「後から検証可能な記録を残す」という根底の思想は共通しています。ただし、SOC2/ISO27001の監査証跡は技術的な改ざん防止機構と法的証拠能力を備えた仕組みの上に成り立っているのに対し、AI-DLCのaudit.mdはプロンプト指示による追記専用ルールに依存しています。audit.mdは開発プロセスの透明性を高めるための仕組みとして評価するのが妥当であり、SOC2/ISO27001が求める厳格な監査証跡と同等の証拠能力を持つものではありません。

Stage Gate Process: ゲートで進捗を管理する

Stage Gate Processは、Robert G. Cooperが1986年の著書『Winning at New Products』で新製品開発プロセスの研究を発表し、1990年の論文で「Stage-Gate」の名称とフレームワークを確立した、新製品開発のプロセスモデルです。ソフトウェアに限らず、製造業を含む幅広い業界で使われています。

Stage Gate Processの構造はシンプルです: Stage (作業フェーズ) Gate (判定ポイント) が交互に並びます。各Gateでは以下の4つの判定が下されます:

判定 意味
Go 次のStageに進む
Kill プロジェクトを中止する
Hold 条件が揃うまで保留する
Recycle 手戻りして修正を求める

AI-DLCの承認ゲートと対比します:

観点 Stage Gate Process AI-DLCの承認ゲート
判定者 Gatekeepers (リソースを管理する機能横断的なシニアマネージャー) ユーザー (人間)
判定の種類 Go / Kill / Hold / Recycle 承認 / 変更要求
判定基準 Must-Meet (必須) + Should-Meet (推奨) 成果物のレビュー
不合格時 Kill (中止) またはRecycle (手戻り) 変更を適用して再承認
対象 新製品開発プロジェクト全体 ソフトウェア設計の各ステージ

最大の違いはKill (中止) の有無です。Stage Gate Processでは、ゲートでプロジェクト自体を中止できます。AI-DLCの承認ゲートには中止という選択肢がありません ― 「承認する」か「変更を要求する」かの二択です。

これは対象の性質の違いを反映しています。Stage Gate Processは製品開発全体を管理するため、市場性がないと判断されればプロジェクトごと中止する判断が必要です。AI-DLCは1つのプロジェクト内の設計プロセスを管理するため、プロジェクト中止の判断はフレームワークの外にあります。Kill選択肢の欠如は、プロジェクトの前提条件が崩れた場合(予算凍結、技術的不可能性の発覚等)に問題になりえます。ユーザーはセッションを単に終了するしかなく、その場合、中止の判断理由がaudit.mdに記録されず監査証跡の連続性が途切れます。

共通しているのは「成果物が基準を満たすまで次に進めない」という基本的な発想です。Stage Gate Processではこれを「Must-Meet Criteria (必須基準) 」と呼び、AI-DLCでは「Explicit Approval (明示的承認) 」と呼びます。ただし、Stage Gateは財務指標や技術成熟度などの定量的基準をGatekeepersが組織的に判定するのに対し、AI-DLCはユーザー個人が成果物をレビューして判断するため、判定の厳密性やガバナンスのレベルは異なります。


まとめ

第7回はAI-DLCを貫く設計思想 (OPERATIONSフェーズ・適応的深度・状態管理・監査証跡・承認ゲート) について説明しました。今回学んだことは以下です。

  • OPERATIONSフェーズは意図的なプレースホルダーであり、拡張性と設計範囲の明示を両立しています
  • Adaptive Depthはステージの実行有無 (二値) と成果物の詳細度 (適応的) を分離し、6要因で詳細度を調整します。ただし詳細度の判断はAIに委ねられており、過少・過剰のリスクは承認ゲートで低減する設計です
  • aidlc-state.mdはプロジェクトの現在位置を記録し、Smart Context Loadingで効率的なセッション再開を支援します。ただし推論過程の復元やコンテキストウィンドウの容量制約という限界があります
  • audit.mdは全ユーザー入力を原文のままタイムスタンプ付きで追記し、監査証跡を形成します。ただしMarkdownファイルであり、技術的な改ざん耐性はありません
  • 承認ゲートは14ステージ中12ステージに設置され、人間の判断権を確保する設計です。一方で承認疲れのリスクもあり、有効性はユーザーの注意力に依存します
  • GitOpsの「単一の情報源」、SOC2/ISO27001の「監査証跡」、Stage Gate Processの「品質ゲート」は、それぞれAI-DLCのstate管理、audit.md、承認ゲートと共通する発想に基づいていますが、技術的保証のレベルや運用の厳密性には差があります

ここまでの7回で、AI-DLCが14ステージとこれらの横断原則によって「何を、なぜ、どう作るか」を体系的に設計するフレームワークの概要を紹介しました


次回予告

ここまでの7回で、AI-DLCの概念と設計思想の解説を終えます。第8回からは視点を大きく変え、AI-DLCのワークフロー定義ファイルを1行ずつ読み解いていきます。まずはcore-workflow.md ― AI-DLCの「憲法」とも言えるマスターワークフローファイルの構造と、4つのMANDATORYルールを解説します。