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

情報モデルの抽出

概要

  • 日程: Day 2 / セッション 2
  • 時間: [9:30-10:30]
  • 形式: 実習
  • ゴール: 整理分類済み情報定義書をもとに(条件)、情報モデルを3個以上抽出し(行動・基準)、各モデルの属性・関係・制約条件を図(draw.io または Mermaid)で表現した「情報モデル一覧」を完成できる(基準)
  • 学習形式: ハンズオン実習(AIサポートあり)

導入(5分)

セッション1で、情報モデルは「属性・関係・制約条件の3点セット」で、要件と実装の橋渡し役だと押さえました。
このセッションでは、その橋を自分の手で架けます。

材料はすでに揃っています。Day 1に作った「整理分類済み情報定義書」です。
そして朗報があります。モデル名の候補は、もうあなたの手元に書いてあります

どこにあると思いますか?

答えは「見出し」です。Day 1でカードソーティングをしたとき、各グループに付けた見出し。
あれこそが「情報を抽象的に捉えた際の情報」、つまり情報モデルの名前の第一候補です。

このセッションの流れは3ステップです。

  1. 見出しからモデル名の候補を選ぶ
  2. 各モデルの属性・型・制約条件をAIとの対話で洗い出す
  3. モデル間の関係を図にして、ペルソナ視点でレビューする

まず例(家計簿システム)で手順を確認し、その後、自分の開発テーマで同じ手順を実行します。

本編(15分)

1. 「見出し」からモデル名を抽出する

整理分類済み情報定義書を開いてください。
見出しを眺めて、次の基準でモデル名の候補に丸を付けます。

  • 名詞であること(「支出記録」は候補。「支出を登録」は機能なので除外)
  • ペルソナが繰り返し扱うこと(1回きりの情報はモデルにしない)
  • 複数の項目を束ねていること(属性を持てる見込みがある)

家計簿システムなら、見出し「支出」「カテゴリ」「予算」がそのまま候補になります。
逆に「使いやすさ」という見出しは候補になりません。名詞ですが、束ねているのが情報ではなく要望だからです。要望は非機能要件(今日の午後)で扱います。

ここで少し考えてみてください。あなたの情報定義書の見出しのうち、いくつがこの基準を通りそうですか?
3個未満なら、見出しの粒度が大きすぎるサインです。1つの見出しを2つに割れないか検討しましょう。

コード例・実例

家計簿システムの整理分類済み情報定義書(抜粋)からの抽出例です。

見出し モデル候補? 理由
支出記録 名詞・毎日発生・日付や金額を束ねる
カテゴリ 名詞・支出の分類に繰り返し使う
予算 名詞・月ごとに設定し支出と比較する
節約のコツ × ペルソナへの助言であり、構造化する属性が見えない

ここがポイント

  • モデル名は探すのではなく「選ぶ」。Day 1の見出しが候補リスト
  • 名詞・繰り返し・属性を束ねる、の3基準でふるいにかける
  • 落選した見出しは捨てない。非機能要件やプレゼンテーションの材料として後で使う

コラム

ER図の生みの親 ピーター・チェン

情報を「実体(Entity)」と「関連(Relationship)」で表すERモデルは、1976年に台湾出身の計算機科学者ピーター・チェンが発表した論文「The Entity-Relationship Model: Toward a Unified View of Data」で生まれました。この論文はデータベース分野で最も引用される論文の一つです。チェンは後に「ERモデルの発想は漢字や古代の象形文字に通じる。世界をモノとその関係で写し取る考え方は数千年前からあった」と語っています。Day 1で触れた甲骨文字の話と繋がるのが面白いところです。最新技術に見えるものの根っこには、人類が昔からやってきた「情報の整理と分類」があります。

2. 属性と制約条件をAIとの対話で洗い出す

モデル名が決まったら、属性・型・制約条件を埋めます。
ここがAIの使いどころです。まず自分で思いつく属性を書き、その後AIに抜け漏れを指摘させます。

AIへのプロンプト例です。そのまま使って構いません。

家計簿システムの「支出記録」の属性を洗い出してください。
型と制約条件も提案してください。
ペルソナは「節約を始めたい新社会人」です。
あなたの提案した属性のうち、このペルソナに不要なものはどれですか?
理由も添えてください。

大事なのは2つ目のプロンプトです。AIは属性を「盛る」傾向があります。
セッション1の「単純化」を思い出してください。捨てる判断はペルソナを知っているあなたの仕事です。

