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

情報モデルとは〜処理の単位で情報をまとめる

概要

  • 日程: Day 4 / セッション 3
  • 時間: [11:10-11:30]
  • 形式: 座学
  • ゴール: 情報モデルの定義(情報を処理する単位のまとまり)を説明し、情報定義書のカテゴリから情報モデルの候補を挙げられる
  • 学習形式: 対話型解説

導入(5分)

休憩明けに、少し質問させてください。

午前中に作った情報定義書を見てください。「ユーザー情報」「収支記録」「予算」のようなカテゴリで情報が分類されているはずです。

ここで疑問。「カテゴリ=そのままシステムで扱う単位」でしょうか?

答えはNOです。カテゴリは「人間が理解しやすいように分けた」もので、システムが「処理する単位」とは別物です。

具体例。家計簿アプリで「収支記録」というカテゴリに「金額・カテゴリ・日付・メモ」が入っています。これらは「1件の取引として一緒に保存し、一緒に表示し、一緒に編集する」=つまりまとめて処理する単位です。これが「情報モデル」です。

このセッション(20分)では、「カテゴリと情報モデルの違い」「処理の単位とは何か」を整理し、午後の実習で「情報モデル定義書」を作る準備をします。明日からの外部設計・内部設計の入り口です。

本編(13分)

1. 情報モデルとは何か — 「処理の単位」を見抜く

情報モデルとは、情報を処理する単位のまとまりです。

「処理の単位」は次のように定義できます。

  • 一緒に作成される: 同じタイミングで生まれる
  • 一緒に取得される: 同じタイミングで読まれる
  • 一緒に更新される: 同じタイミングで書き換えられる
  • 一緒に削除される: 同じタイミングで消える

CRUD(Create/Read/Update/Delete)操作の単位、と言い換えられます。

具体例: 家計簿アプリの情報モデル

情報モデル名 含まれる情報項目 処理の単位として
ユーザー ユーザーID・氏名・メール・パスワード アカウント1件として登録/参照/削除される
取引 取引ID・ユーザーID・金額・カテゴリ・日付・メモ 1件の収支記録として登録/編集される
予算 予算ID・ユーザーID・カテゴリ・月額・通知閾値 1件の予算設定として登録/編集される
通知 通知ID・ユーザーID・種別・送信日時 1件の通知履歴として記録/参照される

「ユーザー情報」と「ユーザー」が違うことに注目。

  • カテゴリ「ユーザー情報」: 人間の便宜的分類。氏名や好みなど雑多に入る
  • 情報モデル「ユーザー」: 処理単位。氏名・メール・パスワードが「1ユーザーとしてまとまる」

2. カテゴリ vs 情報モデル — 違いを正確に理解する

