第3部:ドキュメントスキル / 第2章:設計理解

基本設計書の読み方

基本設計書は、システムの外部仕様を定義したドキュメントです。「何を作るか」「ユーザーにどう見えるか」を記述し、要件定義書と詳細設計書の間に位置します。

📖 読了目安 約12分 対象:基本設計書の役割を理解し、全体像を把握したい方

基本設計書とは

別名

基本設計書は、現場によって以下のような呼び方をされることがあります。

  • 外部設計書
  • 基本設計
  • BD(Basic Design)

名前が違っても中身は同じ

プロジェクトによって呼び方が異なりますが、内容は基本的に同じです。

役割

基本設計書は、要件定義書と詳細設計書の間に位置し、以下を定義します。

  • システムの全体像(アーキテクチャ)
  • ユーザーから見える部分の設計
  • システムが何ができるか
flowchart LR
    A[要件定義書] -->|何を作るか| B[基本設計書]
    B -->|どう作るか| C[詳細設計書]
    C --> D[実装]

視点の違い

観点基本設計書詳細設計書
別名外部設計書内部設計書
視点ユーザー視点(外部)開発者視点(内部)
内容何を作るかどう作るか
対象者お客様、SE、PM開発者、PG
詳細度概念的・俯瞰的具体的・詳細

なぜ分けるのか?

基本設計書はお客様との合意形成に使うことが多いため、技術的な詳細よりも「何ができるか」を明確にします。詳細設計書は開発者が実装するための具体的な情報を記載します。

基本設計書の構成要素

よくある構成

基本設計書は、以下のような構成で作られることが多いです。

項目内容確認ポイント
システム構成図システム全体のアーキテクチャサーバー構成、ネットワーク構成
機能一覧システムが持つ機能の一覧機能の範囲、優先度
画面一覧すべての画面のリスト画面数、画面の種類
画面遷移図画面間の遷移関係どこからどこへ行けるか
帳票一覧出力する帳票・レポート帳票の種類、出力タイミング
データ設計(論理)データの構造(概念レベル)エンティティ、関係性
インターフェース設計外部システムとの連携API、ファイル連携
非機能要件性能、セキュリティなど応答時間、同時接続数

【実践】基本設計書サンプルと読み方

ここからは、実際の基本設計書に近いサンプルを使って、具体的な読み方を解説します。

サンプル1:システム構成図

システム構成図は、システム全体のアーキテクチャを図示します。

flowchart TB
    subgraph ユーザー
        U1[PCブラウザ]
        U2[スマートフォン]
    end

    subgraph フロントエンド
        F1[Webサーバー
Nginx] F2[CDN
CloudFront] end subgraph バックエンド A1[APサーバー①
Spring Boot] A2[APサーバー②
Spring Boot] LB[ロードバランサー
ALB] end subgraph データ層 DB[(データベース
PostgreSQL)] CACHE[(キャッシュ
Redis)] end subgraph 外部連携 EXT1[決済サービス] EXT2[メール配信] end U1 --> F2 U2 --> F2 F2 --> F1 F1 --> LB LB --> A1 LB --> A2 A1 --> DB A2 --> DB A1 --> CACHE A2 --> CACHE A1 --> EXT1 A1 --> EXT2

この図から読み取るべきこと

確認項目読み取る内容この例での内容
構成要素どんなサーバーがあるかWebサーバー、APサーバー、DB、キャッシュ
冗長化複数台構成かAPサーバーは2台構成(負荷分散)
外部連携どこと連携するか決済サービス、メール配信
使用技術何を使っているかNginx、Spring Boot、PostgreSQL、Redis

1年目エンジニアとして確認すること

  • 自分が担当する範囲はどこか?(APサーバー?フロント?)
  • 開発環境はこの構成と同じか?違いがあるか?

サンプル2:機能一覧

機能一覧は、システムが持つ機能を一覧化します。

機能ID機能名機能概要優先度備考
F001会員登録新規ユーザーがアカウントを作成するメール認証あり
F002ログインメールアドレスとパスワードでログイン-
F003パスワードリセットパスワードを忘れた場合に再設定メール送信
F004商品一覧商品を一覧表示・検索するページング、絞り込み
F005商品詳細商品の詳細情報を表示する-
F006カート商品をカートに追加・削除するセッション管理
F007注文カートの商品を注文する決済連携
F008注文履歴過去の注文を一覧表示する-
F009お気に入り商品をお気に入りに登録する2期開発

この一覧から読み取るべきこと

flowchart TD
    A[機能一覧] --> B{何を確認する?}
    B --> C[システムの全体像]
    B --> D[自分の担当機能]
    B --> E[機能間の関連]
    B --> F[優先度・スコープ]

    C --> G[全部でどのくらいの規模か]
    D --> H[どの機能を実装するか]
    E --> I[依存関係はあるか]
    F --> J[今期やる/やらないは何か]

優先度と備考を必ずチェック

  • 「2期開発」などの備考がある機能は、今回のスコープ外かもしれません
  • 優先度「低」の機能は後回しになる可能性があります

サンプル3:画面一覧

画面一覧は、システムの全画面を一覧化します。

