Skip to main content

第01章:このコースのゴールと進め方🎒✨

この章でわかること🎯

  • この36章コースを終えると「何ができるようになるか」✨
  • 学び方の“型”(迷子にならない手順)🧭
  • よくある挫折ポイントと、先回りの回避策🛟
  • ミニ演習:身近な題材を「出来事(イベント)」で書き出す📝
  • AIを“学習ブースター”として使うやり方🤖💡

まずゴールを1枚で掴む🗺️✨

ES/CS 学習ロードマップ

そもそもイベントソーシングって?(超ざっくり)🌸

イベントソーシングは、「いまの状態」ではなく「起きた出来事の履歴」を貯めていく考え方だよ📚✨ 状態の変化をイベントとして記録し、そのイベント列を順番に適用して、いつでも状態を作り直せる(=復元できる)イメージ🔁😊

(martinfowler.com)

このコースを終えるとできるようになること🏁🎉

  • イベントを“過去形”で命名して、出来事として整理できる⏳
  • ✅ **イベント列から状態を復元(Rehydrate)**できる🔁
  • Command → Event の流れを、迷わず型で書ける📮✨
  • ✅ 画面や一覧に強い **Projection(読みモデル)**を作れる🔎
  • ✅ テスト(Given-When-Then)で、イベントの正しさを守れる🧪🌼
  • ✅ 競合(同時更新)や永続化(まずはSQLite)など「実戦の入口」まで触れられる🚪✨

学びの順番(このコースの“型”)🧩✨

イベントソーシングは、順番を間違えると急に難しく感じるやつです😵‍💫 だからこのコースは、ずーっとこの順番で進むよ👇😊

  1. 言葉と芯をそろえる(Command / Event / State / Projection)📚
  2. 最小実装で手を動かす(インメモリEventStore)🧱
  3. **復元(Rehydrate)**で「なるほど!」を作る🔁
  4. Command処理の型(Load → Decide → Append)を固める📮✅
  5. テストの型で安心を作る(Given-When-Then)🧪
  6. 現実の壁(競合・スナップショット・永続化・運用観測)へ🚧📊

ここで“つまずきポイント”を先に潰す🛟✨

挫折ポイント①:イベント名が決まらない😵

対策:まず“出来事の日本語”でOK🙆‍♀️✨

  • 「商品を追加した」→ ItemAddedToCart みたいに、起きたことを過去形で言うだけで十分だよ⏳🧡 (Microsoft Learn)

挫折ポイント②:「結局DBに状態を保存したほうが早くない?」🤔

短期的にはYESだけど、イベントソーシングは「あとで効いてくる」タイプ💊✨

  • 履歴(監査)💼
  • 巻き戻し(タイムトラベル)🕰️
  • 後から別の読みモデルを作る🔎 みたいな要求に、イベント履歴が効いてくるよ😊 (martinfowler.com)

挫折ポイント③:イベントの粒度がバラバラになる😵‍💫

対策:最初は“画面のボタン1回=イベント1個”くらいの感覚でOK🎮✨ あとで「大きすぎ/細かすぎ」を調整する章が出てくるから安心してね🧸💛

挫折ポイント④:AIに任せたら、なんか微妙なコードが増える🤖💦

対策:AIは“下書き係”、人間は“編集長”✍️✨

  • AI:たたき台、例え話、テスト案、レビュー観点
  • 人:命名、境界、ルール(不変条件)、最終判断 この役割分担にすると、学習がめちゃ進むよ🚀💕

この章のミニ演習:身近な例を「出来事」で書き出す📝✨

お題(どれか1つ選んでね)🍀

  • 🧺 買い物カート
  • 💰 家計簿
  • ✅ ToDo
  • 🎟️ 予約(美容室・映画など)

ルール(超かんたん)📏😊

  • イベントは 「起きたこと」だけを書く
  • 形は 過去形(〜した、〜された)にする
  • **意図(したい)**じゃなくて **事実(した)**ね✨

手順(5分)⏱️🌸

  1. その世界で「よく起きる出来事」を10個書く📝
  2. その中から「大事そう」な3つを選ぶ🎯
  3. 各イベントに「最低限入れたい情報(payload)」を3つ書く🍱

ミニ演習のサンプル(買い物カート🧺)✨

イベント候補(10個の例)📝

  • 商品がカートに追加された➕
  • 商品がカートから削除された➖
  • 商品の数量が変更された🔢
  • クーポンが適用された🏷️
  • クーポンが解除された🧾
  • カートが作成された🆕
  • カートが空にされた🧹
  • 配送先が設定された📦
  • 支払い方法が設定された💳
  • 注文が確定された✅

まずは3つに絞る🎯

  1. カートが作成された🆕
  2. 商品がカートに追加された
  3. 商品がカートから削除された

payload(最低限の情報🍱)

  • カートが作成された:cartId / createdAt / customerId
  • 商品が追加された:cartId / productId / quantity
  • 商品が削除された:cartId / productId / removedAt

この“雑でいいから形にする”が、イベントソーシング学習の最強ムーブだよ💪✨


AI活用:この章で使うプロンプト雛形🤖✨

① 例え話を3パターン作る(理解が一気にラクになる)🌈

  • ねらい:イベントソーシングの感覚を“日常の比喩”で掴む🧠✨
イベントソーシングを、プログラミング初心者にもわかるように説明して。
題材は「家計簿」「買い物カート」「ゲームのセーブデータ」の3つで、
それぞれ 5行以内、たとえ話中心、専門用語は最小でお願い。

② イベント候補を作る(ミニ演習の加速)🚀

題材は「(ここに題材を書く)」。
よく起きる出来事(イベント)を過去形で15個提案して。
1行1イベント。重複なし。粒度は「画面の操作1回」くらいで。

③ “意図”と“事実”の混ざりをチェック(地味に効く)🧹

次のリストが「意図(したい)」と「事実(起きた)」のどちらか分類して、
意図っぽいものは「事実のイベント名(過去形)」に言い換えて。
(ここにイベント候補を貼る)

ここまでできたらOKチェック✅✨

  • 「出来事(イベント)」を10個以上、過去形で書けた📝
  • その中から“コアっぽい3つ”に絞れた🎯
  • 各イベントにpayloadを3つ書けた🍱
  • AIの出力を、そのまま採用せず“編集”できた✍️🤖

章末のミニQ&A💬😊

Q. いきなり完璧なイベント名にしないとダメ? A. 全然ダメじゃないよ🙆‍♀️✨ 最初は「日本語で自然」→「過去形」→「粒度調整」の順でOK🎒

Q. イベントソーシングって、クラウドやキューが必須? A. このコースでは、まず“仕組み理解”が最優先😊 イベントは「追加専用ストアに順番に保存する」が核なので、最初はインメモリでも十分わかるよ📦✨ (Microsoft Learn)


次章の予告📘🌸

次は「イベントソーシングって何?」を、状態保存との違いで超やさしく整理するよ😊🔁