flowchart TB A["情報定義書のカテゴリ"]:::cat --> B["人間の理解のため
同種の情報をくくる"] C["情報モデル"]:::model --> D["システムの処理のため
同時に扱う情報をくくる"] classDef cat fill:#fffacd classDef model fill:#e0ffff
観点 カテゴリ 情報モデル
目的 人間が理解しやすくする システムが処理しやすくする
基準 似た意味の情報をまとめる 同時に処理する情報をまとめる
だいたい5〜8個 だいたい3〜10個
「ユーザー情報」 「ユーザー」「ユーザー設定」「ユーザー認証」と分かれることも

ここがポイント

1カテゴリ=1情報モデルになることもあれば、1カテゴリ=複数の情報モデルになることもあります。カテゴリは出発点であって、ゴールではありません。「処理単位として正しいか?」で再編成します。

3. 情報モデルの良し悪し

情報モデルには「良い切り方」と「悪い切り方」があります。

良い情報モデルの条件

  • 凝集度が高い: モデル内の情報が「同じ目的」でまとまっている
  • 結合度が低い: 他のモデルへの依存が最小限
  • 単一責任: そのモデルが「1つの役割」しか持たない

悪い情報モデルの例

悪い例 何が悪いか 修正後
「全情報」モデル(全部入り) 凝集度が低い、メンテ不能 役割ごとに分割
「ユーザーと取引の合体」モデル 結合度が高い、再利用不可 ユーザーと取引を分離
「マスタ」モデル(種別不明の集合) 単一責任違反 「商品マスタ」「カテゴリマスタ」など具体化

4. 情報モデルが下流に与える影響

情報モデルは、明日(Day5)以降の設計の「主役」になります。

flowchart LR A["情報モデル定義書
(Day4 午後)"] --> B["状態遷移図
(Day5)"] A --> C["画面一覧
(Day5)"] A --> D["テーブル定義書
(Day7)"] A --> E["ER図
(Day7)"]
  • 状態遷移図(Day5): 各情報モデルが「どんな状態を持ち、どう遷移するか」
  • 画面一覧(Day5): 各情報モデルの「CRUD画面」(一覧/詳細/編集/削除)
  • テーブル定義書(Day7): 各情報モデルが「1テーブル」に対応するのが基本
  • ER図(Day7): 情報モデル間のリレーション

つまり、今日午後に作る情報モデル定義書は、Day7までの設計成果物すべての原型なのです。ここで雑に切ると、後で全部の設計をやり直すことになります。

コラム — エンティティ概念とオブジェクト指向の系譜

「情報モデル」という言葉は分野によって呼び方が違います。データベース設計では「エンティティ(実体)」、オブジェクト指向プログラミングでは「クラス」、業務分析では「ビジネスオブジェクト」と呼ばれることが多いです。

歴史的にはエンティティ概念が最も古く、1976年にPeter Chen(ピーター・チェン)がER図(Entity-Relationship Diagram)を提唱した時に体系化されました。Chenは「現実世界は『エンティティ(モノ)』と『リレーションシップ(関係)』で表現できる」と主張し、これが後のデータベース設計の基礎になります。

その後、1990年代にオブジェクト指向プログラミングが普及すると、エンティティは「クラス」として再解釈され、振る舞い(メソッド)も持つようになりました。さらに2000年代のDDD(ドメイン駆動設計)では「エンティティ」「値オブジェクト」「集約」という概念に細分化されています。

豆知識:「情報モデル」という呼び方は、特定の実装技術(DB or オブジェクト指向)に依存しない中立的な言い方です。本研修では、まだ実装技術を選定していない段階なので、この呼び方を使います。明日以降、テーブル設計に入ったら「エンティティ」、もしオブジェクト指向で実装するなら「クラス」と呼び替えます。

💬 AIに聞いてみよう

  • 「情報モデルとデータベースのテーブルは同じもの? 違いがあれば教えて」
  • 「『処理の単位』を見極めるコツを、別のたとえで説明して」
  • 「私たちの情報定義書のカテゴリ『○○』から、どんな情報モデルが導けそう?」
  • 「1つのカテゴリが複数の情報モデルに分かれる例を3つ挙げて」

まとめ(5分)

20分の座学で学んだことは、次の3点。

  1. 情報モデル=処理の単位のまとまり: CRUDで一緒に扱う情報がモデルになる
  2. カテゴリと情報モデルは別物: カテゴリは人間の理解用、情報モデルはシステムの処理用
  3. 情報モデルは下流設計の原型: テーブル・画面・状態遷移すべての原型

次のセッション(11:30-)から、午前の情報定義書を「情報モデル定義書」に再編する実習に入ります。70分の集中作業で、明日からの設計の土台を仕上げます。

「カテゴリそのままで良いんじゃない?」と思った人もいるかもしれません。多くの場合、それでは細かすぎる/粗すぎるのです。「処理の単位」という新しい目線で、いったん壊して組み立て直してください。

🔄 振り返りチェック

  • 情報モデルの定義を、自分の言葉で30秒で言えますか?
  • カテゴリと情報モデルの違いを、別の例で説明できますか?
  • 「処理の単位」とは何か、CRUDの4文字を使って説明できますか?
  • 情報モデル定義書が、明日以降のどの設計成果物の原型になるか言えますか?

補足資料

  • 参考書籍: Peter Chen「The Entity-Relationship Model」(1976年論文)
  • 参考書籍: Eric Evans『ドメイン駆動設計』
  • 参考書籍: 渡辺幸三『業務システムのための上流工程入門』
  • 発展課題: 身近なサービス(メルカリ・LINE)の情報モデルを推測してみる

学習ガイド

想定される質問と回答例

質問 ヒント
情報モデル=テーブル? 多くの場合そうだが、1モデルが複数テーブルになることもある
情報モデルはいくつくらいが適切? 中小規模システムで3〜10個。20を超えたら粒度が細かすぎ
カテゴリと情報モデルの数が違うのは普通? 普通。カテゴリ5個から情報モデル7個になることもある
情報モデルにメソッド(振る舞い)も書くべき? 本研修では情報項目のみ。振る舞いはDay8の機能設計で扱う
エンティティとどう違う? ほぼ同義。情報モデルはより広い概念(実装非依存)

つまずきやすいポイント

つまずきポイント ヒント
カテゴリ=情報モデルと思い込む 「処理の単位か?」を毎回問う
情報モデルが粗すぎ(全情報1モデル) CRUDの粒度で分割。「同時に消える?」で判断
情報モデルが細かすぎ 「単独で意味を持つか?」で判断。意味を持たないなら統合
情報項目の所属が決まらない 「主たる使われ方」で決める。複数モデルに重複させない
設計後半の話に飛んでしまう テーブル・ER図はDay7の話。今は概念モデルに集中
読み上げを開始します...

AIに質問する