続いて、モデル間の関係を考えます。「支出記録はカテゴリに属するか?」「予算はカテゴリごとか、全体で1つか?」
こうした問いに答えると、関係と多重度(1対多など)が決まります。

コード例・実例

家計簿システムの3モデルの関係をMermaidのER図で表した例です。
図中の属性名は英数字で書き、意味は下の対応表で補足します(日本語をそのまま属性名にすると図が壊れやすいためです)。

erDiagram CATEGORY ||--o{ EXPENSE : "classifies" CATEGORY ||--o{ BUDGET : "targets" EXPENSE { int expense_id PK date spent_on int amount string memo int category_id FK } CATEGORY { int category_id PK string name } BUDGET { int budget_id PK string target_month int limit_amount int category_id FK }

属性の対応表(日本語での意味と制約条件):

モデル 属性 意味 型・制約条件
EXPENSE(支出記録) spent_on 支出日 日付型・必須
EXPENSE(支出記録) amount 金額 整数型・必須・0以上
EXPENSE(支出記録) memo メモ 文字列型・任意・100文字まで
CATEGORY(カテゴリ) name カテゴリ名 文字列型・必須・重複不可
BUDGET(予算) target_month 対象月 文字列型(YYYY-MM)・必須
BUDGET(予算) limit_amount 上限金額 整数型・必須・1以上

関係の読み方: 1つのカテゴリは複数の支出記録を分類し(1対多)、1つのカテゴリは月ごとの予算を複数持ちます(1対多)。
「支出記録は必ず1つのカテゴリに属する」も制約条件の一つです。

ここがポイント

  • 属性の洗い出しは「自分で書く→AIに補完させる→ペルソナ基準で捨てる」の3手順
  • 制約条件は「これが破られるとペルソナが困る」ものを書く(金額がマイナス、カテゴリ無しの支出など)
  • 関係には多重度(1対1・1対多・多対多)を必ず添える。多対多が出たら要注意、間にモデルが隠れていることが多い

コラム

多対多の罠と「見えないモデル」

初心者がER図で最初にハマるのが多対多です。例えば「レシピ」と「食材」は多対多に見えます。しかし実装しようとすると「この関係自体の情報(分量・単位)はどこに書くの?」と行き詰まります。答えは、間に「レシピ食材(分量・単位を持つ)」という隠れたモデルを立てることです。多対多の線を見つけたら「この線、名前を付けたら情報を持ちたがらないか?」と自問してみてください。線がモデルに昇格する瞬間は、情報モデリングで一番気持ちのいい瞬間です。

💬 AIに聞いてみよう

  • 「家計簿システムの『支出記録』の属性を洗い出してください。型と制約条件も提案してください」
  • 「『支出記録』と『予算』の間に直接の関係は必要ですか? カテゴリ経由で十分ですか? 両案のメリット・デメリットを比較してください」
  • 「私の開発テーマ『(自分のテーマ)』の情報モデル候補を、この整理分類済み情報定義書(貼り付け)から提案してください。ただし機能は除外してください」

実習・演習(35分)

課題

自分の開発テーマで、以下を実施してください。

  1. モデル名の抽出(5分): 整理分類済み情報定義書の見出しから、3基準(名詞・繰り返し・属性を束ねる)でモデル名を3個以上選ぶ
  2. 属性・制約条件の洗い出し(15分): 各モデルについて、まず自分で属性を書き、AIとの対話で型・制約条件を補完する。ペルソナに不要な属性は理由を添えて捨てる
  3. 関係の定義と作図(10分): モデル間の関係と多重度を決め、draw.io または Mermaid のER図で表現する
  4. ペルソナ視点のレビュー(5分): AIにペルソナを演じさせ、モデルを見せて「あなたの欲しい情報はこの形に入っていますか?」と確認する。指摘があれば修正する

レビュー用のプロンプト例:

あなたは「(ペルソナのプロフィールを貼り付け)」です。
この情報モデル一覧を見て、あなたが日々使う場面を想像してください。
足りない情報、余計な情報、不自然な関係があれば指摘してください。

成果物

「情報モデル一覧」 次を含むこと。

  • 情報モデル3個以上(モデル名・属性・型・制約条件の一覧表)
  • モデル間の関係図(draw.io または Mermaid、多重度つき)
  • ペルソナ視点レビューでの指摘と対応(1件以上。指摘ゼロならその旨を記録)

この成果物は、このあとの状態遷移図・機能一覧・Day 3のテーブル設計・Day 4の実装すべての土台になります。

ヒント

  • 手が止まったら、まず家計簿システムの例(支出記録・カテゴリ・予算)を自分のテーマに置き換えて考える。「支出記録にあたるものは何か?」
  • 属性が5個を超えたら一度立ち止まり、「ペルソナはこれを本当に使うか?」で間引く
  • 多対多の関係が出たら、AIに「この多対多の間に隠れたモデルはありますか?」と聞く
  • Mermaidの図が描けないときは、先に表(属性一覧)を完成させる。図は表の写しにすぎない
  • 制約条件が思いつかないときは「この値が変だとペルソナはどう困る?」と逆から考える

まとめ(5分)

今回学んだことを一言でまとめると「情報モデルは見出しから選び、属性・関係・制約条件はAIと対話しながらペルソナ基準で決める」です。

  • モデル名の候補はDay 1の「見出し」。名詞・繰り返し・属性を束ねる、の3基準で選ぶ
  • 属性・型・制約条件は、自分で書く→AIに補完させる→ペルソナ基準で捨てる
  • 関係には多重度を添える。多対多には隠れたモデルがいないか疑う
  • 仕上げはペルソナ視点のレビュー。「定義→価値の確認→再定義」のPDCAはここでも回る

次のセッション3では、この情報モデルに「状態遷移」を与えます。
すると驚くことに、機能一覧とプレゼンテーション一覧が半ば自動的に出てきます。
あなたの情報モデル一覧が、その材料になります。休憩後にお会いしましょう。

🔄 振り返りチェック

  • 見出しをモデル名候補にふるい分ける3基準を言えますか?
  • 自分の情報モデルの制約条件を1つ選び、「破られるとペルソナがどう困るか」を説明できますか?
  • 自分のER図の関係線を1本選び、多重度とその理由を言えますか?

補足資料

  • 参考リンク:
  • 発展課題:
    • 自分のモデルに多対多の関係を意図的に1つ作り、間に隠れたモデルを立てて解消してみましょう
    • ペルソナを別の人物(例: 家計簿なら「家族の支出をまとめて管理する親」)に差し替えたとき、モデルがどう変わるかAIと議論してみましょう

学習ガイド

想定される質問と回答例

質問 ヒント
モデルが3個も見つからない 見出しの粒度が大きい可能性。「ユーザー情報」を「ユーザー」と「設定」に割れないか検討。AIに情報定義書を貼って候補を提案させるのも有効
逆にモデルが10個以上出てしまった ペルソナの主要な利用場面に登場するものに絞る。使用頻度の低いものは「候補のまま保留」と記録して先へ進む
draw.ioとMermaidどちらを使うべき? どちらでもよい。マウス操作で考えたいならdraw.io、テキストで素早く直したい(AIに修正させたい)ならMermaid
属性名は日本語と英語どちらで書く? 一覧表は日本語でよい。Mermaid図に載せる属性名は英数字にして、意味は対応表で補足するとパースエラーを避けられる
IDは属性に入れるべき? 入れてよい。各モデルを一意に識別する属性(PK)と、関係を表す属性(FK)は実装への橋渡しに役立つ。ただしペルソナには見えない属性だと意識しておく

つまずきやすいポイント

つまずきポイント ヒント
「登録画面」「検索機能」など機能・画面をモデルにしてしまう 「〜する」「〜画面」が付いたら情報ではない。モデルは名詞(支出記録・カテゴリ)。機能と画面はセッション3-4で状態遷移から抽出される
AIの提案した属性を全部採用して肥大化する AIは網羅する方向に偏る。採用の最終基準はペルソナ。「不要なものはどれ?」とAIに逆質問し、自分で捨てる判断をする
関係の多重度を書かずに線だけ引いてしまう 線1本ごとに「1つの◯◯は何個の△△を持つ?」と声に出して確認する。多重度がないER図はDay 3のテーブル設計で必ず手戻りになる
多対多の関係をそのままにして先へ進んでしまう 多対多を見つけたら「間に隠れたモデル(関係自体が持つ情報)はないか」を疑う。AIに聞けば中間モデルの案を出してくれる
Mermaidの構文エラーで時間を浪費する 属性名は英数字、ラベルはダブルクォート、と機械的に守る。5分以上ハマったら図を捨てて表を完成させ、図はAIに変換させる
読み上げを開始します...

AIに質問する