サブエージェントの実例
ここでは実プロジェクトで用いられている、以下のサブエージェントの実例を紹介します。
batch-architect: 方式設計や開発標準に従ったバッチ設計を行うサブエージェントtest-engineer: テストを実行し、実行結果をレポートするサブエージェントtroubleshooter: 実装時に問題が起こったときに原因分析を行うサブエージェント
サブエージェントの役割と動作原理
サブエージェントは親エージェントと同等の能力を持ち、個別に独自のシステムプロンプトを定義することができます。以下では、各サブエージェントがどのような思考プロセスで動作し、どのように協調して問題を解決するかを詳しく解説します。
batch-architectの設計哲学と動作原理
batch-architectエージェントは、設計の機械化と一貫性の番人として機能します。このエージェントの最も重要な特徴は、設計における曖昧さを完全に排除することです。人間の設計者は「この方法でもいいし、あの方法でも実装可能」といった柔軟な判断を下しがちですが、batch-architectは必ず単一の明確な設計決定を下します。
このエージェントは2つの動作モードを持っています。MODE A(詳細設計生成)では、高レベルの機能仕様書を読み込み、プロジェクトの設計ルール(BATCH.mdに定義)と既存の実装パターンを参照しながら、機械的に実行可能な詳細設計を 生成します。この過程で特に重要なのは、契約の固定化という概念です。メソッド名、SQLのnamespace、データ型、ファイルパスなど、全ての技術的詳細は「MUSTである」という形で定義され、後続のフェーズで一切の変更が許されません。
MODE B(実装計画生成)では、承認された詳細設計を基に、TDD(テスト駆動開発)の原則に従った段階的な実装計画を生成します。この計画は、依存関係を考慮した論理的な順序(モデル→マッパー→プロセッサー→設定→統合テスト)で構成され、各ステップでRED→GREEN→REFACTORのサイクルを明確に定義します。
batch-architectの設計プロセスにおけるポイントは、設計判断の文書化です。例えば、日付フォーマットの処理をSQL側で行うかアプリケーション側で行うかという判断において、選択された方法だけでなく、なぜその方法を選んだのかという理由も記録されます。これにより、将来のメンテナンスや拡張時に、設計意図を正確に理解できるようになっています。
test-engineerの検証メカニズム
test-engineerエージェントは、実証主義的な品質の門番として機能します。このエージェントの基本的な思考は「コードが正しいかどうかは、テストの実行結果だけが証明する」というものです。仕様書や設計書がどう書かれていても、実際のテスト結果が全てを決定します。
このエージェントの動作は、TDDサイクルと密接に連携しています。RED phaseでは、新しく書かれたテストが期待通りに失敗することを確認し、GREEN phaseでは、実装コードがテストを通過することを検証します。この過程で重要なのは、要件との整合性検証です。test-engineerは、機能仕様書(YAMLファイル)に記載された全ての要件に対して、対応するテストケースが存在し、それらが全て通過することを確認します。
エラーが発生した場合の対処も体系化されています。例えば、外部キー制約違反(EHP-01)が発生した場合、test-engineerは自動的にdb-expertエージェントに問題を委譲し、必要なテストデータの補完を依頼します。このようなエラーパターンの認識と自動対処により、多くの問題を人間の介入なしに解決できます。
test-engineerの特徴的な機能として、テストデータの整合性分析があります。Spring Batchのテストでは、データベースのスキーマ全体を理解し、直接参照していないテーブルも含めて、全ての外部キー制約を満たすテストデータを準備する必要があります。test-engineerは、この複雑な依存関係を自動的に分析し、必要なデータセットを特定します。
troubleshooterの問題解決アプローチ
troubleshooterエージェントは、プロジェクトの知識ベースを活用する問題解決の専門家として機能します。このエージェントの基本的なア プローチは、「車輪の再発明をしない」という原則に基づいています。新しい問題に直面したとき、まず既存のコードベースから似た状況で成功している実装例を探し、それと比較することで解決策を導き出します。
troubleshooterの問題解決プロセスは、科学的方法論に基づいています。まず、エラーログやスタックトレースから問題の仮説を立てます。次に、プロジェクトのドキュメントや実装例から関連する情報を検索し、仮説を検証します。そして、動作している実装と失敗している実装を詳細に比較し、決定的な違いを特定します。
このエージェントの強力な機能の1つは、コンテキスト理解能力です。単にエラーメッセージのキーワードを検索するだけでなく、プロジェクト固有のアーキテクチャやルールを理解した上で、適切な解決策を提案します。例えば、ApplicationContextの読み込みエラーが発生した場合、単にBeanの依存関係を解決するだけでなく、プロジェクトのテスト設計パターンに従った@TestConfigurationの実装を提案します。
troubleshooterは、エビデンスベースの報告を重視します。提案する解決策には必ず、動作している実装例からの具体的なコードスニペットが含まれ、なぜその解決策が有効なのかが明確に説明されます。これにより、解決策の妥当性が客観的に評価でき、将来同様の問題が発生した際の参考資料としても活用できます。