基本設計と詳細設計 — 2つの設計フェーズの違いと役割
「設計」と一口に言っても、実務では基本設計と詳細設計という2つのフェーズに分かれます。 この2つの境界が曖昧だと、基本設計で細かいことを議論しすぎたり、詳細設計でアーキテクチャの根本を覆したり、非効率な進め方になります。
この章では、それぞれのフェーズで決めること・成果物・粒度の違いを整理します。
学習者「基本設計」と「詳細設計」って何が違うの?どっちのフェーズで何を決めるの?
基本設計(外部設計)で決めること
基本設計は「システム全体の構造と外部から見た振る舞い」を決めるフェーズです。
| 項目 | 内容 |
|---|---|
| システム構成 | サーバー構成、外部サービス連携、ネットワーク構成 |
| 画面一覧・画面遷移 | どんな画面があり、どう遷移するか |
| データモデル | 主要なエンティティとリレーション(ER図) |
| API一覧 | エンドポイント・メソッド・主要パラメータ |
| 認証・認可方式 | セッション/JWT/OAuth、ロール体系 |
| 非機能要件への対応方針 | 性能目標、可用性、セキュリティ方針 |
基本設計のアウトプットは「このシステムは全体としてこういう構造で、こう動く」という合意を取るためのものです。
詳細設計(内部設計)で決めること
詳細設計は「実装者がコードを書ける粒度まで落とし込む」フェーズです。
| 項目 | 内容 |
|---|---|
| テーブル定義 | カラム名・型・制約・インデックス |
| API詳細仕様 | リクエスト/レスポンスのフィールド定義、バリデーションルール |
| 処理フロー | 主要ロジックのシーケンス図・フローチャート |
| エラーハンドリング | エラーコード体系、異常系の振る舞い |
| 画面項目定義 | 入力フォームの項目・制約・初期値 |
基本設計と詳細設計の境界は会社やチームによって異なりますが、**「プログラマーがこのドキュメントだけ見てコードを書けるか」**が詳細設計の粒度の目安です。
2つのフェーズの関係
残りのセクションは現在執筆中です。
- 基本設計と詳細設計の成果物一覧
- アジャイルでの設計フェーズの扱い方
- 「設計書を書く時間がない」問題への向き合い方
ちゃんと使うためのポイント
- 基本設計は「全体の構造と方針」、詳細設計は「実装できる粒度の仕様」
- 基本設計を飛ばして詳細設計に入ると、根本的な構造の問題に後から気づく
- 詳細設計は「コードを書く人が迷わない程度」が適切な粒度
次の章では、詳細設計の中核となる詳細設計書の書き方を具体的に見ていきます。