はじめに
今回はAI駆動開発の各工程でどのように開発を行っていけばいいかを具体的に考えてみました。
Input/Outputを定義したAI駆動開発
AI駆動で開発を行う際に、各工程の「Input」と「Output」を明確に定義することで、AI利用をしている工程をモジュールのように変更可能にする「AI-IODF(AI-Input Output Driven Framework)【仮】」を考えてみました。
AI技術は移り変わりが早く、各工程で新しいAIツールを使用する場合でも対応できるようにする必要があります。
Inputではプロンプト(Markdown)やJson or YAMLファイル、画像、コードを使用します。
Outputでは、AIの出力内容形式を定義してそれに沿った結果(Markdown)、Json or YAML、画像、コードを使用します。
※ 新規開発〜保守・運用を想定しています
※ AI活用を提案するためにすべてアジャイル開発とせず保守運用のみスクラムを採用しています
Input/Outputの定義
1-1~3-4の各項目でInput/Outputの定義を行う必要があります。(TODO: Input/Outputの定義)
Input/OutputともにMarkdown形式、Json、YAML、画像を使用します。
- Markdown形式:定義書、設計書、AI用のプロンプト(Input)
- Json / YAML:OpenAPI仕様書など
- 画像:UIデザイン
- コード:ソースコード
AI-IODF(AI-Input Output Driven Framework)【仮】
現在使用可能なAIツールを使用する場合のAI駆動開発の流れを検討します。
定義書や設計書は基本的にGitで履歴を管理し「NoteBookLM」に保持させることで、AIによる要約や検索を行えるようにします。(ビジネスモデリング・要件定義以降のフェーズでもNoteBookを仕様確認用のソースにする)
1. ビジネスモデリング・要件定義
- 1-1. 市場調査
- 【Input】:企画書(Markdown)、調査用プロンプト(Markdown)
- 【Output】:市場調査結果レポート(Markdown)
- 【使用ツール】:ChatGPT or Gemini
- 【実施内容】:ChatGPT or Geminiの「DeepResearch」を使用して、対象とするビジネスに対して、市場調査、ニーズ把握、トレンドを把握する
- 1-2. 要求定義
- 【Input】:市場調査結果レポート(Markdown)、要求用プロンプト(Markdown)
- 【Output】:要求定義書(Markdown)
- 【使用ツール】:NoteBookLM、ChatGPT or Gemini
- 【実施内容】:市場調査結果レポートを「NoteBookLM」に入れてNotebookを作成・情報の抽出を行い、ChatGPT or Geminiを使用して、ステークホルダーが「何を望んでいるのか」を明文化する
- 1-3. 要件定義
- 【Input】:要求定義書(Markdown)、要件用プロンプト(Markdown)
- 【Output】:要件定義書(Markdown)
- 【使用ツール】:NoteBookLM、ChatGPT or Gemini
- 【実施内容】:要求定義書を「NoteBookLM」に入れてNotebookを作成・情報の抽出を行い、ChatGPT or Geminiを使用して、要望からシステム化するための機能などを定義する
- 1-4. UI/UX作成
- 【Input】:要件定義書(Markdown)、UI/UX用プロンプト(Markdown)
- 【Output】:画面デザインのプロトタイプ(画像 or コード)
- 【使用ツール】:v0、FigmaAI
- 【実施内容】:UIデザイン作成用のAIツールである「v0」や「FigmaAI」を使用して、要件定義で定義された機能要件などから、各画面のアプリデザインを作成する
2. プロトタイピング・実装・テスト
- 2-1. 基本設計
- 【Input】:要件定義書(Markdown)、画面デザインのプロトタイプ(画像 or コード)、基本設計用プロンプト(Markdown)
- 【Output】:基本設計書(Markdown)
- 【使用ツール】:NoteBookLM、ChatGPT or Gemini
- 【実施内容】:ChatGPT or Geminiを使用してNoteBookLMにある要件定義書から取得した情報とプロンプトから、画面構成や機能の処理フロー、外部連携の設計などシステム化するために必要なものを具体的に設計する
- 2-2. 詳細設計
- 【Input】:基本設計書(Markdown)、詳細設計用プロンプト(Markdown)
- 【Output】:詳細設計書(Markdown)
- 【使用ツール】:NoteBookLM、ChatGPT or Gemini
- 【実施内容】:基本設計書を「NoteBookLM」に入れてNotebookを作成・情報の抽出を行い、ChatGPT or Geminiを使用して、画面や機能の実装方針やデータ構造、エラーハンドリングなど実装時に必要な内容を設計する
- 2-3. テスト設計 (品質を担保するためにTDDを想定)
- 詳細設計から、単体テストを設計・作成する
- 【Input】:詳細設計書(Markdown)、単体テスト用プロンプト(Markdown)
- 【Output】:単体テスト仕様書(Markdown)
- 【使用ツール】:NoteBookLM、ChatGPT or Gemini
- 【実施内容】:詳細設計書を「NoteBookLM」に入れてNotebookを作成・情報の抽出を行い、ChatGPT or Geminiを使用して、単体テスト仕様書を作成する
- 基本設計から、結合テストを設計・作成する
- 【Input】:基本設計書(Markdown)、結合テスト用プロンプト(Markdown)
- 【Output】:結合テスト仕様書(Markdown)
- 【使用ツール】:NoteBookLM、ChatGPT or Gemini
- 【実施内容】:ChatGPT or Geminiを使用してNoteBookLMにある基本設計書から取得した情報とプロンプトから、ChatGPT or Geminiを使用して、結合テスト仕様書を作成する
- 要件定義から、総合テストを設計・作成する
- 【Input】:要件定義書(Markdown)、総合テスト用プロンプト(Markdown)
- 【Output】:総合テスト仕様書(Markdown)
- 【使用ツール】:NoteBookLM、ChatGPT or Gemini
- 【実施内容】:ChatGPT or Geminiを使用してNoteBookLMにある基本設計書から取得した情報とプロンプトから、ChatGPT or Geminiを使用して、結合テスト仕様書を作成する
- 詳細設計から、単体テストを設計・作成する
- 2-4. 実装
- 【Input】:基本設計書(Markdown)、詳細設計書(Markdown)、単体テスト仕様書(Markdown) ※ TDDを想定、実装用プロンプト(Markdown)
- 【Output】:ソースコード
- 【使用ツール】:Devin、DeepWiki
- 【実施内容】:詳細設計書をもとにDevinを使用して以下を実装する ※実装後はWikiを生成してドキュメントとして活用する
- 基本設計書をもとにアプリ全体の骨組み・基盤を実装する
- 詳細設計書、単体テスト仕様書をもとに実装する機能のテストコードを作成する
- 詳細設計書、テストコードをもとに機能実装を行う
3. 保守・運用 (スクラム開発)
- 3-1. 追加機能の検討 (要求・要件定義、プロダクトバックログの整理)
- 改善要望や市場調査(1-1参照)で判明したトレンド・ニーズから、要求の明文化(1-2参照)をする
- 「1. ビジネスモデリング・要件定義」の1-1, 1-2を参照
- 要求から、要件定義を作成する
- 「1. ビジネスモデリング・要件定義」の1-3を参照
- 要件定義から、プロダクトバックログを作成・追加する
- 【Input】:要件定義書(Markdown)
- 【Output】:プロダクトバックログアイテム(jira:ストーリー、タスク、バグなど)
- 【使用ツール】:Jira、 ChatGPT or Gemini
- 【実施内容】:要件定義書からプロダクトバックログアイテムの内容をChatGPT or Geminiを使用して作成、Jiraにチケットを作成
(VSCode×Jira MCPでチケットを作成してもらうことも検討)
- 改善要望や市場調査(1-1参照)で判明したトレンド・ニーズから、要求の明文化(1-2参照)をする
- 3-2. 計画(スプリントプランニング)
- 【Input】:プロダクトバックログアイテム(jira:ストーリー、タスク、バグなど)
- 【Output】:スプリントバックログ、スプリント計画
- 【使用ツール】:Jira
- 【実施内容】:追加機能の検討で作成されたプロダクトバックログから、修正・機能実装するバックログアイテムを選択してスプリントの計画を立てる
- 3-3. 開発 (スプリント)
- 【Input】:スプリントバックログ
- 【Output】:必要な設計書の更新、ソースコード
- 【使用ツール】:NoteBookLM、DeepWiki、Devin
- 【実施内容】:計画(スプリントプランニング)から、スプリントを実施してNoteBookLMの設計書更新・機能実装する ※ソースコード更新後はDeepWikiを使用して変更をWikiに取り込む
- 3-4. リリース
- 【Input】:ソースコード
- 【Output】:ストアにアプリリリース
- 【使用ツール】:Devin ※ 部分的に人手も必要
- 【実施内容】:開発(スプリント)で追加された機能をリリースする
終わりに
今回はAI駆動開発の各工程でどのようにAIを使っていくか考えてみました。
まだよく利用がわかっていないAIツールやより効果的な活用方法もあると思うので、調べていきたいと思います!
参考
https://www.ai-driven.dev/
https://note.com/masakikono/n/n66501ecd6a88