【ITニュース解説】Shipping with AI is easy. Shipping tested code with AI is the hard part
2026年10月23日に「Dev.to」が公開したITニュース「Shipping with AI is easy. Shipping tested code with AI is the hard part」について初心者にもわかりやすく解説しています。
ITニュース概要
AIにコードを書かせるのは簡単だが、テスト済みでマージ可能な高品質のコードを生み出すのは難しい。この課題に対し、AIが計画・検証・レビューを複数ステップで厳格に行い、最適なコード変更を導き出すオープンソースツール「agent-doctrine」が開発された。AIに任せきりにせず、品質を確保する仕組みを提供する。
ITニュース解説
今日のソフトウェア開発において、AIがコードを書く能力は著しく向上している。しかし、AIが書いたコードを実際に製品として市場に出荷するには、まだ大きな課題が残されている。特に、AIが作成したコードが「正しい」ことを確認し、それが期待通りに「動作する」ことを証明し、開発者が安心してマージできるような高品質のプルリクエストを生成する点は、非常に難しい。単にコードを生成するだけでなく、その品質と信頼性を保証する仕組みが求められているのだ。
この難題を解決するため、sisig.aiチームは「agent-doctrine」というシステムを開発し、オープンソースとして公開した。agent-doctrineは、AIエージェントに明確な役割を与え、厳格なプロセスを踏ませることで、信頼性の高い、テスト済みのコードを生成することを目指している。これは、AIによるコード生成の可能性を最大限に引き出しつつ、品質の課題を克服しようとする試みである。
agent-doctrineのエージェントは、まるで人間の開発チームのように、一連の決まった手順で作業を進める。そのサイクルは、偵察(scout)、ゲート(gate)、計画(plan)、実装(implement)、レビュー(review)、統合(consolidate)、検証(verify)、そして出荷(ship)という段階から成る。開発者が直接対話するのは「リード」エージェントで、このリードエージェントが全体の計画を立て、他のエージェントにタスクを委任する。リードエージェント自身がコードを書くのは、明示的な指示があった場合に限られる。
このプロセスの中で、特に革新的なのが「ゲート」と呼ばれる段階だ。コード変更に着手する前に、リードエージェントは「TENETS.md」というファイルに記載された15の質問に対し、具体的な証拠を添えて回答することが義務付けられている。これは、AIが変更について深く考察し、本当に作業の準備が整っているかを確認するための重要な関門だ。例えば、「最も小さく、かつ正しい変更は何か?」「今回の変更が他の部分に与える影響範囲は?」「実際のデータで、この変更が正しく動作することをどう証明するか?」といった質問が含まれる。もしAIがこれらの質問に納得のいく回答ができない場合、コード作成へは進まず、無計画な変更や潜在的な問題を防ぐことができる。このゲートは、AIによる開発における品質保証の基盤となる。
agent-doctrineでは、リードエージェントの他にも、いくつかの専門的な役割を持つエージェントが連携して作業する。 「scout(スカウト)」は、計画を立てる前にコードベース全体を読み込み、状況を把握する。 「implementer(インプリメンター)」は、分割されたタスクごとに割り当てられ、それぞれの担当部分のコードを実装する。 厳格なモードが選択された場合、「simplifier(シンプリファイアー)」が導入され、計画をよりシンプルで実行可能な形に整理する。 さらに「adv_review(アドバーサリアルレビュー)」は、文字通り敵対的なレビュー担当者として、立てられた計画やコードの変更点(差分)に対して、あえて問題点を見つけ出し、壊そうと試みる。これにより、潜在的なバグや脆弱性を早期に発見し、コードの堅牢性を高める。 これらのエージェント間の情報伝達は、「HANDOFFS.md」という固定形式のファイルを通じて行われる。この仕組みにより、異なるAIモデル(例えばClaude Codeで作成した仕様をCodexやCursorが受け取るなど)間でのスムーズな連携が可能になり、特定のAIモデルに依存しない柔軟な開発環境を実現する。
agent-doctrineには、「Fast(高速)」モードと「Rigorous(厳格)」モードの二つの作業モードが用意されており、リードエージェントが作業開始時にどちらかを選択するようユーザーに尋ねる。 「Fast」モードは、「ゲート」プロセスと、コードの変更点ごとのレビューに焦点を当てることで、比較的迅速なコード変更を可能にする。 一方、「Rigorous」モードは、Fastモードの機能に加え、計画の簡素化(simplifier)、敵対的計画レビュー(adv_review)、そしてコード生成前の人間による承認プロセスが追加される。このモードは、より多くの時間とリソースを要するものの、生成されるコードの品質と信頼性を最大限に高めることを目的としている。特に、ミッションクリティカルなシステムや複雑な変更を扱う場合に、この厳格なアプローチが有効となる。
agent-doctrineは、AIエージェントが生成する「文章」の品質にも細かく配慮している。AIが作成する返答、技術仕様、プルリクエストの本文、コミットメッセージなどが、読みやすく、高品質なものとなるよう、簡素化された技術英語のルールが適用される。具体的には、能動態の使用、一文を短く保つこと(8〜20語)、結論を先に述べること、そして特定の専門用語や装飾的な記号の使用を避けることなどが定められている。これにより、AIが生成するドキュメントも、人間が理解しやすく、プロフェッショナルな品質が保たれる。
agent-doctrineは、AIが単にコードを書くだけでなく、ソフトウェア開発のライフサイクル全体を通じて、品質と信頼性を確保するための包括的なアプローチを提示している。このシステムはGitとBunを必要とするが、比較的容易に試すことができる。リポジトリをクローンし、必要なツールをインストールした後、環境変数を設定してスクリプトを実行するだけで準備が完了する。その後、AIエージェントに仕様書を与え、「fastかrigorousか?」と答えることで、この先進的なAI駆動型開発プロセスを体験できる。agent-doctrineはMITライセンスでオープンソース化されており、特定の開発スタイルに最適化された設計ではあるが、「TASTE.md」ファイルを編集することで、ユーザー自身のチームの作業方法に合わせて自由にカスタマイズすることが可能だ。これは、AIを活用した未来のソフトウェア開発のあり方を示す、具体的な一歩と言えるだろう。