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

CRUD図の作成

概要

  • 日程: Day 8 / セッション 2
  • 時間: 09:55-11:00(65分)
  • 形式: 実習
  • ゴール: 機能一覧とテーブル定義書を突き合わせてCRUD図を時間内に作成し、設計漏れを1件以上検出・修正できる
  • 学習形式: ハンズオン実習(AIサポートあり)

導入(5分)

前セッションで「CRUD図の空白に意味がある」ことを学びました。

ここからは自チームの機能一覧(Day5)とテーブル定義書(Day7)を突き合わせて、実際にCRUD図を作ります。設計漏れを1件以上見つけるのが目標です。

問いかけ:自チームのテーブルで「まだ誰も登録(C)できないテーブル」はないでしょうか?

→ あれば設計漏れの可能性。今日見つけ出します。

本編(10分)

1. CRUD図のテンプレート

行に 機能、列に テーブル を書いた表を準備します。スプレッドシート(Google Sheets / Excel)または Markdown表で作るのが一般的です。

Markdown表テンプレート

| 機能\テーブル | members | shops | reservations | reviews |
|---------------|---------|-------|--------------|---------|
| 会員登録 | C | - | - | - |
| 店舗一覧表示 | - | R | - | - |
| 予約作成 | R | R | C | - |
| ...(全機能) | | | | |

表記ルール

  • セルには C R U D または -(操作なし)を書く
  • 複数の操作がある場合は CR RU RD のように並べる
  • 物理削除は D、論理削除は U(is_deleted を立てる)
  • 行=機能、列=テーブル、を統一する

2. 作成手順

ステップ1:行と列を準備(10分)

  • 行:Day5 機能一覧の 全機能 を縦に並べる
  • 列:Day7 テーブル定義書の 全テーブル を横に並べる
  • 中間テーブルも忘れずに含める

ステップ2:各セルを埋める(20分)

機能を1つずつ取り上げ、「この機能が動くとき、どのテーブルにアクセスするか」を考えながら C/R/U/D を埋めます。

例:「予約作成」機能

  • members:ログイン中の会員情報を 参照 → R
  • shops:店舗情報を 参照(営業時間など) → R
  • reservations:新規予約を 作成 → C
  • reviews:使わない → -

ステップ3:設計漏れを検出(10分)

埋め終わったら、次のチェックリストで検証します。

チェック観点 該当したら
列に C が無いテーブル 登録機能が漏れているかも
列に R が無いテーブル データを使う場面が無いなら不要かも
列に D が無いテーブル 意図的か再確認(運用上残すなら OK)
列が全部 - のテーブル テーブル自体が不要かも
行が全部 - の機能 機能が空回りしている(実装不要かも)

ステップ4:漏れがあれば修正(10分)

漏れを見つけたら、次のいずれかの対応をします。

漏れの種類 修正先
機能が足りない 機能一覧(Day5)に追加 → 画面一覧(Day5)も見直し → 画面遷移図(Day6)も見直し
テーブルが足りない テーブル定義書(Day7)に追加 → ER図(Day7)も見直し
テーブルが不要 テーブル定義書から削除 → ER図も削除
機能が不要 機能一覧から削除 → 画面一覧・画面遷移図も見直し

「設計漏れは外部設計まで遡って修正する」 が鉄則です。CRUD図だけ直しても、機能一覧と整合性が取れないと意味がありません。

3. CRUD図の見方の練習

例題:以下のCRUD図から設計漏れを見つけてください。

機能\テーブル members events participants reviews
会員登録 C - - -
イベント一覧 - R - -
イベント詳細 - R R R
イベント申込 R R C -
マイページ R R R R
レビュー投稿 R R R C

検出される漏れ

  1. events 列に C/U/D が無い → イベント主催者がイベントを作成・編集する機能が無い
  2. participants 列に D が無い → 申込キャンセル機能が無い
  3. reviews 列に U/D が無い → 投稿したレビューを編集・削除できない

修正方針

  • 機能一覧に「イベント作成」「イベント編集」「申込キャンセル」「レビュー編集」「レビュー削除」を追加するか、意図的に除外するかをチームで議論

コラム:マトリクスで全体を捉える威力

CRUD図はマトリクス分析の一例です。マトリクスは「2つの軸の組み合わせを網羅する」道具で、設計以外にも応用が利きます。

  • 機能 × 担当者 → 責任分担マトリクス(RACI)
  • リスク × 影響度 → リスクマトリクス
  • 顧客 × ニーズ → マーケティングセグメント

