第3章
基本設計と詳細設計 — 2つの設計フェーズの違いと役割
約6分
この章の目次開く
「設計」と一口に言っても、実務では基本設計と詳細設計という2つのフェーズに分かれます。 この2つの境界が曖昧だと、基本設計で細かいことを議論しすぎたり、詳細設計でアーキテクチャの根本を覆したり、非効率な進め方になります。
この章では、それぞれのフェーズで決めること・成果物・粒度の違いを整理します。
学習者「基本設計」と「詳細設計」って何が違うの?どっちのフェーズで何を決めるの?
基本設計(外部設計)で決めること
基本設計は「システム全体の構造と外部から見た振る舞い」を決めるフェーズです。
| 項目 | 内容 |
|---|---|
| システム構成 | サーバー構成、外部サービス連携、ネットワーク構成 |
| 画面一覧・画面遷移 | どんな画面があり、どう遷移するか |
| データモデル | 主要なエンティティとリレーション(ER図) |
| API一覧 | エンドポイント・メソッド・主要パラメータ |
| 認証・認可方式 | セッション/JWT/OAuth、ロール体系 |
| 非機能要件への対応方針 | 性能目標、可用性、セキュリティ方針 |
基本設計のアウトプットは「このシステムは全体としてこういう構造で、こう動く」という合意を取るためのものです。

詳細設計(内部設計)で決めること
詳細設計は「実装者がコードを書ける粒度まで落とし込む」フェーズです。
| 項目 | 内容 |
|---|---|
| テーブル定義 | カラム名・型・制約・インデックス |
| API詳細仕様 | リクエスト/レスポンスのフィールド定義、バリデーションルール |
| 処理フロー | 主要ロジックのシーケンス図・フローチャート |
| エラーハンドリング | エラーコード体系、異常系の振る舞い |
| 画面項目定義 | 入力フォームの項目・制約・初期値 |
2つのフェーズの関係
成果物の一覧と粒度
基本設計の成果物
| 成果物 | 粒度 | 例 |
|---|---|---|
| システム構成図 | サーバー・サービス単位 | Web + API + DB の3層構成 |
| 画面遷移図 | 画面単位 | ログイン → 一覧 → 詳細 → 編集 |
| ER図 | エンティティ単位 | users, orders, products の関係 |
| API一覧 | エンドポイント単位 | GET /users, POST /orders |
| 認証方式 | 方式の選定 | JWT + リフレッシュトークン |
詳細設計の成果物
| 成果物 | 粒度 | 例 |
|---|---|---|
| テーブル定義書 | カラム単位 | users.email VARCHAR(255) NOT NULL UNIQUE |
| API仕様書 | フィールド単位 | リクエストボディ { name: string, email: string } |
| シーケンス図 | 処理ステップ単位 | 注文処理: バリデーション → 在庫確認 → 決済 → 注文作成 |
| 画面項目定義書 | 入力項目単位 | メールアドレス: 必須, 形式チェック, 255文字以内 |
| エラーコード一覧 | エラー単位 | E001: メールアドレスが既に使われています |
先生基本設計書に「users テーブルの email カラムは VARCHAR(255)」と書く必要はない。逆に、詳細設計書に「全体のサーバー構成をどうするか」は書かない。粒度を間違えると、レビューの観点もずれるよ。
アジャイルでの設計フェーズ
ウォーターフォール型では基本設計→詳細設計→実装と順に進みますが、アジャイルではスプリントごとに必要な分だけ設計します。
| アプローチ | 設計のタイミング |
|---|---|
| ウォーターフォール | 実装前に基本設計・詳細設計をすべて完了する |
| アジャイル | スプリント0で全体のアーキテクチャ決定、各スプリントで必要な詳細設計を行う |
「設計書を書く時間がない」問題
実務では「設計書を書く時間がない」「とりあえず作ってから考える」という圧力がかかることがあります。
| よくある状況 | 対応策 |
|---|---|
| 「設計書は後で書く」 | 後で書かれた設計書は例外なく陳腐化する。最初に書く方が早い |
| 「コードが設計書だ」 | コードは「どう実装したか」であり「なぜこの構造にしたか」は残らない |
| 「スケジュールが厳しい」 | 設計を省くと実装の手戻りで余計に時間がかかる |
ちゃんと使うためのポイント
- 基本設計は「全体の構造と方針」、詳細設計は「実装できる粒度の仕様」
- 基本設計を飛ばして詳細設計に入ると、根本的な構造の問題に後から気づく
- 詳細設計は「コードを書く人が迷わない程度」が適切な粒度
- アジャイルでも全体のアーキテクチャは最初に決める
- 設計書の目的は合意形成。完璧なドキュメントを目指さない
次の章では、詳細設計の中核となる詳細設計書の書き方を具体的に見ていきます。