📖 テーマ設定
🔊 音声設定
1.2
1.0
1.0
▶️ 再生コントロール
🎵 BGM設定
0.3
🔔 効果音設定
0.3

外部設計とは〜情報の状態遷移とCRUD

概要

  • 日程: Day 5 / セッション 1
  • 時間: 09:30-10:00(30分)
  • 形式: 座学
  • ゴール: 外部設計の目的(ユーザ・お客様とチームの共通認識をつくる)を1分以内に説明でき、情報モデルの状態遷移(CRUD)から機能と画面を導く手順を具体例で示せる
  • 学習形式: 対話型解説、デモンストレーション

導入(5分)

昨日までに「ペルソナ」「カスタマージャーニーマップ」「情報モデル定義書」を作りました。今日からはいよいよ「設計」に入ります。

問いかけ: 「会員登録」という機能を作るとき、最初に決めるべきことは何ですか?画面のデザイン?それともボタンの動き?

答えは「情報がどう変わるか」です。会員登録は「未登録 → 登録済み」という情報の状態変化を起こす機能です。情報を状態遷移させるのが機能であり画面になる。これが本研修の設計の核心です。

設計フェーズ(Day5-9)の地図を先に見せます。

flowchart LR A["Day5 外部設計1
状態遷移・画面/機能一覧"] --> B["Day6 外部設計2
画面遷移図・画面仕様書"] B --> C["Day7 内部設計1
テーブル・ER図"] C --> D["Day8 内部設計2
CRUD図・機能設計書"] D --> E["Day9 PM
WBS・かんばん"]

今日はこの設計の入口です。

本編(20-25分)

1. 外部設計とは何か

外部設計は「要件定義の次」に行う工程です。役割は1つ。ユーザ・お客様とチームの共通認識をつくること。

たとえ話: 家を建てるとき、設計士はまず「間取り図」と「外観イメージ」を施主に見せます。柱の太さや配線の話は後回し。施主が見て「ここで暮らせるイメージ」が湧くものを先に作ります。これが外部設計です。

外部設計が扱うのは「システムの外側とのやり取り」です。

設計種別 扱う対象
外部設計 システムの外側 画面、機能、画面遷移、画面仕様
内部設計 システムの内側 テーブル、ER図、CRUD図、機能設計

ここがポイント

外部設計書は「お客様と一緒に読む」ものです。だから専門用語より、画面イメージ・遷移・機能名で語ります。

コラム: なぜ「外部」と呼ぶのか

ユーザにとってシステムは「画面と操作」がすべてです。中でどうデータが動いていても、ユーザには見えません。ユーザから見える「外側」を設計するから外部設計と呼びます。逆に内部設計はユーザに見えない「内側」を設計します。

2. 必要な機能と画面を洗い出す方法

ここが今日の核です。「情報モデル定義書」から、それぞれの情報がどのように状態遷移するかを決める。状態遷移を起こす操作が「機能」となり、その操作を行う場所が「画面」となります。

flowchart LR A["情報モデル定義書
(Day4の成果物)"] --> B["状態遷移図
CRUD"] B --> C["機能一覧"] B --> D["画面一覧"] C --> E["画面遷移図
画面仕様書"] D --> E

「情報を状態遷移させるのが機能であり画面になる」。この一文をチーム全員で覚えてください。

3. CRUDとは何か

CRUDは情報に対して行う基本操作の頭文字です。

文字 操作 例(会員情報)
C Create(生成) 会員登録する
R Read(参照) 会員情報を見る
U Update(更新) 会員情報を編集する
D Delete(削除) 退会する

ほぼすべての情報は、このCRUDのどれかで状態が変わります。

コード例・実例: 「予約情報」のCRUD

レストラン予約システムを例にします。「予約情報」という情報モデルがあるとします。

flowchart LR Start(("*")) -- "C 予約する" --> Reserved["予約済み"] Reserved -- "U 予約変更" --> Reserved Reserved -- "U 来店確認" --> Visited["来店済み"] Reserved -- "D キャンセル" --> Canceled["キャンセル"] Reserved -- "R 予約照会" --> Reserved Visited --> EndNode(("*")) Canceled --> EndNode

ここから機能と画面が見えてきます。

CRUD 機能 画面
C 予約する 予約フォーム画面
R 予約を見る 予約一覧画面・予約詳細画面
U 予約を変更する 予約編集画面
U 来店確認する 店員用予約管理画面
D キャンセルする 予約詳細画面のキャンセルボタン

情報モデル1つから、機能と画面が芋づる式に出てきました。これがCRUDの威力です。

ここがポイント

  • Rは見落としがち。「ユーザはこの情報をどこで見るか?」を必ず問う
  • Dは慎重に。物理削除(消す)か論理削除(フラグ)かは後で内部設計で決める
  • 同じCRUDでも「誰が」操作するかで画面が分かれることがある(ユーザ用/管理者用)

💬 AIに聞いてみよう

AIを設計レビュアーとして使いましょう。

例:

  • 「予約情報のCRUDを書き出しました。漏れている状態遷移はありますか?」
  • 「会員情報のDeleteは本当に必要ですか?退会後も履歴を残すべきでは?」
  • 「この情報モデルで、Rが発生する画面を全部挙げて」

AIの答えを鵜呑みにせず、チームで議論する材料にしてください。

まとめ(5分)

今日学んだこと:

  • 外部設計の目的は「ユーザ・お客様とチームの共通認識をつくる」こと
  • 情報を状態遷移させるのが機能であり画面になる
  • 情報モデル → 状態遷移(CRUD) → 機能・画面 という導出の流れ

次のセッションでは、自チームの情報モデル定義書から実際に状態遷移図を作ります。

🔄 振り返りチェック

  • 外部設計の目的を1分で説明できる
  • CRUDの4文字とそれぞれの意味を言える
  • 「情報を状態遷移させるのが機能であり画面になる」を自分の言葉で説明できる
  • 情報モデル定義書から機能・画面を導く手順を順に挙げられる

補足資料

  • Day4成果物: 情報モデル定義書(次セッションの入力)
  • Day3成果物: カスタマージャーニーマップ To-Be版(画面動線の確認に使う)
  • Mermaid stateDiagram-v2 公式ドキュメント

学習ガイド

想定される質問と回答例

質問 ヒント
CRUDのほかに何かありますか? 検索(Search)、印刷(Print)など。ただし大半はR(参照)の派生として扱える
状態遷移図とフローチャートはどう違うのですか? 状態遷移図は「情報の状態」を主役にする。フローチャートは「処理の順序」を主役にする
ログイン機能はどの情報のCRUDですか? 「ユーザセッション情報」のC(生成)と考えると整理しやすい
同じ画面で複数のCRUDを扱ってもいい? 良い。例えば一覧画面はRと削除ボタン(D)を持つことが多い
状態遷移が複雑すぎて書けません 1つの情報モデルにつき状態は3〜5個に収まることが多い。それ以上ある場合は情報モデルを分けるサイン

つまずきやすいポイント

つまずきポイント ヒント
「機能」と「画面」の区別が曖昧 機能は「操作」、画面は「操作する場所」。1つの画面に複数の機能があってよい
状態が動詞になってしまう(例: 「予約する」) 状態は名詞または形容詞(例: 「予約済み」「未確認」)。動詞は遷移のラベル
全部の情報モデルでCRUD全部が必要だと思い込む 不要なものは書かない。例えばマスタデータはCとRだけのことが多い
情報モデル定義書を見ずに状態遷移を考える 必ずDay4の成果物を開いて、1つずつ突き合わせる
「画面」を考えるときデザインを気にしてしまう 今は画面の「名前と目的」だけ。レイアウトはDay6で扱う
読み上げを開始します...

AIに質問する