詳細な技術論文です
このページは形式手法×AI駆動開発の詳細な技術論文です。概要から読みたい方は概要ページをご覧ください。
形式手法によるAIエージェント駆動開発
— マルチエージェント協調時代における人間の役割 —
VDM-SL形式仕様をAIエージェント間の「契約」として機能させ、 複数のAIエージェントがチーム開発のように協調してシステムを自律構築する 新しい開発パラダイムの提案。
課題:マルチエージェント協調の「共通言語」
AIがコードを書く時代は既に到来しています。しかし、次のパラダイムは 「AIをツールとして使う」段階を超え、複数のAIエージェントがチーム開発のように 協調し、システムを自律的に構築することです。
ここで根本的な問いが生じます——複数のAIエージェントが協調するとき、 何が「チームの共通言語」になるのか?
自然言語仕様は曖昧性を含み、テスト駆動開発は帰納的推論に基づくため、 いずれもエージェント間の仕様合意メカニズムとしては機能しません。
提案:形式仕様をエージェント間の「契約」に
VDM-SL(Vienna Development Method - Specification Language)の形式仕様を エージェント間の厳密な契約として使うことで、以下が実現できます。
並行自律開発
各エージェントは自モジュール仕様+依存先IF仕様のみで独立に開発可能。 他モジュールの実装コードは不要。
機械的整合性検証
A.post ⇒ B.pre の合成可能性をツールで自動検証。 エージェント数が増えても検証コストは線形。
曖昧性の構造的排除
型定義・事前条件・事後条件・不変条件により、 自然言語の解釈の齟齬を原理的に排除。
人間の役割の再定義
人間の役割はドメインエキスパートに限定。 業務ルールの定義に集中し、技術選定は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)」に構造的な欠陥を抱えています。
各手法の構造的欠陥の詳細
ポジショニングマップ
本手法は右下の象限——マルチエージェント × 演繹的検証——に位置する唯一のアプローチ。
人間の新しい役割
このパラダイムにおいて、人間の役割はドメインエキスパートに限定されます。業務ルールと非機能要件(@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の形式仕様によりセッション間の整合性が保たれる。
リソース
Hikaru Ando — IID Systems — Apache License 2.0