「網羅されているか」を一目で確認したいときには、いつもマトリクスが助けてくれます。1枚で全体が見える、これがマトリクスの最大の価値です。

💬 AIに聞いてみよう

  • 「私たちのチームの機能一覧(貼り付け)とテーブル定義書(貼り付け)からCRUD図のたたき台を作って」
  • 「次のCRUD図(貼り付け)から設計漏れの候補を網羅的に挙げて」
  • 「『お気に入り登録』機能はどのテーブルに何の操作をする?」
  • 「論理削除を採用する場合、CRUD図にはどう表記すべき?」

実習・演習(45分)

課題

自チームのCRUD図を作成し、設計漏れを1件以上検出して修正します。

進め方(推奨タイムテーブル)

時間 作業
5分 行(機能)と列(テーブル)の枠を作る
15分 全機能について C/R/U/D を埋める
10分 チェックリストで設計漏れを検出
10分 検出した漏れに対し、機能一覧・テーブル定義書・画面遷移図を修正
5分 修正後のCRUD図を AI にレビューしてもらう

成果物

  • CRUD図(Markdown表またはスプレッドシート)
  • 検出した設計漏れと対応一覧(最低1件)

ヒント

機能が多くて時間内に終わらないとき

  • 主要機能(ユーザが頻繁に使う)から優先して埋める
  • 管理者機能はまとめて1行にしてもよい(後で分解)
  • AI に Markdown 表で出力させて土台にする

漏れに気づいたが直すべきか迷う

  • ペルソナのカスタマージャーニーマップに戻る。ペルソナがその操作を必要とするかで判断
  • 「あったら便利だが今回は不要」と決めた場合は メモに残す(次回改善の種)

「論理削除 vs 物理削除」が決まらない

  • 監査・履歴が必要なら論理削除(U)
  • 完全消去が要件なら物理削除(D)
  • チームで方針を決めたら全テーブルで統一

まとめ(5分)

今日のセッション要点を3つに絞ります。

  1. CRUD図は 機能(行)×テーブル(列) の表。空白に意味がある
  2. 設計漏れは C/R/U/D の偏り から発見する
  3. 漏れを見つけたら 外部設計まで遡って修正。CRUD図だけ直すのは不十分

次のセッション(Session 3)では、機能の中身を定義する 機能設計書 を作り、内部設計書を完成させます。

🔄 振り返りチェック

  • 自チームのCRUD図が完成している
  • 全機能と全テーブルが網羅されている
  • 設計漏れを1件以上検出した
  • 検出した漏れに対し、機能一覧・テーブル定義書のどちらかを修正した
  • AI にレビューを依頼した

補足資料

  • 前セッション資料:Day8_Session01_CRUD図と機能設計の考え方.md
  • Day5 機能一覧(自チーム成果物)
  • Day7 テーブル定義書、ER図(自チーム成果物)

学習ガイド

想定される質問と回答例

質問 ヒント
中間テーブルもCRUD図の列に入れる? 入れる。中間テーブルの C/R/U/D 抜けが、多対多操作の漏れを示唆する
1つの機能が大量のテーブルを使う場合 そのまま全部書く。本当に全部必要か、機能を分割すべきか議論のきっかけに
認証関連(ログイン)の R はテーブルすべてに付くのでは? ログイン時に参照するのは members だけ。各機能の R はその機能が直接アクセスするテーブルのみ
バッチ処理もCRUD図に入れる? 入れる。「日次集計バッチ」も立派な機能
検索機能の R は複数テーブルに広がる 複数列に R を書いて OK。JOIN するテーブルが多いと性能に注意のサイン

つまずきやすいポイント

つまずきポイント ヒント
機能の粒度がバラバラ 「画面で操作できる単位」を機能の単位にすると揃いやすい
全部 R になってしまう 「画面に表示するだけ=R」「データを変える=C/U/D」と区別
設計漏れと判断していいか自信がない チーム内で「意図的な空白」と「漏れ」を声に出して判定。AI にも意見を聞く
修正がDay5まで遡って大ごとに 大変だが正しい姿。実装が始まってから直すよりずっと安い
中間テーブルへの操作を C と書きそう 中間テーブルへの新規行追加も C で正しい。例:お気に入り登録 → favorites テーブルに C
読み上げを開始します...

AIに質問する