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

全体の章立て:高凝集・低結合(C#超入門)17章アウトライン📚✨

第1章:AI支援の使い方(この教材の共通ルール)🤖✨

  • ねらい🎯:AIを“便利に使って、混乱しない”状態になる

  • 主な内容📚:案出しはAI💡/最終判断は人間🧠✅(責務混在🍲・依存増加🔗をチェック)/1章1〜2プロンプト🎀

  • ハンズオン🛠️:AI案を採用/不採用に分けて理由を書く📝

  • AIプロンプト🤖

    1. 「責務を3つに分ける案をクラス名つきで」
    2. 「その案は責務混在/依存増になってない?危険点3つ」

第2章:まず“変更が怖い”を体験する😱➡️😄

  • ねらい🎯:なぜ高凝集・低結合が必要か体感する

  • 主な内容📚:変更が波及する典型例💥/壊れ方のパターン

  • ハンズオン🛠️:小変更でどこが壊れるか記録する📒

  • AIプロンプト🤖

    1. 「変更が怖いポイントを5つ、理由つきで指摘して」

第3章:用語をやさしく理解(凝集/結合)📚✨

  • ねらい🎯:「良い/悪い」を言葉にできる

  • 主な内容📚:高凝集=目的でまとまる🎯/低結合=依存が必要最小🔗/結合ゼロは目標じゃない🙅‍♀️

  • ハンズオン🛠️:短いコード例で“凝集/結合”判定クイズ🧩

  • AIプロンプト🤖

    1. 「このクラスの責務を一文で説明して(短く)」

第4章:設計の判断軸は「変更理由」🧠✨

  • ねらい🎯:分け方の基準を覚える(好みで分けない)

  • 主な内容📚:変更理由が同じものをまとめる🧲/UI・業務・外部I/Oを混ぜない🚪

  • ハンズオン🛠️:要件から「変わりそうな点」→境界線を引く🗺️

  • AIプロンプト🤖

    1. 「この機能の変更理由を5つ挙げて(UI/業務/I/Oで分類)」

第5章:ニオイ図鑑① God Class(何でも屋)🧟‍♀️💦

  • ねらい🎯:巨大クラスを見抜いて分割の入口に立つ

  • 主な内容📚:症状の見分け方👀/責務ラベルで分解🏷️

  • ハンズオン🛠️:色分け→分割候補クラスを作る🎨

  • AIプロンプト🤖

    1. 「責務でグルーピングして、分割後のクラス名案も出して」

第6章:ニオイ図鑑② 混ぜるな危険(UI・業務・DB)🍲💥

  • ねらい🎯:混在が“変更の地獄”を生む理由を理解

  • 主な内容📚:UI変更で業務が壊れる/DB変更で画面が壊れる😱

  • ハンズオン🛠️:UI/業務/I/Oを3箱に仕分け📦📦📦

  • AIプロンプト🤖

    1. 「このコードをUI/業務/I/Oに分類して、混在箇所を指摘して」

第7章:高凝集①「責務で切る」✂️🎯

  • ねらい🎯:クラスを“役割”で分けられるようになる

  • 主な内容📚:1クラス1テーマ(細かすぎ注意⚖️)/公開メソッドを絞る🔒

  • ハンズオン🛠️:大きいクラスを2〜3クラスへ分割する🧩

  • AIプロンプト🤖

    1. 「分割後クラスの責務をそれぞれ一文で説明して」

第8章:高凝集②「データと振る舞いを近づける」🏠✨

  • ねらい🎯:ルールの置き場所で迷わなくなる

  • 主な内容📚:データだけクラス問題📦/検証・計算を近くへ🧷

  • ハンズオン🛠️:金額/期限などのルールを適切な場所へ移す💰⏳

  • AIプロンプト🤖

    1. 「この検証ロジックの置き場所候補を3つ、理由つきで」

第9章:高凝集③「命名で設計する」🏷️💖

  • ねらい🎯:名前で責務を“見える化”する

  • 主な内容📚:Manager/Util増殖の危険🚦/意図が伝わる名前🗣️

  • ハンズオン🛠️:リネームで責務が透ける状態へ✨

  • AIプロンプト🤖

    1. 「命名案を10個。責務が伝わる順に並べて」

第10章:低結合の入口「依存」を見える化👀🔗

  • ねらい🎯:密着ポイントを把握する

  • 主な内容📚:new/static/具体参照が強結合になりやすい📌/依存の矢印🕸️

  • ハンズオン🛠️:簡易依存図を書いて“危険な線”を探す✍️

  • AIプロンプト🤖

    1. 「依存関係を文章で説明して。変更に弱い順も教えて」

第11章:低結合① まずは「引数で渡す」🎁✨

  • ねらい🎯:“中で作らない”感覚を身につける

  • 主な内容📚:メソッド引数/コンストラクタ引数の使い分け📦

  • ハンズオン🛠️:new を外へ追い出し、引数で受け取る🔁

  • AIプロンプト🤖

    1. 「このnewを外に出すなら、何を引数にすべき?」

第12章:低結合② interfaceで差し替え(超入門)🔌✨

  • ねらい🎯:差し替え可能の気持ちよさを体験する

  • 主な内容📚:interface=契約📜/外側(時計・ログ・DBなど)から始める⏰🪵💾

  • ハンズオン🛠️:IClockなどを差し替えて動作を変える🔄

  • AIプロンプト🤖

    1. 「最小のinterface設計(メソッド最小)を提案して」

第13章:低結合③ DI(依存性注入)※コンテナ無し💉✨

  • ねらい🎯:DIの本質(差し替え)を理解して使える

  • 主な内容📚:コンストラクタ注入が基本👶/組み立て役(簡易Composition Root)🏗️

  • ハンズオン🛠️:Program側で依存を組み立てて注入する✅

  • AIプロンプト🤖

    1. 「この構成の“組み立て役”をどこに置くのが自然?理由も」

第14章:結合の種類① フラグ引数をやめる🚩💦

  • ねらい🎯:責務混在を生む分岐を減らす

  • 主な内容📚:boolで挙動が変わる=混ざりやすい🍲/分割・方針化🧩

  • ハンズオン🛠️:フラグ→別メソッド or 方針オブジェクトへ🔁

  • AIプロンプト🤖

    1. 「このフラグ分岐の改善案を3つ(メリデメつき)」

第15章:結合の種類② static依存(便利だけど代償)⚡💣

  • ねらい🎯:staticの“効きすぎ”をコントロールできる

  • 主な内容📚:差し替えできない=テストと変更に弱い🧪/ラッパー→interface化🔌

  • ハンズオン🛠️:static呼び出しをラッパーに閉じ込める📦

  • AIプロンプト🤖

    1. 「static依存を弱める最小変更案を段階的に出して」

第16章:モジュール境界(迷子防止の土台づくり)📁🧭🔒

  • ねらい🎯:プロジェクトが大きくなっても崩れない“置き場所ルール”を作る

  • 主な内容📚

    • フォルダ/名前空間のルール(小さく始める)📏
    • UI / Application / Domain / Infrastructure の箱分け📦
    • 公開面を絞る(public/internalの超入門)🔒
    • 依存の向き:内側(Domain)を守る🛡️
  • ハンズオン🛠️

    • 既存コードを4箱へ仕分けして「依存の矢印」が自然になるように整える✍️➡️
  • AIプロンプト🤖

    1. 「この機能を4箱(UI/App/Domain/Infra)にどう仕分ける?理由も」
    2. 「依存の向きが変になりそうな箇所を指摘して」

第17章:総まとめミニプロジェクト(設計→実装→最小テスト)💪🎉

  • ねらい🎯:学んだことを“自分の手で”再現できるようにする

  • 主な内容📚

    • 17A:設計だけ(責務・依存矢印・クラス一覧)🗺️
    • 17B:実装(高凝集・低結合を崩さず進める)🛠️
    • 17C:最小テスト(I/O差し替え1本だけでもOK)🧪
  • ハンズオン🛠️

    • 題材例:備品貸出📦/学食注文🍛/ToDo+締切通知✅(どれか1つ)
    • まず“設計が合格ライン”に達してから実装へ進む(迷子防止)🧭
  • AIプロンプト🤖

    1. 「この設計案に“責務混在”と“依存増えすぎ”がないか、危険点TOP5」
    2. 「最小テスト1本で守るべき仕様(壊れやすい所)を提案して」