第01章:この教材のゴール🎯✨
1. この章でわかること(読了ゴール)✅🌸
この章を読み終わったら、次の3つがスッと説明できるようになります☺️✨
- 集約(Aggregate)って何? → 「整合性(ルール)を守るための、ひとまとまり」🌳
- トランザクション境界って何? → 「1回の処理で、まとめて成功/失敗させる“区切り”」🔒
- なぜそれが必要? → 「うっかり整合性バグ(ズレ)を減らすため」🛡️
2. 最後にできるようになること(この教材のゴール)🏁✨

この教材のゴールは、ざっくり言うとこれです👇
- ✅ どこを「同じまとまり(集約)」にするか考えられる
- ✅ どこに「1回で守る境界(トランザクション境界)」を置くべきか判断できる
- ✅ “整合性が壊れそうな瞬間”を見つけて、事故を防げる🚑💦
そして最終的には… 「小さな注文アプリ(カフェ注文)」を題材に、集約と境界を自分で切って、実装の形まで落とすところまで行きます☕️📦✨
3. そもそも「整合性バグ」ってなに?😵💫🧠
整合性バグって、要するに 「データのつじつまが合ってない状態」 のことです💥
たとえば…カフェでよくある(?)事故👇
- 注文は「確定」になってるのに、明細が空っぽ🧾❓
- 支払いは「完了」なのに、注文が「未確定」のまま💳❓
- 在庫は「減ってる」のに、注文が「キャンセル」になってる📦❓
こういうの、実装の途中でエラーが起きたり、同時更新が起きたりすると簡単に発生します😇💦 だからこそ…
- 集約で「守るべきルールを1か所に集める」🌳
- トランザクション境界で「1回の処理で、まとめて確定する」🔒
この2つがめちゃくちゃ効きます✨
4. まず覚える“超ミニ用語”セット📚✨

4.1 集約(Aggregate)🌳
**「一緒に整合性を守りたい“まとまり”」**です。
- 例:注文(Order)って、 「明細(OrderItem)」「合計金額」「状態(未確定/確定/支払い済み)」みたいに、いろいろセットでルールがあるよね?☕️🧾
- それを バラバラに更新させない ために、 “ひとまとまり”として扱うのが 集約🌳✨
4.2 集約ルート(Aggregate Root)👑🚪
集約には「入口」が必要です✨ 外部からの更新は 入口(ルート)経由だけにします。
- 「OrderItemだけ勝手に更新」みたいなのを禁止🙅♀️
- Orderが責任もってルールを守る👑✨
4.3 トランザクション境界🔒
**「ここからここまでを1回で成功させる!」**という境界です🎬✨
- 成功:全部保存される✅
- 失敗:全部なかったことになる❌
- 途中まで保存される…は基本NG😵💫
この“成功/失敗のまとまり”が、境界の感覚です🔒✨
5. ミニアプリのイメージ(カフェ注文)☕️📦
この教材の題材は、こういう流れを想像してね👇✨
- お客さんが商品を選ぶ🧁
- 注文を作る(明細を追加する)🧾
- 注文を確定する✅
- 支払いする💳
- (少し遅れてもOKで)発送準備/受け取り準備が進む📦⏳
ここで大事なのは… **「全部を一気に同じトランザクションでやらない」**ケースも現実には多いってこと😌✨ だから、どこまでを“今すぐ守る(即時整合)”にして、どこからを“あとで揃えばOK(最終的整合)”にするかが超重要になります⚖️
6. この教材で使う“今どきのC#”ってどれ?🆕✨
この教材では、いまのC#/.NETの標準的な組み合わせで進めます😊
- **.NET 10 は LTS(長期サポート)**で、安定運用向きだよ🛡️✨ (Microsoft for Developers)
- .NET 10 をターゲットにすると C# 14 が既定になるよ(特別な設定がなければ)🧠✨ (Microsoft Learn)
- Visual Studio 2026が提供されていて、最新系の開発体験に寄せられるよ💻✨ (Visual Studio)
※この章では「機能紹介」よりも、**考え方(集約/境界)**が主役だよ🌸
7. AI拡張(Copilot / Codex)との付き合い方🤖✨
AIは“丸投げ”すると事故りやすいけど、設計学習とは相性がいいです😊✨ この教材では、AIをこんな風に使います👇
- ✅ 「業務ルールの洗い出し」を手伝ってもらう📋
- ✅ 「境界案を複数出して比較」する⚖️
- ✅ 「この設計の弱点どこ?」をツッコませる🔍
7.1 そのまま使えるAIプロンプト例💬🤖
(コピペしてOKだよ✌️)
カフェ注文ドメインです。
「集約」と「トランザクション境界」を決めたいです。
前提:
- 注文は明細を持つ
- 注文確定後は明細追加できない
- 支払い完了後はキャンセルできない(例外は返金フロー)
お願い:
1) 集約の候補を2〜3案出して
2) それぞれのトランザクション境界(1ユースケース=1回の確定単位)を説明して
3) 事故りやすい整合性バグもセットで教えて
8. ここでミニ練習✍️🌸(3分でOK)
次の「おかしな状態」を見て、直感で答えてみてね😊✨
問題:どれが“整合性が壊れてる”状態?🚨
A. 注文が未確定、明細が2件ある🧾 B. 注文が確定、明細が0件🧾❌ C. 支払い済み、注文が未確定💳❌ D. 注文が確定、支払いが未完了(支払い待ち)⏳
✅ 答え(考え方)
- B と C は危険:多くの業務ルールで「ありえない組み合わせ」になりがち😵💫
- A と D はありえる:未確定でも明細は作るし、確定後に支払い待ちも普通にあるよね😊
こういう「ありえない状態」を作らせないのが、 **集約(ルールの責任者)+境界(まとめて確定)**の役目だよ🛡️✨
9. まとめ(この章で押さえたこと)🎀✨
- 集約=**整合性を守る“まとまり”**🌳
- 境界=**1回で成功/失敗させる“区切り”**🔒
- 目的=整合性バグを減らして、事故りにくい設計にする🛡️
- 最後はカフェ注文アプリで、実際に「切る→実装」までやる☕️📦✨
10. 次章でやること予告👀✨
次は、プロジェクト作成〜最小の開発の流れを整えつつ、AI拡張の使い方ルールも“型”として固めます🪟🛠️🤖