メインコンテンツまでスキップ

依存関係ルール(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)で「完成+運用」🏁✨ → 最終盤だけ詰め込まず、守り方を分散させてあります💖