状態遷移から機能とプレゼンテーションを抽出する
概要
- 日程: Day 2 / セッション 4
- 時間: [11:15-12:00]
- 形式: 演習
- ゴール: 自分の開発テーマの主要な情報モデルについて(条件)、状態遷移図を作成し、そこから機能一覧とプレゼンテーション一覧を抽出できる(行動)。1つの情報モデルあたり機能5種以上を、由来した遷移とともに記述できる(基準)
- 学習形式: ハンズオン実習(AIサポートあり)
導入(5分)
前のセッションで、家計簿の「支出記録」から機能5種と画面5枚が“自動的に”出てくるデモを見ました。
今度はあなたの番です。デモと同じ手順を、自分の開発テーマの情報モデルでやります。
始める前に1つだけ問いかけです。デモでは手順が3ステップでした。覚えていますか?
- 状態遷移図を書く
- 矢印を機能に変換する(Read は2つに分ける)
- 機能に画面を割り当てる
この演習では、これに**ステップ1.5「お客様視点のレビュー」**が加わります。状態遷移図を書いた直後に、ペルソナの目で見直すのです。レビュー役はAIに演じてもらいます。設計を直すコストが一番安いのは、図の段階だからです。
本編(20-40分)
1. 演習の手順と完成例
手順は4ステップです。所要時間の目安も添えます。
| ステップ | 作業 | 目安 |
|---|---|---|
| 1 | 主要な情報モデルを1つ選び、状態遷移図を書く | 10分 |
| 1.5 | AIにペルソナを演じさせてレビュー、図を再定義する | 10分 |
| 2 | 遷移から機能一覧を抽出する(5種以上) | 10分 |
| 3 | 機能からプレゼンテーション一覧を抽出する | 10分 |
まず「主要な情報モデル」の選び方です。ペルソナが一番頻繁に触る情報モデルを選んでください。家計簿なら「支出記録」、レシピ類推サービスなら「レシピ」、オークションなら「出品商品」です。逆に「カテゴリ」のようなマスタ的な情報モデルは、主要ではあっても遷移が単調なので、この演習の1つ目には向きません。
コード例・実例
家計簿システム「支出記録」の完成例一式です。あなたはこれと同じ形式のものを自分のテーマで作ります。
状態遷移図
機能一覧(支出記録・5種)
| No. | 機能名 | CRUD | 由来した遷移 |
|---|---|---|---|
| 1 | 支出記録の新規入力 | Create | 未作成→作成済み |
| 2 | 支出記録の1件表示 | Read | 作成済み→作成済み |
| 3 | 支出記録の一覧表示 | Read | 作成済み→作成済み |
| 4 | 支出記録の更新 | Update | 作成済み→更新済み |
| 5 | 支出記録の削除 | Delete | 作成済み→削除済み |
プレゼンテーション一覧(支出記録・5画面)
| No. | 画面名 | 対応する機能 | 主な表示・入力項目 |
|---|---|---|---|
| 1 | 支出入力画面 | 新規入力 | 日付・金額・カテゴリ・メモの入力欄、登録ボタン |
| 2 | 支出詳細画面 | 1件表示 | 1件分の全属性、編集・削除ボタン |
| 3 | 支出一覧画面 | 一覧表示 | 日付順の一覧、合計金額、絞り込み |
| 4 | 支出編集画面 | 更新 | 入力画面と同じ項目に現在値が入った状態 |
| 5 | 削除確認画面 | 削除 | 対象の要約、削除・キャンセルボタン |
ここがポイント
- 3つの成果物は一本の線でつながっている。画面一覧の各行→機能→遷移、と遡れることを常に確認する
- 「由来した遷移」列が書けない機能を見つけたら、それは思いつきで足した機能。消すか、先に状態遷移図に矢印を足す
- 抽出した機能が「情報」由来であることの確認がこの演習の核心。Day 1 の情報定義書に載っていない情報を扱う機能が出てきたら、情報定義書に戻る
コラム
状態遷移で動く機械を、計算機科学では状態機械(オートマトン)と呼びます。教科書の定番例は自動販売機です。「投入額0円」の状態で100円を入れると「投入額100円」の状態に遷移し、150円のジュースのボタンはまだ反応しない。あと50円入れて初めて「購入可能」状態に遷移する。自動販売機は「今いくら入っているか」という状態を覚えているからこそ正しく動けます。実はあなたが書いている状態遷移図は、この理論の直系の子孫です。19世紀の機械にも、最新のWebサービスにも同じ理論が通用する。計算機科学の基礎理論が現場の設計図に直結している、気持ちのいい例です。
2. AIにペルソナを演じさせてレビューする
ステップ1.5のレビューが、この演習の品質を決めます。
なぜレビューが要るのでしょうか。状態遷移図を書くとき、あなたは無意識に「システムを作る人」の視点になっています。しかしDay 1で決めた通り、情報の価値を決めるのはペルソナです。「作る人には完璧に見える図」が「使う人には不便な図」であることは、よくあります。
たとえば支出記録の例で、ペルソナ「節約したい20代会社員」がこう言ったとします。「間違えて消しちゃったとき、戻せないんですか?」。この一言で「削除済み→作成済み」という復元の矢印が生まれ、復元機能とゴミ箱画面が抽出されます。逆に「支出のSNS共有機能が欲しい」という声が出ても、ペルソナの目的(節約)に照らして不要なら足しません。レビューは御用聞きではなく、価値の確認です。
コード例・実例
AIに投げるプロンプト例です。そのままコピーして、固有名詞を自分のテーマに置き換えてください。
レビュー依頼(ステップ1.5)
あなたは家計簿システムのペルソナ「節約したい20代会社員」です。
毎日の支出をスマホで記録し、月末に使いすぎを反省するのが習慣です。
以下は「支出記録」という情報の状態遷移図です。
あなたの立場で、困ること・欲しい変化(遷移)を3つ指摘してください。
ただし「節約したい」というあなたの目的に関係ないものは挙げないでください。
[ここに状態遷移図を貼る]
機能一覧のレビュー依頼(ステップ2の後)
あなたは家計簿のペルソナ「節約したい20代会社員」です。
この機能一覧をユーザ視点でレビューしてください。
「この機能では目的を果たせない」場面があれば、具体的なシーンで指摘してください。
[ここに機能一覧を貼る]
抽出の壁打ち(詰まったとき)
「出品商品」という情報モデルの状態遷移図を作っています。
オークションなので、入札や落札で状態が変わる気がします。
CRUDだけでは足りない遷移をどう扱えばよいか、私の図を添削してください。
[ここに自分の図を貼る]
ここがポイント
- プロンプトには必ず「ペルソナの目的」を書く。目的がないと、AIは何でも「あったら便利」と答えてしまう
- レビュー結果を全部採用しない。採用・不採用を自分で決め、理由を一言添える(Day 1 の「価値の確認」と同じPDCA)
- レビューで図を直したら、機能一覧・プレゼンテーション一覧も連動して直す。これが「要件と実装の連動」の練習
コラム
状態遷移図には有名な弱点があります。状態が増えると矢印が爆発して読めなくなるのです。この問題に挑んだのがイスラエルの計算機科学者デイビッド・ハーレルで、1987年に「ステートチャート」を発表しました。状態の中に状態を入れ子にできる(例:「作成済み」の中に「下書き」と「確定」がある)画期的な記法で、のちにUMLの状態マシン図として標準化されました。ハーレルがこの記法を考えたきっかけは、イスラエル航空機工業の戦闘機アビオニクスの仕様書作りだったそうです。戦闘機の状態遷移を紙の仕様書で管理しようとして破綻しかけた現場から、世界標準の記法が生まれました。あなたの図が複雑になってきたら、入れ子にできないか考えてみてください。
💬 AIに聞いてみよう
- 「私の開発テーマは〇〇です。ペルソナが一番頻繁に触る情報モデルはどれだと思いますか? 候補と理由を挙げてください」
- 「この状態遷移図から機能一覧を抽出しました。遷移と機能の対応に漏れや重複がないかチェックしてください」
- 「『承認待ち』や『公開中』のようなCRUD以外の状態を持つ情報モデルの場合、機能一覧はどう増えますか? 例で示してください」
実習・演習
課題
自分の開発テーマについて、次の4ステップを実施してください。
- 状態遷移図の作成(10分): 主要な情報モデルを1つ選び、状態遷移図を draw.io または Mermaid(stateDiagram-v2)で書く。Read の自己遷移を忘れないこと
- お客様視点のレビューと再定義(10分): AIに自分のペルソナを演じさせ、図をレビューしてもらう。指摘の採用・不採用を理由付きで決め、図を再定義する
- 機能一覧の抽出(10分): 遷移を1本ずつ機能に変換する。Read は「1件表示」と「一覧表示」に分ける。「由来した遷移」列を必ず書く。5種以上になることを確認する
- プレゼンテーション一覧の抽出(10分): 各機能にペルソナが使う画面を割り当て、主な表示・入力項目を一言添える
時間が余ったら、2つ目の情報モデルで同じ手順を繰り返してください。
成果物
- 情報モデルの状態遷移図(主要モデル1つ以上、レビュー後の再定義版)
- 機能一覧(1モデルあたり5種以上、「由来した遷移」列つき)
- プレゼンテーション一覧(機能との対応つき)
ヒント
- 何から書けばいいか迷ったら、完成例(支出記録)の状態名をそのまま借りて始める。「未作成→作成済み→更新済み→削除済み」は大半の情報モデルに通用する
- 「入札済み」「公開中」のようなテーマ固有の状態が欲しくなったら、遠慮なく足す。ただしその状態に入る矢印と出る矢印を必ず両方書く
- 機能が5種に届かないときは、Read を分け忘れていないか、復元・確定などの矢印を足せないかを確認する
- 逆に機能が10種を超えたら、複数の情報モデルを1枚の図に混ぜていないか疑う。1枚の状態遷移図の主語は1つの情報モデル
- 本編のプロンプト例をコピーし、ペルソナ名・目的・情報モデル名を自分のものに置き換えて使う
まとめ(5分)
今回学んだことを一言でまとめると、**「機能一覧と画面一覧は、状態遷移図から導出し、ペルソナの目で磨く」**です。
- 状態遷移図→機能一覧→プレゼンテーション一覧が一本の線でつながった
- レビューはAIにペルソナを演じさせ、目的に照らして採用・不採用を自分で決めた
- すべての機能が「情報」由来であることを確認した
あなたの手元には、いま3つの成果物があります。午後のセッションでは、この成果物が開発工程(要件・仕様・設計・実装・テスト)のどこに位置するのかを学び、非機能要件を定義します。そして夕方のセッション8で、今日作ったプレゼンテーション一覧がワイヤーフレームになります。
🔄 振り返りチェック
- 自分の機能一覧のすべての行について、「由来した遷移」を指させますか?
- ペルソナレビューで採用した指摘と不採用にした指摘を、理由付きで1つずつ言えますか?
- 「この機能は情報由来である」とはどういう意味か、自分の成果物を例に説明できますか?
補足資料
- 参考リンク: draw.io(https://app.diagrams.net/)ステンシル「UML > State Machine」
- 参考リンク: Mermaid 公式ドキュメント stateDiagram-v2(https://mermaid.js.org/syntax/stateDiagram.html)
- 発展課題: 主要な情報モデルに「復元」「確定」などCRUD以外の遷移を1本足し、機能一覧とプレゼンテーション一覧がどう連動して増えるかを確かめる
学習ガイド
想定される質問と回答例
| 質問 | ヒント |
|---|---|
| 状態が「未作成・作成済み・更新済み・削除済み」だけだと、どのモデルも同じ図になりませんか? | それで正しい。CRUDだけなら同じになる。テーマ固有の状態(公開中・落札済み等)が加わったとき、初めてその情報モデルらしい図になる |
| AIレビューの指摘が多すぎて時間内に終わりません | 「3つに絞って」「目的に関係ないものは挙げないで」とプロンプトで制約する。全採用の義務はなく、採用判断こそが演習の中身 |
| 機能一覧に「ログイン」を入れてもいいですか? | ログインは「ユーザ」や「セッション」という別の情報モデルのCRUD。今回の主語のモデル由来でないなら、この一覧には入れない |
| 画面は機能と必ず1対1ですか? | 原則1対1から始める。慣れてくると「一覧画面に削除ボタンを置く」等の統合ができるが、まず対応関係を明示できることが先 |
つまずきやすいポイント
| つまずきポイント | ヒント |
|---|---|
| 機能を思いつきで列挙してしまい、状態遷移図と対応しない | 手順を逆にしない。図が先、機能が後。「由来した遷移」列が埋まらない行は保留にし、必要なら図に矢印を足してから機能にする |
| 状態遷移図の主語がずれ、複数の情報モデルが1枚に混ざる | 図のタイトルに情報モデル名を1つ書く。「支出記録と予算の図」になっていたら2枚に分ける。1図1モデルが原則 |
| AIレビューの指摘を全部採用して機能が膨らむ | ペルソナの目的(例: 節約)に照らして採用・不採用を自分で決める。「便利そう」は採用理由にならない。不採用の理由もメモに残す |
| Read の分割(1件表示・一覧表示)を忘れて機能が4種で止まる | 完成例の機能一覧と行数を見比べる。Read 由来の行が2行あるかを確認する習慣をつける |
| 「機能」ではなく「画面」を先に考えてしまう | Day 1 の「機能ではなく情報を書く」と同じ罠。順序は情報→状態遷移→機能→画面。画面案が浮かんだら、対応する遷移を先に図へ書く |