AI駆動開発 & 仕様駆動開発
この記事の内容
- AIエージェントを活用した開発フロー(要件定義・設計・実装・プルリクエスト)の全体像を解説します
- 仕様駆動開発(SDD)とAI駆動開発を組み合わせることで、品質と効率を両立する手法を紹介します
- コンテキスト管理の重要性と、フロントエンド開発での作業分割の工夫について説明します
- テスト駆動開発(TDD)をAI開発に組み込むプロセスを具体的に解説します
- 現状の課題と、AIを活用した開発組織が継続的改善を進めていく重要性について触れます
AI駆動開発の概要と全体像
AI駆動開発とは、AIエージェントに指示を与えてプロトタイプや成果物を作成し、関係者とのディスカッションを重ねながら開発を進める手法です。AIを使ってアイデアを具体的な形にし、その成果物をベースに議論するというスタイルは、多くの現場で取り入れられつつあります。
一方で、ある程度の規模になってくると、AIへの指示の出し方や成果物の品質に課題が生じやすくなります。手戻りが発生したり、調整に時間がかかったりするケースも珍しくありません。こうした課題をどうコントロールするかは、常に試行錯誤が必要なテーマです。
今回紹介するのは、仕様駆動開発(SDD: Specification-Driven Development)を採用したAI駆動開発の実態と課題についてです。あるイベントでの登壇内容をベースにした記事から、実践的な開発フローが公開されており、非常に参考になる内容です。
開発フローの4つのステップ
AI駆動開発のフローは、以下の4つのステップで構成されています。
- 要件定義
- 設計
- 実装
- プルリクエスト
このフローにおける重要なポイントは、コードを書く前にしっかりと仕様を定義してからAIに開発を任せるという「仕様駆動開発(SDD)」の考え方を採用していることです。全体の進行管理には「Miro」などのツールが活用されています。
AIに対して「これを作って」と丸投げするだけでなく、フローやドキュメントをきちんと整備し、段階的に開発を進めることが、品質と効率の両立につながります。
コンテキスト管理の重要性
AI開発において重要な概念の一つが「コンテキスト管理」です。コンテキストとは、AIの作業履歴や関連情報のまとまりを指します。
コンテキストが不足するとAIの性能が低下することがあります。そのため、どこまでを同一コンテキストとして扱い、どこから別コンテキストに分割するかを慎重に設計することが求められます。コンテキストの適切な分割は、AI駆動開発の品質を大きく左右する重要な設計判断です。
要件定義フェーズ:モック作成と早期レビュー
要件定義フェーズでは、プロダクトリクエストドキュメントやデザインドックを活用します。このフェーズでAIを使い、画面や機能の仮モデルであるモックを生成します。
その後、レビュアーが複数のモックを確認し、フィードバックをもとにドキュメントを更新します。実装に入る前の早い段階で関係者のレビューを受けることで、仕様を十分に詰めることができ、後戻りを大幅に削減できます。
設計フェーズ:API設計書の位置づけ
設計フェーズでは、最初にバックエンド側(API)の設計書を作成します。API設計書は、データベース設計やフロントエンド設計、その他の詳細設計にも参照される「最重要ドキュメント」として位置づけられています。
この順序を守ることで、開発全体の設計品質が向上し、効率的な進行が可能になります。また、AIが現在どの作業を進めているかが分かるよう、全体設計書も用意されています。AIが参照すべき情報を明確に整理しておくことが、スムーズな開発につながります。
実装フェーズ:TDDとドキュメント参照
実装フェーズでは、事前に作成した設計書を参照しながらAIにコードを書かせます。この際、テスト駆動開発(TDD)のプロセスが徹底されています。
具体的な流れは以下のとおりです。
- まず「落ちるテスト(失敗するテストケース)」を書く
- そのテストが通るように実装を進める
- 実装が完了したらコミットする
フロントエンド開発では参照すべきドキュメントが多く、AIのコンテキストウィンドウが不足しがちです。この問題に対処するため、作業範囲を分割する方針書を用意し、一度に処理する範囲を適切にコントロールする工夫がされています。
プルリクエストフェーズ:AIと人間の協調レビュー
プルリクエストフェーズでは、コードとチケット(JiraなどのIssue管理システム)を連携して管理します。AIが自動的にプルリクエストを作成し、レビューはAIと人間の両方が担当します。
AIによる自動レビューと人間によるレビューを組み合わせることで、効率的かつ品質の高いレビュー体制が実現されています。
現状の課題と今後の展望
現状の課題としては、作業スコープの管理や実装者・レビュアーの負荷の問題が挙げられています。AIを活用した開発フローを導入しただけでは解決しない課題も多く、継続的な改善が不可欠です。
これらの課題を一つずつ解決しながら、AIによる開発プロセスをさらに洗練させていく取り組みが進められています。フローの形式化と継続的な改善を繰り返すことが、AI駆動開発を機能させるための鍵と言えます。
まとめ
今回は、仕様駆動開発(SDD)を採用したAI駆動開発の実態と課題についてご紹介しました。
要件定義・設計・実装・プルリクエストという4つのステップに沿って、コードを書く前に仕様を固め、AIに段階的に開発を任せるフローは、品質と効率の両立を目指す上で非常に理にかなったアプローチです。また、コンテキスト管理や作業スコープの分割といった工夫が、AI駆動開発の実用性を高める重要な要素であることも分かりました。
AIをプロトタイプ作成のみに活用している段階から、こうした全体フローをきちんと設計してAIを組み込む段階へ。このステップを踏むことができる組織とそうでない組織の間には、今後大きな差が生まれてくるでしょう。開発を主に行う組織では、AIと仕様駆動開発を積極的に取り入れ、継続的に改善し続けることがますます重要になると感じます。