依存関係ルール(Dependency Rule)教育アウトライン:全16章🧭🧱✨
第1章 依存ってなに?怖さの正体を知ろう😱🔗
- 依存=「矢印」➡️の感覚
- 変更がどこまで波及する?💥
- ありがちな事故例(UIがDB都合に引きずられる等)😭
- 演習:using/参照を増やして壊れ方を見る👀
- AI:依存関係を「文章+簡易図」で説明させる🤖✍️
第2章 Dependency Ruleの一言まとめ:矢印の向きを固定する🧭➡️
- “中心(方針)”は“外側(詳細)”に依存しない🎯
- 「変わりやすいもの」に引っ張られない設計
- ルールを守ると何が嬉しい?(変更が怖くない)😊
- AI:中心/外側を分類させる📌🤖
第3章 層の考え方入門:中心と外側の地図を作る🧅🗺️
- Domain / Application / Infrastructure / UI の超入門📚
- “長生きするルール”と“交換されがちな詳細”🌱🔁
- 演習:クラスを4分類してみる📝
- AI:分類の理由を説明させて理解を固める🤖💬
第4章 まずは物理で守る:Visual Studioでプロジェクト分割📦🛠️
- Solutionに複数プロジェクトを作る(例:Domain/Application/Infra/UI)🏗️
- まずは「分けるだけ」やる(ここでは参照ルールはまだ深追いしない)😊
- 演習:テンプレで土台を作る🧱
- AI:ソリューション構成の提案を出させる🤖📐
第5章 プロジェクト参照ルール:どこがどこを参照していい?🚦➡️
- 参照の基本ルールを決める(例:Domain→InfraはNG)🚫
- “矢印の向き”を図にして共有する🗺️
- 演習:わざとNG参照してビルドで止める💥
- AI:参照ルールを「チーム向け規約」に整形させる🤖📜
第6章 依存を守る最重要テク:インターフェースの置き場所🧷🎯
- Interfaceは中心側に置く🏠
- 実装は外側(Infra)に置く🧰
- 演習:IRepositoryを中心に置き、Infraで実装する🔁
- AI:I/F配置のレビューをさせる🤖🔍
第7章 DI入門:newしないで渡す(コンストラクタ注入)📥🧪
- なぜnewが依存を固定しちゃう?🧨
- コンストラクタ注入の基本✨
- 演習:差し替え可能にする(本番/テスト)🔄
- AI:DI化リファクタ案を出させる🤖🛠️
第8章 Composition Root:組み立ては“外側”でやる🏗️🧭
- どこで依存を組み立てるのが正解?(UI側に寄せる)📌
- “中心は知らない”を徹底する😌
- 演習:Program.cs等に組み立てを集約する🧩
- AI:組み立て場所の改善案を出す🤖💡
第9章 境界の型:DTO/Port/Adapterの超入門🚪📦
- 層をまたぐときは“箱”を用意する🎁
- ドメイン型を外に漏らさない方針🫧
- 演習:API用DTOを作ってマッピングする🔁
- AI:境界の責務を文章化🤖✍️
第10章 “破れない”最短ルート①:参照を切って守る✂️🚫
- まずは一番強い方法=プロジェクト参照の制御💪
- 「守れない構造」を作らない設計🧱
- 演習:参照できない状態を作って安心感を得る😊
- AI:依存が混ざってる箇所の特定🤖🔎
第11章 “破れない”最短ルート②:公開範囲を絞って守る🔒🧼
- publicが増えると依存が漏れる😵
- internal / 公開APIの設計(入口を限定する)🚪
- 演習:公開したいものだけ残して整理🧹
- AI:公開API一覧の提案🤖📋
第12章 アーキテクチャテスト入門:違反したら検知する🧪🚨
- 依存関係ルールを「テストで保証」する✅
- xUnitで“参照禁止”を確認する考え方
- 演習:最小の「違反検知テスト」を1本入れる🧫
- AI:テスト観点とケース案を作らせる🤖🧾
第13章 Shared地獄を回避①:共有していいもの・ダメなもの📦⚠️
- Sharedが増えると全員が依存する…😇
- 共有OK例:契約(DTO/IF)、プリミティブ、薄いユーティリティ
- 共有NG例:業務ルール、便利機能の寄せ集め🌀
- 演習:Shared候補をOK/NG判定⚖️
- AI:Shared提案のリスク評価🤖🕵️♀️
第14章 Shared地獄を回避②:契約(Contract)を中心に置く📜🎯
- “共有”の正体は多くの場合「契約」🤝
- 契約は中心寄りに置き、実装詳細は外側へ🧭
- 演習:契約プロジェクト(Contracts)を作る場合のルール設計📦
- AI:契約のバージョニング方針案🤖🔁
第15章 横断関心の扱い:ログ・設定・例外を中心に混ぜない🧼🧩
- ログは“観測”のため、でも中心を汚さない📈
- 設定値は境界で解釈して中心に渡す🧭
- 例外は境界で翻訳(中心はドメインの言葉で)🗣️
- 演習:Result/ドメインエラー→外側でHTTP/例外変換🔁
- AI:横断関心のルールをチェックリスト化🤖✅
第16章 仕上げプロジェクト:小さく作って、守り続ける🏁🎀
-
ミニ題材:注文(Order)/会員(User)などで Domain / App / Infra / UI を分けて完成🛒🎮
-
チェックリストで自己レビュー✅
- 中心→外側に依存してない?
- I/Fは中心側?
- 組み立ては外側?
- 境界で変換してる?
- 違反検知(テスト/仕組み)ある?
-
AI:PRテンプレ/レビュー観点を作らせて運用につなげる🤖📝
章の流れの意図(やさしく)😊🌸
- 前半(1〜3)で「地図」🗺️
- 中盤(4〜9)で「作り方」🛠️
- 後半(10〜15)で「壊れない仕組み&事故回避」🧱🚨
- 最後(16)で「完成+運用」🏁✨ → 最終盤だけ詰め込まず、守り方を分散させてあります💖