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

「設計の関心の分離(SoC)」教育コンテンツ:17章アウトライン🎯✨

第1章:SoCって何?まずは一言で掴む📌😊

  • SoCの超短い定義
  • “混ぜると地獄”が起きる理由
  • 今日のゴール

第2章:混ざったコードが生む“修正地獄”あるある😇💥

  • UI変更で業務が壊れる
  • DB変更で画面が崩れる
  • 「影響範囲が読めない」が一番つらい😭

第3章:SoCとSOLID(特にSRP)の関係🧩✨

  • SRP(単一責務)とほぼ親戚👭
  • 「責務=変更理由」
  • まずは“責務を言葉にする”練習

第4章:分離の基本はこの3つだけ覚えればOK🙆‍♀️🪄

  • 表示(UI)
  • ルール(業務)
  • 外部(DB/ファイル/HTTP)
  • どれに属する?ミニ仕分けクイズ🎮

第5章:境界線を引く練習(最初は線引きだけで勝ち)✍️✨

  • 入口(入力)と出口(出力)
  • “混ざってる場所”を発見するコツ🔍
  • 直す順番の基本(危険度の低いところから)

第6章:UIの関心を分ける(イベントハンドラを痩せさせる)🖥️🍃

  • 画面が持つべきもの/持たないもの
  • 「ボタン押下→業務呼び出し」までに絞る
  • WinForms/WPFどちらでも通じる考え方👌

第7章:業務ロジックの関心を分ける(ルールの置き場所)🧠✨

  • “業務の言葉”でメソッドを作る
  • 例:割引、状態遷移、制約チェック
  • 画面都合を業務に混ぜないコツ

第8章:データアクセスの関心を分ける(DBの都合を外に追い出す)🗄️🚪

  • 業務がDB直呼びすると何が困る?
  • “保存する人”を別にする発想
  • Repositoryっぽい最小形(ライト版)🧩

第9章:なぜ「データの箱」を分けるの?(God Classの回避)📦🙅‍♀️

  • “1つの万能クラス”が引き起こす悲劇
  • 画面用・DB用・業務用は「関心」が違う
  • 「分ける」=変更の影響を止める壁🧱

第10章:実践!データの詰め替え(ViewModel / DTO / Entity)🔄✨

  • ViewModel(画面)、DTO(外部)、Entity(ルール)の使い分け
  • 「詰め替え(Mapping)」は面倒だけど“保険”になる
  • 手動マッピング vs AutoMapper(最初は手動がおすすめ)

第11章:依存の向き(DIPの入口)をSoCで体験🧲🌟

  • 「中心(業務)」を守る依存の向き
  • interface=差し替え口🚪
  • “外側の都合”を内側に入れない

第12章:DI(依存性注入)の超入門(まずはコンストラクタ注入)💉😊

  • newしないで渡すだけ
  • テストで差し替えできる嬉しさ
  • DIコンテナは“必要になってから”でOK👌

第13章:テストしやすいSoC(I/O境界の分離)🧪✨

  • テスト不能の原因=I/O混入
  • “純粋ロジック”を中心へ寄せる
  • スタブ/モックは最小でOK🙆‍♀️

第14章:小さなリファクタでSoCに近づく手順🔧🌱

  • 一気に直さない!段階的にやる
  • メソッド抽出→クラス抽出→依存を外へ
  • “動くまま切る”が大事😌

第15章:ケーススタディ(フォーム地獄→3分離)📚🔥

  • Before:画面に全部入り
  • After:UI / UseCase / Repositoryに分ける
  • 読みやすさと修正しやすさを比較✨

第16章:AI導入前提の学び方(Copilot/Codexを味方に🤖💡)

  • 分離したい時のプロンプト例
  • “案を複数出させる”テク
  • AIの提案を採用する前のチェック✅

第17章:サイト用「共通リソース集」🧰🌸

  • 開発環境まとめ(Windows / Visual Studio / 必要ならVS Code)🪟

  • この教材で使う用語集(責務、境界、依存、I/O、DTO…)📖

  • テンプレ集

    • フォルダ構成例(UI/Application/Domain/Infrastructure)
    • interface命名の型(I〇〇Repository など)
    • テスト雛形(Arrange-Act-Assert)🧪
  • AIプロンプト集(章共通で使えるやつ)🤖✨

  • よくある詰まりQ&A(“分けすぎた…”など)😵‍💫➡️😄