画面ID画面名画面概要認証備考
SCR-001トップページサイトのトップ画面不要-
SCR-002会員登録新規会員登録フォーム不要-
SCR-003ログインログインフォーム不要-
SCR-004会員情報登録情報の表示・編集必要-
SCR-005商品一覧商品の検索・一覧不要ページング
SCR-006商品詳細商品の詳細表示不要-
SCR-007カートカート内容の表示必要-
SCR-008注文確認注文内容の確認必要-
SCR-009注文完了注文完了メッセージ必要-
SCR-010注文履歴過去の注文一覧必要ページング

この一覧から読み取るべきこと

確認項目読み取る内容
画面数全体で何画面あるか(10画面)
認証の有無ログインが必要な画面はどれか
共通パターン一覧+詳細のパターンがあるか

サンプル4:画面遷移図

画面遷移図は、画面間の遷移を図示します。

flowchart TD
    TOP[トップページ
SCR-001] REG[会員登録
SCR-002] LOGIN[ログイン
SCR-003] MYPAGE[会員情報
SCR-004] LIST[商品一覧
SCR-005] DETAIL[商品詳細
SCR-006] CART[カート
SCR-007] CONFIRM[注文確認
SCR-008] COMPLETE[注文完了
SCR-009] HISTORY[注文履歴
SCR-010] TOP --> REG TOP --> LOGIN TOP --> LIST LOGIN --> TOP LOGIN --> MYPAGE REG --> LOGIN LIST --> DETAIL DETAIL --> CART CART --> CONFIRM CONFIRM --> COMPLETE MYPAGE --> HISTORY style CART fill:#ffcccc style CONFIRM fill:#ffcccc style COMPLETE fill:#ffcccc

この図から読み取るべきこと

  • 入口:どこからでもアクセスできる画面(トップ、商品一覧など)
  • 流れ:ユーザーの主要な導線(商品一覧→詳細→カート→注文)
  • 認証が必要な遷移:ログイン後しかアクセスできない画面

実装時に確認すること

  • ログインしていない状態でカート画面にアクセスしたらどうなる?
  • ブラウザの戻るボタンで戻れるか?戻れない画面はあるか?

サンプル5:ER図(概念レベル)

基本設計書のER図は、詳細なカラム定義ではなく、エンティティ間の関係を示します。

erDiagram
    USER ||--o{ ORDER : places
    USER ||--o{ FAVORITE : has
    ORDER ||--|{ ORDER_DETAIL : contains
    ORDER_DETAIL }|--|| PRODUCT : refers
    FAVORITE }|--|| PRODUCT : refers
    PRODUCT }|--|| CATEGORY : belongs_to

    USER {
        int user_id PK
        string email
        string name
    }
    ORDER {
        int order_id PK
        int user_id FK
        datetime order_date
        decimal total_amount
    }
    PRODUCT {
        int product_id PK
        string product_name
        decimal price
    }

この図から読み取るべきこと

確認項目読み取る内容
主要エンティティどんなデータを扱うか(ユーザー、注文、商品)
関係性1対多、多対多の関係
カーディナリティユーザーは複数の注文を持つ(1:N)

基本設計のER図 vs 詳細設計のテーブル定義

  • 基本設計のER図:概念レベル(何と何が関係するか)
  • 詳細設計のテーブル定義:物理レベル(具体的なカラム名、型、制約)

基本設計書を読む流れ

flowchart TD
    A[1. システム構成図で全体を把握] --> B[2. 機能一覧で範囲を確認]
    B --> C[3. 画面一覧・遷移図で画面構成を理解]
    C --> D[4. ER図でデータ構造を把握]
    D --> E[5. 自分の担当範囲を特定]
    E --> F[6. 関連する詳細設計書を読む]

読む順番のポイント

  1. 全体から詳細へ:まずシステム構成図で全体像を掴む
  2. 機能の範囲を把握:機能一覧で「何ができるシステムか」を理解
  3. 画面構成を理解:ユーザーの操作フローを把握
  4. データ構造を把握:どんなデータを扱うか理解
  5. 担当範囲を明確に:自分が実装する部分を特定

読むときのチェックリスト

読む前に確認すること

読んだ後に確認すること

よくある疑問

Q: 基本設計書がない場合は?

A: 要件定義書や既存のコードから読み取る必要があります。

  • 小規模プロジェクトでは省略されることがある
  • 既存システムの改修では、コードがドキュメント代わりになることも
  • 不明点は先輩に確認しましょう

Q: 基本設計書と詳細設計書、どちらを先に読む?

A: 基本設計書を先に読みます。

全体像を把握してから、詳細に入ります。いきなり詳細設計書を読んでも、「なぜこうなっているか」が分かりません。

Q: 設計書が古い場合は?

A: 現状のコードと照らし合わせ、差分を確認します。

設計書が最新でないことはよくあります。差分があれば先輩に確認し、どちらが正しいか判断を仰ぎましょう。

1年目エンジニアとしての関わり方

場面やること
プロジェクト参加時基本設計書で全体像を把握する
タスク着手前自分の担当範囲を確認する
不明点があるとき設計書の該当箇所を示して質問する
レビュー時設計書通りに実装したか確認される

質問するときのコツ

「基本設計書の機能一覧F003について質問があります。パスワードリセットのメール送信タイミングは...」のように、ドキュメントの具体的な箇所を示して質問すると、スムーズに回答がもらえます。

関連ドキュメント