情報モデルとは〜処理の単位で情報をまとめる
概要
- 日程: Day 4 / セッション 3
- 時間: [11:10-11:30]
- 形式: 座学
- ゴール: 情報モデルの定義(情報を処理する単位のまとまり)を説明し、情報定義書のカテゴリから情報モデルの候補を挙げられる
- 学習形式: 対話型解説
導入(3分)
休憩前のセッションで、情報定義書ができました。30個以上の情報が、いくつかのカテゴリに分類された状態です。
ここで問いかけです。あなたのチームのシステムは、それらの情報をバラバラに1個ずつ扱うでしょうか?
たとえば飲食店予約システムで、誰かが予約をするとき。システムは「予約日時」だけを単独で登録するでしょうか?——しませんね。「予約日時」「予約人数」「予約者」「対象店舗」をひとまとめにして、1件の「予約」として登録します。
この「ひとまとめ」こそが、今日の主役、情報モデルです。短い座学ですが、ここを押さえると明日からの外部設計・内部設計が一本の線でつながります。
本編(14分)
1. 情報モデル=情報を処理する単位のまとまり
情報モデルとは、情報を処理する単位でまとめたものです。
- 情報定義書の情報1個 = 部品(ネジや歯車)
- 情報モデル = 部品を組み上げたユニット(エンジンやハンドル)
システムは、情報を「処理する」とき、必ず意味のあるまとまり単位で扱います。
- 会員登録する → 「会員名」「メールアドレス」「電話番号」がまとめて登録される → 会員情報という情報モデル
- 予約する → 「予約日時」「予約人数」「予約者」がまとめて登録される → 予約情報という情報モデル
コンビニのおにぎりに例えましょう。米・海苔・具は個々の情報です。でもレジで処理される(買われる)のは「おにぎり1個」という単位。バーコードが付くのはおにぎりであって、海苔単体ではありません。処理の単位にだけ、名前とまとまりが与えられる——これが情報モデルの感覚です。
ここで少し考えてみてください。「メールアドレス」は単独で情報モデルになるでしょうか?
——なりません。メールアドレスだけを単独で登録・更新する処理は普通ありません。「会員情報の一部として」処理されます。つまりメールアドレスは情報モデルの属性(構成要素)です。一方「会員情報」は、登録する・照会する・退会で削除する、という処理の単位になるので情報モデルに該当します。判断基準は常に「それ単位で処理するか?」です。
コード例・実例
情報定義書から情報モデルへの対応例です。
| 情報モデル | 含まれる情報(属性) | 処理の例 |
|---|---|---|
| 会員情報 | 会員名、メールアドレス、電話番号、アレルギー情報 | 会員登録、会員情報変更、退会 |
| 店舗情報 | 店名、営業時間、席数、住所 | 店舗登録、店舗情報更新 |
| 予約情報 | 予約日時、予約人数、予約者、対象店舗、キャンセル理由 | 予約登録、予約変更、キャンセル |
「処理の例」の列に注目してください。情報モデル1つに対し、登録・変更・削除といった処理が自然に書ける——これが「処理の単位でまとまっている」証拠です。
30個以上の情報"] --> B["カテゴリ
意味で分類したまとまり"] B --> C["情報モデル
処理の単位のまとまり"] C --> D["明日以降: 状態遷移図 → 画面・機能"] C --> E["Day 7以降: テーブル設計"]
ここがポイント
- 情報モデルの判定基準は「それ単位で登録・参照・変更・削除するか」
- カテゴリ(意味のまとまり)と情報モデル(処理のまとまり)は近いが同じではない。カテゴリは出発点、処理の観点で再点検して情報モデルにする
- よくある間違い: 大きすぎる情報モデル(「システム情報」のような何でも入る箱)。処理の例が書けないまとまりは、情報モデルとして機能していない
コラム
「モデル」という言葉に身構えた人もいるでしょう。モデルとは「現実を目的に応じて単純化した模型」のことです。プラモデルの飛行機は飛びませんが、形を理解するには十分。地下鉄路線図は距離も方角も不正確ですが、乗り換えには世界一便利です。実はロンドン地下鉄の路線図(1933年、ハリー・ベック作)は、電気回路図の技師だったベックが「乗客に必要なのは正確な地図ではなく接続関係だ」と気づいて作った、情報モデリングの金字塔です。当初は「地理的に不正確すぎる」と上層部に却下されかけたとか。情報モデルも同じで、現実の全てではなく「システムが処理する観点」だけを切り取った模型なのです。
2. なぜ今、情報モデルを作るのか〜後工程への伏線
情報モデルは、この研修の後半全体の土台になります。予告編として、つながりを見ておきましょう。
- 明日(Day 5)外部設計: 情報モデルごとに「状態遷移」を考えます。予約情報なら、登録される(Create)→参照される(Read)→変更される(Update)→キャンセルされる(Delete)。この状態遷移が、そのまま画面と機能になります
- Day 7 内部設計: 情報モデルは、データベースのテーブルの候補になります。「会員情報」モデルが「会員テーブル」へ育つイメージです
つまり、今日の情報モデルの漏れは、明日の画面の漏れ、来週のテーブルの漏れに直結します。逆に言えば、ここを丁寧にやれば後工程は加速します。「タスクの関係を常に意識する」の最重要ポイントです。
非該当の例も押さえましょう。「ログイン画面」「検索ボタン」は情報モデルではありません。画面や機能は情報モデルを操作する側であり、まとまりそのものではないからです。逆に「画面に出てこないが処理される情報のまとまり」(例: 通知履歴)は、画面がなくても情報モデルに該当し得ます。
ここがポイント
- 情報モデル → 状態遷移 → 画面・機能 → テーブル、と一本の線でつながる
- 情報モデルの名前は「〜情報」の形にすると揃えやすい(会員情報・予約情報・店舗情報)
- よくある間違い: 画面ありきで考えて、画面に表示されない情報モデル(履歴・ログ系)を見落とす
コラム
「情報モデルの漏れが後工程に響く」ことを示す格言に、ソフトウェア工学の「欠陥修正コストの法則」があります。要件・設計段階で見つけた欠陥の修正コストを1とすると、実装段階では数倍〜数十倍、リリース後には100倍にもなるという経験則で、1980年代にバリー・ベームが大規模調査で示しました。家づくりで言えば、図面の段階で「トイレがない!」に気づけば消しゴム1個で直りますが、完成後に気づいたら壁を壊す工事になります。みなさんが今日、付箋と表でカチャカチャやっている作業は、未来の自分たちを壁壊し工事から救う作業なのです。
3. カテゴリから情報モデルへ〜再点検のミニ演習
最後に、次セッションへの橋渡しとして、頭の体操をしておきましょう。情報定義書のカテゴリは、情報モデルの有力候補ですが、そのまま全部が情報モデルになるとは限りません。
ここで少し考えてみてください。次の3つのカテゴリは、それぞれ情報モデルとしてそのまま使えるでしょうか?
- 「予約に関する情報」(予約日時・予約人数・キャンセル理由)
- 「お店と予約に関する情報」(店名・営業時間・予約日時・予約人数)
- 「会員の基本情報」と「会員の連絡先」(常に一緒に登録・変更される)
答え合わせです。
- 予約登録・予約変更・キャンセルという処理の単位が書ける → そのまま情報モデルにできる
- 店舗の登録と予約の登録という別系統の処理が混ざっている → 「店舗情報」と「予約情報」に分割する
- 常に一緒に処理されるなら、2つに分けておく意味が薄い → 「会員情報」に統合する
つまり、カテゴリ(意味のまとまり)を、処理のまとまりへ翻訳し直す作業が次セッションの中心です。
ここがポイント
- カテゴリは「意味が似ている」、情報モデルは「一緒に処理される」。基準が違う
- 分割のサイン: 1つのまとまりに別系統の処理(店舗の登録と予約の登録など)が混ざっている
- 統合のサイン: 2つのまとまりが常に同時に登録・変更される
コラム
「分けるか、まとめるか」は、ソフトウェア設計の永遠のテーマです。設計の世界には「高凝集・疎結合」という有名な言葉があります。関係の深いものは1か所にまとめ(高凝集)、まとまり同士の依存は最小に(疎結合)——1970年代の構造化設計の時代から、最新のマイクロサービスまで、形を変えて生き続ける原則です。みなさんが「このカテゴリ、分ける?まとめる?」と悩むその議論は、世界中のアーキテクトが半世紀やってきた議論の入口に立っているということ。胸を張って悩んでください。
💬 AIに聞いてみよう
ここまでの内容で疑問があれば、AIに質問してみましょう。たとえば:
- 「情報モデルと情報定義書のカテゴリの違いを、別の例で説明して」
- 「『〜は情報モデルになる?』をクイズ形式で5問出して。答えと理由も」
- 「情報モデルとデータベースのテーブルは何が違うの?」
- 「『高凝集・疎結合』って何?情報モデルとどう関係するの?」
まとめ(3分)
今回学んだことを一言でまとめると「情報モデルとは、情報を処理する単位でまとめたもの」です。
- 判定基準は「それ単位で登録・参照・変更・削除するか」
- 情報定義書のカテゴリを出発点に、処理の観点で再点検して情報モデルにする
- 情報モデルは明日の画面・機能、来週のテーブルへつながる土台
次のセッションでは、自分たちの情報定義書から情報モデルを洗い出し、「情報モデル定義書」を作成します。Day 4の総仕上げです。
🔄 振り返りチェック
以下の問いに答えられるか確認してみましょう:
- 情報モデルの定義を一言で言えますか?
- 「メールアドレス」が情報モデルにならない理由を説明できますか?
- 情報モデルが後工程(画面・機能・テーブル)にどうつながるか説明できますか?
答えに自信がない場合は、該当部分を読み返すか、AIに質問してみてください。
補足資料
- 参考リンク: Day4_Session02成果物(情報定義書)、Day 5の予習として「CRUD」という言葉をAIに聞いてみるのもおすすめ
- 発展課題: 銀行ATMを題材に「情報モデルは何か」をAIと議論してみましょう(口座情報?取引情報?カード情報?)
学習ガイド
このセクションは、受講者が理解を深めることをサポートする参考情報です。
想定される質問と回答例
| 質問 | ヒント |
|---|---|
| カテゴリをそのまま情報モデルにしていい? | 多くは流用できるが、必ず「処理の例が書けるか」で再点検する。書けないカテゴリは分割・統合する |
| 情報モデルはいくつぐらいが適切? | 本研修の規模なら3〜7個程度が目安。1〜2個なら粗すぎ、10個超なら細かすぎを疑う |
| 1つの情報が複数の情報モデルに入ってもいい? | あり得る(例: 「店名」が店舗情報と予約情報の両方に登場)。後の正規化(Day 7)で整理されるので、今は重複を恐れず処理の単位を優先する |
| 「履歴」は情報モデルになる? | 履歴単位で記録・参照する処理があるなら立派な情報モデル。画面に出ないからと見落とさない |
つまずきやすいポイント
| つまずきポイント | ヒント |
|---|---|
| 情報モデルと属性の区別がつかない | 「それ単独で登録・削除するか?」と問う。しないなら属性。AIにクイズを出してもらい感覚を鍛える |
| 何でも入る巨大モデルを作ってしまう | 処理の例を書いてみる。「登録・変更・削除」が複数系統混ざるなら分割のサイン |
| 画面から発想して情報モデルを決める | 順序が逆。情報モデルが先、画面は後(明日学ぶ)。CJMと情報定義書から発想する |