Claudeで基本設計書を作成する:プロンプト設計のコツ
基本設計書の作成は、開発プロジェクトの品質を左右する重要なタスクです。しかし手作業では記述ゆれや漏れが発生しやすく、要件定義の不備がそのまま実装品質に影響します。
Claudeを活用すれば、設計書の品質を大幅に向上させられます。 記述の一貫性・要件の網羅性・実装可能性を高めるには、適切なプロンプト設計が必須です。
プロンプト成功の「4要素」
Claudeで品質の高い設計書を作成するには、以下の4要素を必ず含めてください。
| 要素 | 内容 | 例 |
|---|---|---|
| 目的 | 何の設計か | アーキテクチャ/API/DB等 |
| 前提条件 | 技術スタック、制約 | Node.js、PostgreSQL、初期ユーザー1万 |
| 設計の範囲 | 含める・含めない機能 | 注文機能は対象、レコメンド機能は除外 |
| 出力形式 | 見出し構成、図表 | Markdown、ER図はMermaid形式 |
「何を・どの程度・どんな形で」を明記するだけで、出力精度は劇的に向上します。
実践例:API設計書プロンプト
以下の機能要件から、REST API の基本設計書を作成してください。
【目的】注文管理機能のAPI設計書
【機能要件】
- ユーザーが商品をカートに追加
- カートの内容を確認・修正可能
- 注文を確定し決済を実行
【前提条件】
- APIバージョン:v1
- 認証:JWT(Bearer Token)
- レスポンス形式:JSON
- エラーハンドリング:エラー内容・コードをJSONで返す
【設計の範囲】
対象API:POST /orders、GET /orders/{id}、PUT /orders/{id}/items
対象外:決済関連API(Stripe側が処理)
【出力形式】
- エンドポイント一覧(表形式)
- 各エンドポイントの詳細:
* リクエスト・レスポンス仕様
* ステータスコード一覧
* エラーハンドリング例
- セキュリティ考慮事項(認可、入力検証等)
効果的なフィードバック方法
出力がズレたら、単に「修正して」ではなく、問題点と具体的な修正内容を伝えることが重要です。
❌ 悪い例:
「セキュリティが不十分です」
✅ 良い例:
指摘:認可(Authorization)の仕様がない
問題点:ユーザーが他人の注文データにアクセスできる
修正内容:「共通仕様」セクションに以下を追加
- 自分の注文のみアクセス可能
- 管理者は全注文閲覧可能
- 403 Forbiddenの具体例
よくある問題と対策
| 問題の種類 | よくある原因 | フィードバック方法 |
|---|---|---|
| 曖昧な仕様 | 出力形式の不在、用語定義の漏れ | 「〜の定義が不明確。具体例を3つ追加してください」 |
| 要件の漏れ | 前提条件の不足 | 「以下の非機能要件を加えてください:パフォーマンス、セキュリティ...」 |
| 実装に寄った設計 | 技術スタック未指定 | 「技術スタックに合わせた設計に修正してください」 |
段階的な精度向上プロセス
完璧な設計書を一度で生成するのは難しいです。段階的に改善する方法が現実的です。
【STEP 1】初期生成
→ 要件定義書を渡し、大まかな構成案を生成
→ 出力:各セクションの見出しと骨組み
【STEP 2】内容確認・修正指示
→ 漏れた要件がないか確認
→ 実装担当者視点から必要な詳細度をチェック
→ 具体的なフィードバックを返す
【STEP 3】最終レビュー
→ 実装可能レベルか判定
→ 体裁の統一と可読性を確認
→ 本番利用可能な設計書に到達
複数回のフィードバックを通じて、設計書の品質(正確性・網羅性・実装可能性)を段階的に向上させられます。
まとめ:効率と品質を両立させる
Claudeで設計書作成を成功させる4つのポイント:
-
プロンプトに「4要素」を組み込む
目的・前提条件・設計の範囲・出力形式を明確にすることで、要件の曖昧さを排除 -
非機能要件を徹底的に含める
スケーラビリティ、セキュリティ、パフォーマンス等の検討項目を明記して網羅性UP -
具体的なフィードバックで精度向上
問題点と修正内容をセットで伝え、複数回の反復で設計の完成度を高める -
実装チーム視点でのレビュー
「それで実装できるか」という実装可能性を最終判定し、品質を担保
Claudeは要件の構造化と網羅性向上の強力なツールです。AI生成で初期案を高速に作成し、人間レビューで実装可能性と要件精度を確保する。このハイブリッド手法により、品質の高い設計書作成が実現できます。
Tips:基本設計書をClaudeで作成する際は、要件定義書(RFD)や既存システム仕様を事前に準備しておくと、プロンプト精度がさらに向上します。