詳細な技術論文です
このページは形式手法×AI駆動開発の詳細な技術論文です。概要から読みたい方は概要ページをご覧ください。概要ページをご覧ください。
形式手法によるAIエージェント駆動開発
— マルチエージェント協調時代における人間の役割 —
VDM-SL形式仕様をAIエージェント間の「契約」として機能させ、複数のAIエージェントがチーム開発のように協調してシステムを自律構築する新しい開発パラダイムの提案。
課題:マルチエージェント協調の「共通言語」
AIがコードを書く時代は既に到来しています。しかし、次のパラダイムは「AIをツールとして使う」段階を超え、複数のAIエージェントがチーム開発のように協調し、システムを自律的に構築することです。
ここで根本的な問いが生じます——複数のAIエージェントが協調するとき、何が「チームの共通言語」になるのか?
自然言語仕様は曖昧性を含み、テスト駆動開発は帰納的推論に基づくため、いずれもエージェント間の仕様合意メカニズムとしては機能しません。
提案:形式仕様をエージェント間の「契約」に
VDM-SL(Vienna Development Method - Specification Language)の形式仕様をエージェント間の厳密な契約として使うことで、以下が実現できます。
並行自律開発
各エージェントは自モジュール仕様+依存先IF仕様のみで独立に開発可能。他モジュールの実装コードは不要。
機械的整合性チェック
A.post ⇒ B.pre の合成可能性をツールで機械的にチェック。証明対象の性質は別途POとして扱います。
曖昧性の構造的明示
型定義・事前条件・事後条件・不変条件により、自然言語の解釈の齟齬を構造的に明示し低減。
人間の役割の再定義
人間の役割はドメインエキスパートに限定。業務ルールの定義に集中し、技術選定はAIに委ねる。
マルチエージェントアーキテクチャ
VDM-SL仕様の具体例
注文モジュールの仕様例。事前条件・事後条件・不変条件がモジュールの「契約」として機能します。
ConfirmOrderの事後条件status = <CONFIRMED>は、在庫モジュールのShipOrderの事前条件が要求するorder.status = <CONFIRMED>を満たす。これはA.post ⇒ B.preの契約整合性チェックの対象。@ext注釈はVDM-SLでは表現できない非機能要件(性能、可用性、ユーザビリティ等)を形式的に記述し、Phase 2でAIが技術選定を行う際の入力となる。
既存AI駆動開発手法との比較
既存の主要なAI駆動開発アーキテクチャはそれぞれ明確な強みを持つ一方、「正しさの根拠(source of truth)」に構造的な欠陥を抱えています。
| 手法 | 正しさの根拠 | 構造的欠陥 |
|---|---|---|
| Devin / SWE-Agent | 既存コードの挙動 | 循環論法 コードからの仕様推測がバグを固定化 |
| MetaGPT | SOP + 自然言語ドキュメント | 曖昧性蓄積 NLの劣化がフェーズごとに加算 |
| ChatDev | Chat Chain対話合意 | 再現不可能 同一入力で異なる出力 |
| GitHub Spec Kit | 構造化Markdown | 構造化された曖昧性 境界条件の暗黙化 |
| Claude Code等 | 開発者の判断 | スケーリング不能 認知的負荷の限界 |
| 本手法 | VDM-SL形式仕様 | 適用範囲限定 UI/UX・軽量タスクには不向き |
各手法の構造的欠陥の詳細
ポジショニングマップ
本手法は右上の象限——マルチエージェント × 証明対象を持つ仕様検証——に位置するアプローチです。
人間の新しい役割
このパラダイムにおいて、人間の役割はドメインエキスパートに限定されます。業務ルールと非機能要件(@ext注釈)を定義するのが人間の仕事であり、技術選定(言語・フレームワーク・DB)やアーキテクチャ設計はPhase 2でAIが自律的に行います。
従来の開発者
- コードを書く
- テストを書く
- コードレビューする
- 統合バグをデバッグする
AIエージェント時代の人間
- ビジネスルールを定義する(Phase 1)
- 非機能要件を@ext注釈で定量化する
- AIの仕様説明を評価・判断する
- 技術選定・実装はAIに委ねる(Phase 2+)
形式記法を読み書きする必要はありません。それはAIエージェントが担います。人間は、アーキテクトAIが「この仕様でモジュール分割は適切ですか?」と自然言語で説明した内容に対して、ドメインエキスパートとして判断を下します。「PythonかRubyかTypeScriptか」はドメインエキスパートの関心事ではなく、Phase 2でAIが@ext注釈に基づいて自律的に最適な技術を選択します。
Claude Code での実践方法
Claude CodeのCLAUDE.md階層ロード機構は、形式仕様駆動開発のスコープ分離と自然に対応します。ルートに全体契約、各モジュールディレクトリにモジュール仕様を配置することで、各セッションのコンテキストを最小限に保てます。
推奨ディレクトリ構成
全体契約
モジュール依存関係、共通型定義、A.post ⇒ B.preルール、@ext注釈規約を記述。全セッションで常時ロード。
仕様 + 依存先IF
自モジュール仕様+依存先インターフェース契約のみ。そのディレクトリのファイルに触れた時だけ遅延ロード。
フェーズ別規約
specs/**編集時とmodules/*/src/**編集時でClaude Codeの行動規約を自動切替。
並列開発の実行例
各セッションは互いの実装コードを見ず、インターフェース契約のみで開発。月曜にOrderを実装し金曜にInventoryを実装しても、CLAUDE.mdの形式仕様によりセッション間の整合性をチェックできる。
| 方式 | コンテキストに入るもの | 推定行数 |
|---|---|---|
| 自然言語仕様一括 | 全モジュールの要件定義書 | 500〜2,000行 |
| CLAUDE.md + VDM-SL | ルート契約 + 自モジュール仕様 + 依存先IF | 100〜300行 |
リソース
ANDO Hikaru — IID Systems — Apache License 2.0