全体の章立て:高凝集・低結合(C#超入門)17章アウトライン📚✨
第1章:AI支援の使い方(この教材の共通ルール)🤖✨
-
ねらい🎯:AIを“便利に使って、混乱しない”状態になる
-
主な内容📚:案出しはAI💡/最終判断は人間🧠✅(責務混在🍲・依存増加🔗をチェック)/1章1〜2プロンプト🎀
-
ハンズオン🛠️:AI案を採用/不採用に分けて理由を書く📝
-
AIプロンプト🤖
- 「責務を3つに分ける案をクラス名つきで」
- 「その案は責務混在/依存増になってない?危険点3つ」
第2章:まず“変更が怖い”を体験する😱➡️😄
-
ねらい🎯:なぜ高凝集・低結合が必要か体感する
-
主な内容📚:変更が波及する典型例💥/壊れ方のパターン
-
ハンズオン🛠️:小変更でどこが壊れるか記録する📒
-
AIプロンプト🤖
- 「変更が怖いポイントを5つ、理由つきで指摘して」
第3章:用語をやさしく理解(凝集/結合)📚✨
-
ねらい🎯:「良い/悪い」を言葉にできる
-
主な内容📚:高凝集=目的でまとまる🎯/低結合=依存が必要最小🔗/結合ゼロは目標じゃない🙅♀️
-
ハンズオン🛠️:短いコード例で“凝集/結合”判定クイズ🧩
-
AIプロンプト🤖
- 「このクラスの責務を一文で説明して(短く)」
第4章:設計の判断軸は「変更理由」🧠✨
-
ねらい🎯:分け方の基準を覚える(好みで分けない)
-
主な内容📚:変更理由が同じものをまとめる🧲/UI・業務・外部I/Oを混ぜない🚪
-
ハンズオン🛠️:要件から「変わりそうな点」→境界線を引く🗺️
-
AIプロンプト🤖
- 「この機能の変更理由を5つ挙げて(UI/業務/I/Oで分類)」
第5章:ニオイ図鑑① God Class(何でも屋)🧟♀️💦
-
ねらい🎯:巨大クラスを見抜いて分割の入口に立つ
-
主な内容📚:症状の見分け方👀/責務ラベルで分解🏷️
-
ハンズオン🛠️:色分け→分割候補クラスを作る🎨
-
AIプロンプト🤖
- 「責務でグルーピングして、分割後のクラス名案も出して」
第6章:ニオイ図鑑② 混ぜるな危険(UI・業務・DB)🍲💥
-
ねらい🎯:混在が“変更の地獄”を生む理由を理解
-
主な内容📚:UI変更で業務が壊れる/DB変更で画面が壊れる😱
-
ハンズオン🛠️:UI/業務/I/Oを3箱に仕分け📦📦📦
-
AIプロンプト🤖
- 「このコードをUI/業務/I/Oに分類して、混在箇所を指摘して」
第7章:高凝集①「責務で切る」✂️🎯
-
ねらい🎯:クラスを“役割”で分けられるようになる
-
主な内容📚:1クラス1テーマ(細かすぎ注意⚖️)/公開メソッドを絞る🔒
-
ハンズオン🛠️:大きいクラスを2〜3クラスへ分割する🧩
-
AIプロンプト🤖
- 「分割後クラスの責務をそれぞれ一文で説明して」
第8章:高凝集②「データと振る舞いを近づける」🏠✨
-
ねらい🎯:ルールの置き場所で迷わなくなる
-
主な内容📚:データだけクラス問題📦/検証・計算を近くへ🧷
-
ハンズオン🛠️:金額/期限などのルールを適切な場所へ移す💰⏳
-
AIプロンプト🤖
- 「この検証ロジックの置き場所候補を3つ、理由つきで」
第9章:高凝集③「命名で設計する」🏷️💖
-
ねらい🎯:名前で責務を“見える化”する
-
主な内容📚:Manager/Util増殖の危険🚦/意図が伝わる名前🗣️
-
ハンズオン🛠️:リネームで責務が透ける状態へ✨
-
AIプロンプト🤖
- 「命名案を10個。責務が伝わる順に並べて」
第10章:低結合の入口「依存」を見える化👀🔗
-
ねらい🎯:密着ポイントを把握する
-
主な内容📚:new/static/具体参照が強結合になりやすい📌/依存の矢印🕸️
-
ハンズオン🛠️:簡易依存図を書いて“危険な線”を探す✍️
-
AIプロンプト🤖
- 「依存関係を文章で説明して。変更に弱い順も教えて」
第11章:低結合① まずは「引数で渡す」🎁✨
-
ねらい🎯:“中で作らない”感覚を身につける
-
主な内容📚:メソッド引数/コンストラクタ引数の使い分け📦
-
ハンズオン🛠️:new を外へ追い出し、引数で受け取る🔁
-
AIプロンプト🤖
- 「このnewを外に出すなら、何を引数にすべき?」
第12章:低結合② interfaceで差し替え(超入門)🔌✨
-
ねらい🎯:差し替え可能の気持ちよさを体験する
-
主な内容📚:interface=契約📜/外側(時計・ログ・DBなど)から始める⏰🪵💾
-
ハンズオン🛠️:IClockなどを差し替えて動作を変える🔄
-
AIプロンプト🤖
- 「最小のinterface設計(メソッド最小)を提案して」
第13章:低結合③ DI(依存性注入)※コンテナ無し💉✨
-
ねらい🎯:DIの本質(差し替え)を理解して使える
-
主な内容📚:コンストラクタ注入が基本👶/組み立て役(簡易Composition Root)🏗️
-
ハンズオン🛠️:Program側で依存を組み立てて注入する✅
-
AIプロンプト🤖
- 「この構成の“組み立て役”をどこに置くのが自然?理由も」
第14章:結合の種類① フラグ引数をやめる🚩💦
-
ねらい🎯:責務混在を生む分岐を減らす
-
主な内容📚:boolで挙動が変わる=混ざりやすい🍲/分割・方針化🧩
-
ハンズオン🛠️:フラグ→別メソッド or 方針オブジェクトへ🔁
-
AIプロンプト🤖
- 「このフラグ分岐の改善案を3つ(メリデメつき)」
第15章:結合の種類② static依存(便利だけど代償)⚡💣
-
ねらい🎯:staticの“効きすぎ”をコントロールできる
-
主な内容📚:差し替えできない=テストと変更に弱い🧪/ラッパー→interface化🔌
-
ハンズオン🛠️:static呼び出しをラッパーに閉じ込める📦
-
AIプロンプト🤖
- 「static依存を弱める最小変更案を段階的に出して」
第16章:モジュール境界(迷子防止の土台づくり)📁🧭🔒
-
ねらい🎯:プロジェクトが大きくなっても崩れない“置き場所ルール”を作る
-
主な内容📚
- フォルダ/名前空間のルール(小さく始める)📏
- UI / Application / Domain / Infrastructure の箱分け📦
- 公開面を絞る(public/internalの超入門)🔒
- 依存の向き:内側(Domain)を守る🛡️
-
ハンズオン🛠️
- 既存コードを4箱へ仕分けして「依存の矢印」が自然になるように整える✍️➡️
-
AIプロンプト🤖
- 「この機能を4箱(UI/App/Domain/Infra)にどう仕分ける?理由も」
- 「依存の向きが変になりそうな箇所を指摘して」
第17章:総まとめミニプロジェクト(設計→実装→最小テスト)💪🎉
-
ねらい🎯:学んだことを“自分の手で”再現できるようにする
-
主な内容📚
- 17A:設計だけ(責務・依存矢印・クラス一覧)🗺️
- 17B:実装(高凝集・低結合を崩さず進める)🛠️
- 17C:最小テスト(I/O差し替え1本だけでもOK)🧪
-
ハンズオン🛠️
- 題材例:備品貸出📦/学食注文🍛/ToDo+締切通知✅(どれか1つ)
- まず“設計が合格ライン”に達してから実装へ進む(迷子防止)🧭
-
AIプロンプト🤖
- 「この設計案に“責務混在”と“依存増えすぎ”がないか、危険点TOP5」
- 「最小テスト1本で守るべき仕様(壊れやすい所)を提案して」