生成AIを利用した設計の詳細化
プロトタイプのように厳密な品質よりもまずは動くものを求めるケースにおいては、要件をインプットに、生成AIを利用した設計が可能です。
このときに重要なのは、生成AIとの連携による要件・設計の段階的詳細化です。 最初に以下のようなプロンプトにより生成AIに詳細化の指示を与え、次に要件を提示します。 そうすると、生成AIから詳細化すべき点や問題点が指摘されるため、それに対して追加情報を与えます。これを繰り返すことで要件を整理し、設計を具体化していけます。
実際にChatGPT (GPT-4o)を用いて設計の詳細化を繰り返し、そのアウトプットを用いて、Webアプリケーションのプロトタイプに関するバックエンド〜フロントエンドのコード生成が可能なことを確認しました。
備考
生成AIに与えた要件は、Markdown形式としました。
要件定義は多くの場合、各種Office文書として作成することが多いですが、現状の生成AIにおいてはテキスト形式のインプットの方が、文書構造の読み取りも含めて適していると考えたためです。
備考
人間と生成AIとのやりとりの量はどんどん多くなりますが、必ずしも1つのプロンプトにすべての情報を含める必要はなく、分割して構いません。生成AIは一般にセッション内の「会話履歴」を記憶しているためです。ただし、セッション内の記憶容量には上限があるため、あまりにも長い会話を続けると、以前の情報が消えてしまうことがあります。
要件の提示
あなたは優秀なWebアプリ開発者です。私がこれから要件を提示します。
内容を精査して不明な点や問題点があれば、対応方法とともに指摘してください。
# 指摘例
1. 不明な点: xxxにつ いて〜
2. 対応方法: yyyすること
# アプリケーション要件
## アプリケーション概要
画像の解析を行い、結果を表示、管理するWebアプリケーション。スマートフォンでも利用できるように、レスポンシブデザインを採用する。
## 使用技術
- バックエンドのプログラミング言語: Python
- バックエンドのフレームワーク: Django
- フロントエンドのフレームワーク: Next.js
## データディレクトリ仕様
サーバ上にルートディレクトリを作成し、当該ディレクトリ配下に、解析画像ごとに一意のディレクトリを作成する。
一意性はタイムスタンプを用いて実現する。
(以下略)
生成AIからのフィードバック例
1. 不明な点: 画像解 析の詳細仕様が不明
- どのような画像解析を行うのか(例: オブジェクト検出、顔認識、文字認識など)。
- 使用する解析ライブラリやアルゴリズム(例: OpenCV、TensorFlow、PyTorchなど)。
- 解析結果の形式(例: JSON、画像上へのラベル付け、数値データなど)。
対応方法: 解析の具体的な内容と利用予定の技術を明記する。
また、画像処理の重さによっては非同期処理(例: Celery + Django)や別サーバでの解析が必要になる可能性を検討する。
2. 不明な点: ディレクトリの設計がシンプルすぎる
- ディレクトリをタイムスタンプのみで一意にする場合、異なるリクエストが同時刻に発生した際の競合リスク。
- サーバ上のデ ィスク容量管理や古いデータの削除方法。
対応方法: タイムスタンプだけでなく、UUIDや画像ファイルのハッシュ値(SHA256など)を組み合わせてディレクトリを一意にする。
また、定期的なディスク容量の管理・古いデータ削除のためのバッチ処理を設計する。