第03章:題材ドメイン決め(小さく!)🧺✅
この章のゴール🎯✨
この章が終わったら、次の3つができるようになります😊
- 学習用の「題材(ドメイン)」を小さく固定できる🧸
- 要件を5つだけに絞れる✋
- 要件を「Command候補」に言い換えられる📮✨
まず「イベントソーシング向きの題材」って?🧠🔎
イベントソーシングは、状態を上書き保存する代わりに、起きた出来事(イベント)を追記(append-only)で積み上げていく考え方です📚✨ そして「いまの状態」は、イベントの列を順番に適用して復元します🔁 この “イベントを積む” という前提があるので、題材は「出来事が自然に出てくるもの」が相性バツグンです😊 (Microsoft Learn)
良い題材の条件 5つ✅😊
題材を選ぶときは、ここだけ見ればOKです👇✨
- イベントが自然に出る(追加した/消した/支払った など)📝
- 境界が小さい(まずは “1つの対象” に集中)🧩
- 不変条件(絶対守るルール)が少しある(0じゃないのが大事)🛡️
- 操作が10個以下に収まりそう(増える題材は危険⚠️)
- 画面や外部連携を考えなくても成立(最初は “中身” だけ)🏠
おすすめ題材 3選🌟(どれでもOKだよ😊)

1) 買い物カート🛒✨(いちばん王道)
イベントがとにかく作りやすいです🎉 Azureのイベントソーシング例でも「AddedItemToOrder」「OrderCanceled」みたいな“出来事”が典型として出てきます🧾 (Microsoft Learn)
-
ありがちな Command(やりたいこと)📮
- 商品を追加する/数量を変える/商品を削除する/確定する
-
ありがちな Event(起きたこと)📜
- 商品が追加された/数量が変更された/商品が削除された/注文が確定した
-
ありがちな不変条件🛡️
- 数量は1以上
- 確定後は変更できない
2) ToDo(タスク管理)🗒️🌸(やさしめ)
シンプルで、失敗しにくいです😊
- Command📮:タスク追加/完了/取り消し/期限変更
- Event📜:タスクが追加された/完了した/完了が取り消された/期限が変更された
- 不変条件🛡️:完了済みをもう一回完了にしない、など
3) 家計簿(入出金)💰📒(イベント感が強い!)
“履歴が大事” な題材なので、イベントソーシングの良さが見えやすいです✨
- Command📮:入金する/出金する/メモを付ける
- Event📜:入金された/出金された/メモが付いた
- 不変条件🛡️:残高がマイナスにならない(など)
避けたい題材🙅♀️⚠️(迷子になりやすい)
次のタイプは、学習の最初にやると “広すぎて” ほぼ確実につらいです😵💫
- ユーザー管理(ログイン、権限、メール確認…)👤
- SNS/チャット(通知、既読、検索、ブロック…)💬
- 在庫・配送・請求が全部あるEC全体📦🚚💳
- マルチテナント/組織/承認フローがある業務システム🏢
ミニ演習:要件を「5つだけ」決めよう🖐️✨
ここが超大事ポイントです😊(増やしたくなるけど我慢…!)
手順🥰
- 題材を1つ選ぶ(迷ったら「買い物カート🛒」)
- 主人公(操作する人)を1人にする(例:ユーザー本人だけ)👩🎓
- 画面・DB・APIの話は一旦しない(やるのは “中身”)🧠
- 要件を 5つだけ 書く(6個目は禁止🙅♀️)
- その5つを Command候補 に言い換える📮
書き方テンプレ(このまま使ってOK)📝
-
題材:______
-
主人公:______(例:1人のユーザー)
-
要件(5つだけ)
- ______
- ______
- ______
- ______
- ______
例:買い物カートで「要件5つ」🛒🖐️
要件はこんな感じが “ちょうどいいサイズ” です😊✨
- 商品をカートに追加できる
- 商品の数量を変更できる
- 商品をカートから削除できる
- カートを確定(注文確定)できる
- 確定後は変更できない
この5つだけで、イベントソーシングのコア(履歴・復元・不変条件)が全部練習できます🎯✨
要件 → Command候補に変換するコツ📮😊
変換のコツはこれだけ👇✨
- Commandは「〜したい」=命令形(Add / Change / Remove / Confirm)📮
- Eventは「〜した」=過去形(Added / Changed / Removed / Confirmed)📜
- “データの形” じゃなくて “出来事” を言う(例:「カート行が更新された」より「商品が追加された」)🌸
- 不変条件は Command側でチェック(ルール違反なら止める)🛡️
AI活用(コピペOK)🤖✨
ここは GitHub の Copilot や OpenAI 系のAI拡張に、そのまま貼って使える形です😊💕
① 要件 → Command/Event案を作らせるプロンプト📌
あなたはイベントソーシングの講師です。
次の「題材」と「要件(最大5つ)」から、学習用の Command 候補と Event 候補を作ってください。
制約:
- Command は命令形(例: AddItem, ChangeQuantity)
- Event は過去形で、起きた事実(例: ItemAdded, QuantityChanged)
- まずは 1つの集約(1ストリーム)に収める
- 不変条件(守るべきルール)も 2〜3個だけ提案する
- “粒度が大きすぎる/細かすぎる” ものがあれば理由つきで修正案を出す
題材: (ここに題材)
要件:
1) ...
2) ...
3) ...
4) ...
5) ...
② 「広すぎチェック」をさせるプロンプト🔍⚠️
この題材と要件は、イベントソーシング学習の最初の題材として大きすぎませんか?
大きい場合は「何を削ると最小になるか」を具体的に提案してください。
判断基準: 1集約に収まるか / Commandが10個以内か / 不変条件が複雑すぎないか
(題材と要件をここに貼る)
章末チェック✅😊(これができたら合格!)
- 題材は1つに決まった🧺
- 主人公は1人に絞った👩🎓
- 要件は5つだけ(増やしてない!)🖐️
- 要件を Command候補に言い換えた📮
- Event名は過去形の “出来事” になってる📜✨
ちょい豆知識🪟✨(2026の開発まわり)
この教材は .NET 10(LTS)前提で進めやすい状況になっています(LTSで、サポートも長め)📌 (Microsoft) また Visual Studio 2026 + .NET 10 では、デバッグ起動(F5)など体験面の改善も案内されています🚀 (Microsoft Learn)