はじめに
AIを使った開発で「動くけど、なんか違う」という経験はありませんか?その原因の多くは、要件がAIに正確に伝わっていないことにあります。
本記事では、システム要件を確実に満たすAI実装プロンプトの設計方法を紹介します。
問題:なぜAIは要件を満たせないのか
AIが要件を満たせない主な理由:
- 要件が曖昧 - 「使いやすく」「高速に」などの抽象表現
- 制約が未定義 - 使える技術・使えない技術が不明確
- 検証基準がない - 何をもって「満たした」と判断するか不明
解決策:要件駆動型プロンプト設計
ステップ1:要件の構造化
要件を以下の形式で整理します:
【機能要件】
- ユーザーがメールアドレスでログインできる
- ログイン失敗時、3回まで再試行可能
- 3回失敗後、30分間アカウントロック
【非機能要件】
- 応答時間:500ms以内
- セキュリティ:パスワードはbcryptでハッシュ化
ステップ2:プロンプトテンプレート
あなたはWebアプリケーション開発の専門家です。
## 実装する機能
{{要件リスト}}
## 技術的制約
- 言語:Python 3.11
- FW:Flask
- DB:PostgreSQL
- 使用禁止:plainテキストでのパスワード保存
## 成果物
1. 実装コード(コメント付き)
2. 単体テストコード
3. 各要件の実現方法の説明
上記をすべて満たす実装を提供してください。
ステップ3:検証と改善
生成されたコードを要件チェックリストで確認:
| 要件 | 満たしているか | 改善点 |
|------|--------------|--------|
| メールログイン | ✅ | - |
| 3回再試行 | ❌ | カウンタ未実装 |
| アカウントロック | ❌ | 時間管理なし |
未達の要件について、プロンプトを具体化:
(改善例)
「ログイン失敗時、3回まで再試行可能」
↓
「ログイン失敗時、Redisに失敗回数を記録し、
キー名は `login_fail:{email}`、TTLは30分。
3回到達でアカウントロック状態にする」
実践のコツ
- 具体例を含める - 「こういう入力の時、こう動く」を示す
- 段階的に実装 - 一度に全機能ではなく、機能単位で検証
- 失敗から学ぶ - AIの誤解パターンを蓄積し、プロンプトに反映
まとめ
AIは強力な実装パートナーですが、要件を正確に伝える設計力が成果を左右します。
- 要件を構造化する
- 制約を明示する
- 検証基準を持つ
この3つを意識することで、AIとの協働品質が劇的に向上します。
次回の開発では、ぜひ「要件駆動型プロンプト」を試してみてください。
おまけのプロンプト集(最近の推し)
- ①要件をAIプロンプト要素に分解
以下の要件を分析し、AIプロンプトに含めるべき要素を抽出してください:
【要件】
{{requirements}}
以下の形式で出力してください:
1. 役割定義:AIに求める専門性
2. 主要機能:実装すべき機能リスト
3. 制約条件:技術的・ビジネス的制約
4. 入出力仕様:データ形式と期待する動作
5. 品質基準:満たすべき品質指標
- ②要件充足型実装プロンプト作成
あなたは{{role}}です。以下の要件を完全に満たす実装を提供してください。
## 要件
{{requirements_list}}
## 制約条件
{{constraints}}
## 期待する出力
- 形式:{{output_format}}
- 含めるもの:{{includes}}
## 参考実装例
{{example}}
上記を満たす実装を、テストコード付きで提供してください。各要件がどのように実現されているかコメントで示してください。
- ③実装検証とプロンプト改善提案
以下のコードが要件を満たしているか検証してください。
## 元の要件
{{original_requirements}}
## 生成されたコード
{{generated_code}}
## 検証項目
各要件について:
1. 満たしている / 部分的 / 満たしていない
2. 満たしていない場合の理由
3. プロンプト改善案(具体的にどう書き換えるべきか)
表形式で出力してください。
- ④要件駆動型プロンプトテンプレート
# 役割
あなたは{{technical_domain}}の専門家です。
# 目的
{{project_goal}}
# 必須要件(すべて満たすこと)
{{must_requirements}}
# 推奨要件(可能な限り満たすこと)
{{should_requirements}}
# 技術的制約
- 使用言語/FW:{{tech_stack}}
- 使用不可:{{forbidden_tech}}
- パフォーマンス:{{performance}}
# 成果物
以下を含めてください:
- {{deliverable_1}}
- {{deliverable_2}}
- {{deliverable_3}}
# 期待する品質
{{quality_criteria}}
上記をすべて満たす実装を提供し、各要件の実現方法を説明してください。
他、推しのプロンプトが増えたら追加します~
あなたの推しのプロンプトもぜひ教えてください!