第15章:「AI使用前提」のDDD 💡🤖

定型コードはAIに、人間は「境界線」を引くことに集中する!✂️🧠
1) まず結論:AIは“手”、あなたは“設計者”🦾👩💻✨
AIって、コードを書くスピードが本当に速いですよね🚀 でもDDDでいちばん大事なのは「キレイなコード」よりも “境界線(ここからここまで)” をちゃんと引くことです✂️📦
- ✅ AIが得意:同じ形のコード量産(DTO、CRUD、Mapper、テスト雛形…)📄📄📄
- ✅ 人間が得意:何をどこに置くか決める(境界・責務・言葉の定義)🧭
つまり… 「AIに迷わせないために、先に境界線を置く」 が勝ちパターンです🏆🤖✨
2) “境界線”ってなに?どれを引けばいいの?🧱🧩
DDDでいう境界線は、ざっくり言うとこの3つが超重要です📌✨
A. 言葉の境界線(ユビキタス言語)📚🗣️
同じ単語でも意味が違うと事故ります💥 例:
- 「ユーザー」=購入者?管理者?配達員?😵💫 → コンテキストごとに言葉を固定するのがDDDっぽさです✨
B. 変更の境界線(境界づけられたコンテキスト)🧩✂️
「この変更はどこに閉じる?」を考えます🔧 変更が起きたとき、1か所だけ直せると最強💪✨
C. 整合性の境界線(集約・トランザクション)🧷🔒
「一度の操作で、絶対に崩れちゃダメなルール」を守る範囲です🛡️ ここが曖昧だと、AIが勝手に複数のものを同時更新して大混乱になりがち😇💥
3) AIに任せてOKな“定型”ってどれ?🤖🧰
任せていいのは「判断が少ない」「形が決まってる」ものです✅
- DTO / Request / Response の作成📦
- Controller / Endpoint の雛形🧱
- EF Core の設定(EntityTypeConfiguration)🗃️
- Repository のI/F雛形📦
- テスト雛形(Arrange-Act-Assert)🧪
- バリデーションの枠(中身のルールは人間が決める)🧯
逆に、ここは任せすぎ注意⚠️
- 「この機能はどのコンテキスト?」
- 「このルールはどこで守る?」
- 「集約はどれ?更新の入口はどこ?」 ここをAIに丸投げすると、だいたい境界が溶けます🫠
4) 実践ミニ:カフェ予約アプリで“境界線”を先に置く☕📅✨
例として「カフェ予約アプリ」を想像してみます🍰
まず人間が決める(ここが一番大事)🧠✍️
コンテキスト案(例)
- 予約:席を予約する、変更する、キャンセルする📅
- 会員:会員情報、退会、メール変更👤
- 決済:支払い、返金💳
この時点で、あなたはAIにこう言えます👇 「予約コンテキストの中でだけ完結するコードを作ってね」って🧭✨
5) AIに投げる“良い指示”テンプレ(コピペOK)📋🤖✨
AIは指示がフワッとしてると、境界を跨いだコードを平気で作ります😇 なので、最初に “柵(しきい)” を置きましょう✂️🧱
テンプレ①:境界線づくり(AIに壁打ちさせる)🧠🤝
あなたはDDDの設計コーチです。
次のアプリ案について、境界づけられたコンテキスト案を3〜5個出してください。
それぞれに「責務」「持つデータ」「絶対守るルール(不変条件)」「他コンテキストとのやりとり(入力/出力)」を箇条書きで。
アプリ案:
- カフェ予約:予約作成/変更/キャンセル
- 会員登録、ログイン
- 事前決済(将来的に入れるかも)
テンプレ②:定型コード生成(予約コンテキストだけ作らせる)🏗️🤖
「予約」コンテキストのみ実装してください。他コンテキスト(会員/決済)には依存しないでください。
条件:
- .NET 10 / C# 14
- Domain層:エンティティ、値オブジェクト、ドメインルール(不変条件)だけ
- Infrastructure層のDBやEF Core属性はDomain層に持ち込まない
- 予約の不変条件:
1) 人数は1〜8
2) 予約時間は現在より未来のみ
3) 同一顧客が同じ日時に重複予約できない(チェックはApplication側でもOK)
出力:
- Domain層のクラス設計(Reservation, ReservationId, CustomerId, PartySize など)
- Application層のユースケース(CreateReservation)
- できれば簡単なテスト雛形
テンプレ③:境界線レビュー(AIに“意地悪チェック”させる)😈🔍
次のコードをレビューして、DDDの境界線が破られていないか指摘してください。
特に以下を重点:
- Domain層がEF CoreやHTTP、DBに依存していないか
- 予約の不変条件が「どこで」守られているか
- 「会員」や「決済」の概念が予約コンテキストに混入していないか
問題があれば、修正案も出してください。
6) C#の“最新土台”はこれでOK(Windows / Visual Studio)🪟🧰
2025年の最新前提なら、.NET 10(LTS)+ C# 14 が基準でOKです✅
- .NET 10 は 2025-11-11 リリースのLTS (Microsoft)
- C# 14 は .NET 10 上でサポートされる最新リリース (Microsoft Learn)
- Visual Studio 2026 は .NET 10 と一緒に提供&C# 14をフルサポート (Microsoft for Developers)
Visual Studioでの最小構成イメージ🧩
-
Solution
MyApp.Domain(Class Library)📦MyApp.Application(Class Library)🧠MyApp.Infrastructure(Class Library)🗃️MyApp.Web(ASP.NET Core)🌐
ポイント:参照方向は内側へ⬅️(Domainが一番内側)🧅✨ Domainが外(DBやWeb)を知らない形にすると、AIが生成しても崩れにくいです👍
7) “AIに迷わせない”チェックリスト✅🤖🧭
AIが作ったコードを受け取ったら、ここだけ見ればOKです✨
- ✅ Domainに
Entity Frameworkの属性が入ってない?([Key]とか)🧨 - ✅ Domainに
HttpContextとかControllerとか出てきてない?🚫 - ✅ 「予約」の中に「決済」の型が混ざってない?💳🫠
- ✅ ルール(人数1〜8など)が、どこかで必ず守られてる?🛡️
- ✅ 更新の入口が散ってない?(いろんな場所で勝手に更新してない?)🧷
ここを守るだけで、AI時代のDDDが一気に安定します🎉✨
8) ちいさな演習(15分)⏱️📝✨
あなたが作りたいアプリで、これだけやってみてください😊
- アプリの機能を3つだけ書く 📝
- 登場人物(用語)を10個だけ書く 📚
- 「変更が閉じる単位」を2〜4個に分ける ✂️📦
- テンプレ①をAIに投げる🤖
- 返ってきた境界線を、あなたが“人間の感覚”で微調整🧠✨
終わりです🎊 この「境界線づくり」を毎回やるだけで、AIにコードを大量生産させても迷子になりにくくなります🧭🤖💕
必要なら、この章の流れのまま「あなたの作りたいアプリ案」を材料にして、境界線案(コンテキスト案)を一緒に作るところまで一気にやれますよ☕✨