第03章:題材ドメイン決め(小さく!)🧺✅
この章でやること 🎯✨
イベントソーシング学習の“舞台”になる 小さな題材(ドメイン) を1つ決めて、迷子にならないようにします🧭💕
この章のゴールはこれ👇
- 題材を 1つ 決める(途中で変えない!)🙅♀️
- 要件を 5つだけ 書く(増やさない!)🖐️
- 要件を Command候補 に変換する📮✨
まず「題材ドメイン」ってなに?🤔🧠
ここでいう題材ドメインは、学習用に扱う ミニ世界 のことだよ🌍✨ 例:ToDo、買い物カート、家計簿…みたいな「小さくて説明しやすい世界」😊
イベントソーシングでは「状態」じゃなくて「出来事(イベント)」を積むから、題材がブレると…
- 何をイベントにするか迷う😵💫
- ルール(不変条件)も増えまくる🌀
- 実装が進まない😭
なので最初に 小さく固定 が大事💎✨
おすすめ題材(迷ったらここから)🐣📚
どれも「イベントっぽい出来事」が作りやすいよ😊✨
- ToDo(タスク管理) ✅📝
- 追加/完了/取り消し/期限変更…などイベントが自然
- UIもシンプルで終わらせやすい✨
- 買い物カート 🛒🍎
- 商品追加/数量変更/削除/注文確定…がイベントになりやすい
- “確定したら変更できない”みたいなルールも作れる🛡️
- 家計簿 💰📒
- 入金/出金/カテゴリ変更…がイベント化しやすい
- 「残高はイベントの結果として出る」が体験しやすい🔁
この教材では例として 買い物カート🛒 で説明するね(他を選んでもOKだよ)😊
「小さく!」の基準(これ超大事)🧊✨
学習用は、わざと弱くてOK です😊🌸 次のものは今回“禁止”にしよ🙅♀️💦(難しくなるから!)
- ログイン/ユーザー管理 🔑
- 決済 💳
- 在庫のリアル連携 🏭
- 通知(メール/Push)📩
- 検索の高度化 🔎(まずは一覧でOK)
- 外部API連携 🌐
- マルチテナント 🏢🏢
✅ 代わりにやるのはこれだけ: 「出来事が積める」+「ルールが少しある」+「終わる」 🎀
ステップ1:題材を“1つだけ”選ぶ 🧺✅
決め方のコツ(30秒で決める)⏱️💕

- あなたが 説明できる(使ったことある)
- ルールが 少ない
- 画面イメージが浮かぶ(一覧→詳細くらい)🖥️✨
迷ったら ToDo が最強に進めやすいよ✅😊
ステップ2:要件を5つだけ書く 🖐️📝
ルール:5つに固定(6つ目は“捨てる”)🗑️✨
ここは筋トレ💪🔥 イベントソーシング以前に「スコープを絞る力」が身につくよ😊
例:買い物カートの場合 🛒
要件(5つ)👇
- 商品をカートに追加できる ➕🍎
- 商品の数量を変更できる 🔢
- 商品をカートから削除できる 🗑️
- 注文を確定できる ✅📦
- 確定後はカートを編集できない 🔒
「配送先」「クーポン」「在庫」…は今回は捨てる🙅♀️✨(後でやればOK)
ステップ3:要件をCommand候補に変換する 📮✨
Commandって?🤔
Commandは「やりたいこと(要求)」だよ😊 イベントソーシングでは基本、ユーザー操作やAPI呼び出しは Commandとして受け取る 📮
変換ルール(超かんたん)🎀
- 「〜できる」を “〜しろ” っぽい命令にする
- 英語にするなら 動詞から(Add/Remove/Change/Confirm…)
- 1つのCommandは 1つの意思決定 にする🧠✨
例:買い物カート(Command候補)🛒
AddItemToCart➕ChangeItemQuantity🔢RemoveItemFromCart🗑️ConfirmOrder✅- (5つ目の要件が「確定後編集禁止」なので、Commandではなくルール側で守るのが自然だよ🛡️)
ミニ演習(この章の手を動かすところ)✍️🌸
演習A:あなたの題材で「要件5つ」🖐️📝
- 題材を1つ選ぶ(ToDo/カート/家計簿)🎯
- 要件を5つだけ書く🖐️
- “捨てた要件”を下にメモしておく(安心するため)🧺✨
おすすめの書き方👇
## 題材:◯◯
## 要件(5つだけ)
1.
2.
3.
4.
5.
## 今回やらない(捨てる)
-
-
(このメモを docs/domain.md に置くと迷子防止にめっちゃ効くよ📌✨)
演習B:要件→Command候補に変換📮✨
要件5つをそれぞれCommandにしてみよ😊
## Command候補
-
-
-
-
✅ ここも「5つで止める」ね🖐️✨
AI活用(Copilot / Codexの使い方)🤖💖
ここは“丸投げ”じゃなくて、あなたが決めるための補助 に使う感じ😊✨ (AIは候補を出すのが得意、最終決定はあなたが強い💪)
プロンプト①:題材に合う要件を5つだけ出す🧺🖐️
あなたはイベントソーシング入門の講師です。
題材は「(ここに題材)」です。
学習用なのでスコープは小さく、要件は“必ず5つだけ”にしてください。
出力:
- 要件を日本語で5つ(番号付き)
- 今回やらない要素を5つ(箇条書き)
- なぜ捨てたかを1行で
「絶対5つ」って縛るのがコツだよ🖐️✨
プロンプト②:要件→Command候補(名前案も)📮✨
次の要件をイベントソーシングのCommand候補に変換してください。
- Commandは“意思決定の単位”になるようにする
- それぞれ PascalCase の英語名 + 日本語説明 をセットで
- 5個だけ出す(増やさない)
要件:
1) ...
2) ...
3) ...
4) ...
5) ...
英語名は「後でコードにする」から、早めに形を作ると楽だよ😊🧩
プロンプト③:スコープが膨らんでないかチェック👀🧯
以下の要件/Command候補が、学習用として大きすぎないかレビューしてください。
- 大きい場合は「削る/後回しにする」提案をしてください
- ただし要件は5つを維持してください
要件:
...
Command候補:
...
AIに「削らせる」のも上手な使い方だよ✂️😊
“小ささ”セルフチェック✅🧊
最後にこれだけ確認してね✨
- 題材は1つに決まった🎯
- 要件は5つ(増えてない)🖐️
- Command候補も5つ(増えてない)📮
- ログイン/決済/外部連携を入れてない🙅♀️
- 画面は「一覧+詳細」くらいを想定できる🖥️
全部OKなら、この章はクリア🎉✨
安全メモ(AI拡張を入れるとき)🔐🧯
VS Codeの拡張には、見た目がそれっぽくても 危ないものが混ざる ことがあるよ😱 特に「AI系っぽい名前」の拡張は、提供元や評価をちゃんと見てね👀✨ (TechRadar)
参考(最新状況の確認用)📌
TypeScriptやVS Codeはアップデートが速いので、公式の更新ページをたまに見る習慣があると安心だよ😊✨
- VS Code Insiders の 1.109 リリースノート(2026-01-26更新) (Visual Studio Code)
- TypeScript 5.9 のリリースノート(2026-01-27更新) (TypeScript)
- Codex をVS Codeで使うための案内(OpenAI公式) (OpenAI Developers)