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

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下書き」「責務説明の文章」を作ってもらい、自分で直す✨