terada_life

基本設計について

概要

基本設計(外部設計)は、要件定義の成果物をもとに、システムの全体像や構造を設計するフェーズ。ユーザーから見える部分(外部仕様)を中心に、「何を作るか」を明確にする。

内容

基本設計の目的

  • 要件定義で決まった要求を、技術的な構造へ落とし込む
  • ユーザーやステークホルダーに「システムがどう動くか」を示す
  • 詳細設計・実装の基盤となるドキュメントを作成する

基本設計で作成する主な成果物

1. システム構成図

システム全体のインフラ・アーキテクチャを視覚的に表現する図。

  • 記載内容
    • アプリケーションサーバー、DBサーバー、キャッシュサーバーなどの配置
    • ネットワーク構成(VPC、サブネット、ロードバランサー)
    • 外部システムとの連携(決済API、メール配信、認証プロバイダなど)
    • CDN、ストレージ(S3等)の配置
    • 通信プロトコル(HTTPS、gRPC、WebSocketなど)
  • ポイント
    • 各コンポーネント間の通信方向と通信方式を矢印で明示する
    • 本番環境・ステージング環境の差異がある場合は環境ごとに作成する
    • クラウドサービスを利用する場合は、使用するマネージドサービス名を記載する

2. 画面設計書

ユーザーが操作する画面の構成・遷移・レイアウトを定義する。

  • 画面一覧
    • 画面ID、画面名、URL(パス)、認証要否、対応する機能
    • 例: SCR-001 | ログイン画面 | /login | 不要 | ユーザー認証
  • 画面遷移図
    • 画面間の遷移を矢印で表現し、遷移条件(ボタン押下、ステータス変更等)を記載
    • 正常系だけでなく、エラー時の遷移先も定義する
  • ワイヤーフレーム
    • 各画面のレイアウト(ヘッダー、フッター、メインコンテンツ、サイドバー)
    • 入力フォームの項目(項目名、入力種別、必須/任意)
    • ボタン・リンクの配置と押下時のアクション
    • レスポンシブ対応が必要な場合はブレイクポイントごとのレイアウト

3. 機能一覧

システムが提供するすべての機能を一覧化し、スコープを明確にする。

  • 記載内容

    • 機能ID、機能名、機能概要、対応画面、優先度
    • CRUD区分(どのデータに対して何の操作を行うか)
    • 対応するユースケースや要件ID(トレーサビリティ)
  • 機能ID機能名概要対応画面CRUD
    FNC-001ユーザー登録メールアドレスとパスワードで新規登録SCR-002Create
    FNC-002ログイン認証情報を検証しセッションを発行SCR-001Read

4. データベース設計(論理設計)

データの構造とエンティティ間の関係を定義する。物理的な実装詳細は含まない。

  • ER図
    • エンティティ(テーブル)とリレーション(1対多、多対多など)を図示
    • 主キー・外部キーの関係を明示
  • テーブル一覧
    • テーブル名(論理名・物理名)、概要、主要カラム
  • データ項目の定義
    • 論理名、概要、データ型の方針(文字列、数値、日付など)
    • NULLの許容方針、一意制約の方針
  • ポイント
    • 正規化のレベルを明示する(第3正規形まで、など)
    • マスタデータとトランザクションデータを区別する

5. API設計(外部IF設計)

システムが外部に公開するインターフェース、または外部から呼び出すインターフェースを定義する。

  • エンドポイント一覧

    • メソッド(GET/POST/PUT/DELETE)、パス、概要、認証要否
  • リクエスト/レスポンスの概要

    • 主要なパラメータ名と概要(詳細な型定義は詳細設計で行う)
    • 正常時のレスポンス構造(概要レベル)
    • 主なエラーレスポンス(4xx、5xx)
  • メソッドパス概要認証
    POST/api/usersユーザー新規登録不要
    GET/api/users/:idユーザー情報取得必要
    PUT/api/users/:idユーザー情報更新必要

6. バッチ設計

定期実行やトリガー実行されるバッチ処理の概要を定義する。

  • 記載内容

    • バッチID、バッチ名、処理概要
    • 実行タイミング(cron式、トリガー条件)
    • 入力データ(参照元テーブル、外部ファイルなど)
    • 出力データ(更新先テーブル、出力ファイルなど)
    • 想定データ件数、処理時間の目安
    • 排他制御の方針(多重実行の可否)
  • バッチIDバッチ名実行タイミング概要
    BAT-001日次集計バッチ毎日 02:00前日の売上データを集計テーブルに反映
    BAT-002メール送信バッチ5分ごと送信キューのメールを一括送信

7. 非機能要件定義

機能以外のシステム品質に関する要件を定義する。

  • 性能要件
    • レスポンスタイム目標(例: 画面表示 2秒以内、API応答 500ms以内)
    • スループット(例: 同時接続 1,000ユーザー)
    • データ量の見積もり(初期データ量、年間増加量)
  • 可用性要件
    • 稼働率目標(例: 99.9%)
    • 計画停止の許容範囲、メンテナンスウィンドウ
    • 障害時の復旧目標(RTO/RPO)
  • セキュリティ要件
    • 認証方式(OAuth2.0、JWTなど)
    • 認可モデル(RBAC、ABACなど)
    • データ暗号化(通信時、保存時)
    • 監査ログの要件
  • 運用・保守要件
    • ログ出力方針(ログレベル、保存期間)
    • 監視項目(CPU、メモリ、エラーレート、レスポンスタイム)
    • バックアップ方針(頻度、世代管理、リストア手順)
    • デプロイ方式(Blue-Green、ローリング、カナリア)

基本設計で意識すべきポイント

  1. ユーザー視点を忘れない — 技術者だけでなく、ステークホルダーが理解できるレベルで記述する
  2. スコープを明確にする — 「やること」と「やらないこと」の境界を線引きする
  3. 非機能要件を後回しにしない — 性能・セキュリティ・運用は基本設計の段階で定義する
  4. 変更に強い構造にする — モジュール分割や責務の分離を意識する
  5. トレーサビリティ — 要件定義の各項目と基本設計の成果物が紐づくようにする

要件定義との違い

観点要件定義基本設計
視点ビジネス・ユーザーシステム・技術
問い何が必要か?どう実現するか?(概要レベル)
成果物要件定義書、ユースケースシステム構成図、画面設計、DB論理設計

基本設計の進め方(一般的なフロー)

  1. 要件定義書のレビュー・確認
  2. システム全体のアーキテクチャ検討
  3. 機能分割・モジュール分割
  4. 画面設計・画面遷移の定義
  5. データベース論理設計(ER図作成)
  6. 外部IF(API)設計
  7. 非機能要件の具体化
  8. レビュー・承認

参考資料

  • IPA「システム開発の基礎」
  • 「はじめての設計をやり抜くための本」(技術評論社)

メタデータ

  • ステータス: レビュー中
  • タグ: 設計, 基本設計, 外部設計, システム開発
  • 作成日時: 2026/04/08
  • 更新日時: 2026/04/08