MVC 教育コンテンツ:アウトライン(全17章)🧁✨
対象:C#初級〜中級/MVCは初めて/設計は超入門者 環境:Windows🪟 + Visual Studio前提(VS Code手順も補足OK)🛠️ AI:GitHub Copilot / OpenAI Codex等導入済み前提🤖💡
題材(通し課題):**CampusTodo(課題メモ)**📚✅ 機能:追加・一覧・完了・編集・削除・検索・保存…を少しずつ育てる🌱✨
第1章:MVCってなに?まず「分ける理由」を体で理解しよう🧠✨
-
ゴール:Model / View / Controller を“自分の言葉”で説明できる🗣️
-
内容
- MVCは「役割分担」=混ぜるほど地獄😇
- 変更に強くなる理由(UI変更が怖くなくなる)💪
-
ミニ演習:Todoアプリの処理を「表示」「ルール」「操作」に分解して紙に書く📝
-
AI活用🤖:「MVCをカフェに例えて説明して」みたいに、例えを3案出してもらう☕️
第2章:Windows開発環境セットアップ+AI相棒の使い方🤝🛠️🤖
-
ゴール:迷わずプロジェクトを作って実行できる🚀
-
内容
- Visual Studio:ソリューション/プロジェクトの基本📁
- VS Code:.NET CLIで作る補助ルート🧭
- AIの使い方ルール(小さく生成・差分レビュー・丸呑み禁止)⚠️
-
ミニ演習:Hello Consoleアプリ作成→実行🎉
-
AI活用🤖:「このエラーを直す“確認手順”を3つ」みたいに手順化してもらう🔎
第3章:題材要件を作る(MVCは“設計”なのでここ超大事)🧩📌
-
ゴール:作るものの境界を決められる🎯
-
内容
- ユーザーストーリー(例:課題を追加したい)
- 画面(表示)と操作(入力)の洗い出し🧾
-
ミニ演習:最低限の機能を決める(追加/一覧/完了)✅
-
AI活用🤖:「要件の抜け漏れチェック」をしてもらう(優先度付き)📋✨
第4章:Model入門①:データを“型”で表す(ルールの土台)📦🧠
-
ゴール:Todoのデータ構造をC#で表現できる
-
内容
- TodoItem(タイトル、期限、完了、重要度など)
- “無効な状態”を作らない意識(超入門)🛡️
-
ミニ演習:TodoItemを作って、仮データを3件作る🧪
-
AI活用🤖:「必要そうな項目」を出してもらい、必要最小限だけ採用✂️(YAGNI感覚✨)
第5章:View入門①:表示は“表示だけ”にする(ロジック混ぜない)🎨🙅♀️
-
ゴール:Viewの責務を守れる
-
内容
- Viewは「見せ方」担当👀
- ルール・更新処理をViewに書かない🚫
-
ミニ演習:Todo一覧を“文字で”きれいに表示する📋✨
-
AI活用🤖:「見やすい表示フォーマット案を3つ」提案してもらう💡
第6章:Controller入門①:入力を受けて“指示する”係🎮➡️🧠
-
ゴール:Controllerが“交通整理”だと分かる🚦
-
内容
- コマンド入力(add/list/done…)を受け取る
- どの処理を呼ぶか決める(振り分け)📮
-
ミニ演習:
listコマンドで一覧を表示できるようにする✅ -
AI活用🤖:「コマンド設計案(一覧/追加/完了…)」を出してもらう🧾
第7章:MVCのデータ流れを接続する(Model→Controller→View)🔁✨
-
ゴール:MVCが“回る”感覚をつかむ🌀
-
内容
- 操作→更新→再表示のループ
- 依存方向:View/ControllerがModelに触るのはOK、逆は基本NG🚫
-
ミニ演習:
done 2で2番目を完了→再表示✅ -
AI活用🤖:「今の構造、責務が混ざってない?」をレビューしてもらう🧐
第8章:Controller入門②:ルーティング(振り分け表)を作る🗺️📌
-
ゴール:入力→処理の対応表をきれいに管理できる
-
内容
- コマンド辞書/ルート表の考え方
- if地獄を避ける(KISS)🍀
-
ミニ演習:コマンド追加が楽になる構造に整える🧱
-
AI活用🤖:「ifを減らす設計案」を複数出してもらう(読みやすさ優先)✨
第9章:Model入門②:不変条件(守るべきルール)をModel側に置く🛡️📦
-
ゴール:ルールを散らさない
-
内容
- 例:タイトル空欄NG、期限は過去NG、など
- ルールはModel(またはDomain)で守る💪
-
ミニ演習:無効な入力をModel側で拒否できるようにする🚫
-
AI活用🤖:「このアプリの不変条件候補」を列挙してもらう🧠
第10章:View入門②:ViewModel(表示用の形)を導入する🧺✨
-
ゴール:表示の都合でModelを汚さない
-
内容
- Model=業務の形、ViewModel=表示の形
- 例:期限を「あと3日」表示にする、重要度ラベルなど🏷️
-
ミニ演習:一覧表示をViewModel経由にして読みやすくする📋✨
-
AI活用🤖:「ViewModelのプロパティ案」を出してもらい、最小構成に絞る✂️
第11章:Validationとエラーメッセージ(ユーザーに優しく)😌🚨
-
ゴール:失敗してもアプリが崩れない
-
内容
-
入力チェックはどこ?
- 形式チェック:Controller寄り
- ルールチェック:Model寄り
-
エラーメッセージの出し方(怖くしない)🌸
-
-
ミニ演習:エラーが出ても落ちずに案内できるようにする🧯
-
AI活用🤖:「優しい言い回しのエラーメッセージ案」を作ってもらう💬✨
第12章:Service層(Controllerを太らせない)🍔➡️🥗
-
ゴール:Fat Controllerを回避できる
-
内容
- Controllerは調整、Serviceは処理
- “どこに何を書くか”の判断基準🚦
-
ミニ演習:追加/完了処理をServiceに移す🔁
-
AI活用🤖:「この処理はController/Service/Modelどこ?」判定してもらう🧐
第13章:永続化①:保存の境界を作る(まずはファイル保存でもOK)💾📦
-
ゴール:保存をMVCにきれいに組み込める
-
内容
- 永続化は“外部”=Modelの外側に置く意識(SoC)🧼
- まずはファイル保存でOK(SQLite等は“後で置き換え可”)👍
-
ミニ演習:終了→再起動してもTodoが残る🎉
-
AI活用🤖:「保存形式(JSONなど)の設計案」を出してもらう📄
第14章:永続化②:Repositoryで差し替え可能にする🔁🧲
-
ゴール:保存先を変えても上が壊れない
-
内容
ITodoRepository的な抽象(DIP入門)- 実装(FileRepositoryなど)を外側に置く🧱
-
ミニ演習:Service→Repository経由で読み書きする✅
-
AI活用🤖:interface設計をAIに提案させて“最小の形”に整える✂️
第15章:テスタブルMVC:DI(依存を外から渡す)🔌🧪
-
ゴール:テストしやすい形にする
-
内容
- newを減らして差し替え可能にする
- 例:RepositoryやClockを注入する⏰
-
ミニ演習:FakeRepositoryを使って動作確認できるようにする🧸
-
AI活用🤖:「テストしにくいポイント」を指摘してもらう🔍
第16章:テスト入門(MVCの“守り方”)🛡️🧪✨
-
ゴール:壊れやすい所をテストで守れる
-
内容
- まず守るのはModel/Service(Viewは薄いので後回しでもOK)
- テストケース:正常/異常/境界値📏
-
ミニ演習:
- Modelのルール1本
- Serviceの処理1本 のテストを書く✍️
-
AI活用🤖:「境界値テスト案」を出してもらう(漏れ防止)🧠
第17章:総合演習(完成)+ふりかえり(MVCが身についたか確認)🎓🌸
-
ゴール:MVCで作って、説明できる状態にする
-
内容
- 機能追加(検索/並び替えなど軽め)🔍
- “MVCのどこが何を担当してるか”を言語化🗣️
- リファクタ(命名/分割/依存方向の再チェック)🧹
-
成果物
- CampusTodo完成版✅
- README(使い方+構造説明)📘
- “MVCの責務”を1枚メモで説明📝
-
AI活用🤖:「README下書き」「責務説明の文章」を作ってもらい、自分で直す✨