AI Agent-Driven Development Using Formal Methods
— Role of Humans in the Multi-Agent Collaboration Era —
VDM-SL形式仕様をAIエージェント間の「契約」として機能させ、 複数のAIエージェントがチーム開発のように協調してシステムを自律構築する 新しい開発パラダイムの提案。
Challenge: "Common Language" for Multi-Agent Collaboration
AIがコードを書く時代は既に到来しています。しかし、次のパラダイムは 「AIをツールとして使う」段階を超え、複数のAIエージェントがチーム開発のように 協調し、システムを自律的に構築することです。
ここで根本的な問いが生じます——複数のAIエージェントが協調するとき、 何が「チームの共通言語」になるのか?
自然言語仕様は曖昧性を含み、テスト駆動開発は帰納的推論に基づくため、 いずれもエージェント間の仕様合意メカニズムとしては機能しません。
Proposal: Formal Specification as "Contract" Between Agents
VDM-SL(Vienna Development Method - Specification Language)の形式仕様を エージェント間の厳密な契約として使うことで、以下が実現できます。
Parallel Autonomous Development
各エージェントは自モジュール仕様+依存先IF仕様のみで独立に開発可能。 他モジュールの実装コードは不要。
Mechanical Consistency Checking
A.post ⇒ B.pre の合成可能性をツールで機械的にチェック。 証明対象の性質は別途POとして扱います。
Structural Exposure of Ambiguity
型定義・事前条件・事後条件・不変条件により、 自然言語の解釈の齟齬を構造的に明示し低減。
Redefinition of Human Roles
人間の役割はドメインエキスパートに限定。 業務ルールの定義に集中し、技術選定はAIに委ねる。
ここでいう「機械的検証」は、主にVDM-SL仕様の構文・型チェック、証明責務生成、 およびエージェント間契約の整合性チェックを指します。VDM-SL仕様や生成テストが存在すること自体は、 生成コード全体が数学的に証明されたことを意味しません。
Multi-Agent Architecture
VDM-SL Specification Example
注文モジュールの仕様例。事前条件・事後条件・不変条件が モジュールの「契約」として機能します。
ConfirmOrder の事後条件 status = <CONFIRMED> は、 在庫モジュールの ShipOrder の事前条件が要求するorder.status = <CONFIRMED> を満たす。 これが A.post ⇒ B.pre の契約整合性チェック。@ext 注釈はVDM-SLでは表現できない非機能要件(性能、可用性、ユーザビリティ等)を 形式的に記述し、Phase 2でAIが技術選定を行う際の入力となる。
Comparison with Existing AI-Driven Development Approaches
既存の主要なAI駆動開発アーキテクチャはそれぞれ明確な強みを持つ一方、 「正しさの根拠(source of truth)」に構造的な欠陥を抱えています。
Detailed Critique of Each Approach
Positioning Map
This approach sits in the lower right quadrant — Multi-Agent × specification verification with proof targets.
New Human Role
このパラダイムにおいて、人間の役割はドメインエキスパートに限定されます。業務ルールと非機能要件(@ext注釈)を定義するのが人間の仕事であり、 技術選定(言語・フレームワーク・DB)やアーキテクチャ設計はPhase 2でAIが自律的に行います。
従来の開発者
- コードを書く
- テストを書く
- コードレビューする
- 統合バグをデバッグする
AIエージェント時代の人間
- ビジネスルールを定義する(Phase 1)
- 非機能要件を@ext注釈で定量化する
- AIの仕様説明を評価・判断する
- 技術選定・実装はAIに委ねる(Phase 2+)
形式記法を読み書きする必要はありません。それはAIエージェントが担います。 人間は、アーキテクトAIが「この仕様でモジュール分割は適切ですか?」と 自然言語で説明した内容に対して、ドメインエキスパートとして判断を下します。 「PythonかRubyかTypeScriptか」はドメインエキスパートの関心事ではなく、 Phase 2でAIが@ext注釈に基づいて自律的に最適な技術を選択します。
Claude Code Integration
Claude CodeのCLAUDE.md階層ロード機構は、 形式仕様駆動開発のスコープ分離と自然に対応します。 ルートに全体契約、各モジュールディレクトリにモジュール仕様を配置することで、 各セッションのコンテキストを最小限に保てます。
Recommended Directory Structure
Full Contract
モジュール依存関係、共通型定義、A.post ⇒ B.preルール、@ext注釈規約を記述。 全セッションで常時ロード。
Specification + Dependent IF
自モジュール仕様+依存先インターフェース契約のみ。 そのディレクトリのファイルに触れた時だけ遅延ロード。
Path-based Rules
specs/**編集時とmodules/*/src/**編集時で Claude Codeの行動規約を自動切替。
Parallel Development Execution Example
各セッションは互いの実装コードを見ず、インターフェース契約のみで開発。 月曜にOrderを実装し金曜にInventoryを実装しても、 CLAUDE.mdの形式仕様によりセッション間の整合性が保たれる。
Resources
ANDO Hikaru — IID Systems — Apache License 2.0