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

CQS(コマンド・クエリ分離)教育コンテンツ:15章アウトライン😊✨

第1章:CQSってなに?まずは超ざっくり掴もう🧠🌱

  • CQSの一言:**「変更するなら返さない/返すなら変更しない」**📌
  • 何が嬉しい?(バグ減る・読みやすい・テストしやすい)✨
  • 今日からのゴール:まず「混ぜない」を意識する😊

第2章:準備(Windows+Visual Studio)とミニプロジェクト作成🪟🛠️

  • Visual StudioでConsole/Minimal APIどっちでやる?(教材は両対応)🎮🌐

  • テストプロジェクトも一緒に作る(後で超ラク)🧪

  • AI拡張(Copilot/Codex)を“教材用に安全設定”する🤖🧷

    • 命名提案OK、設計判断は人が確認、などルール作り

第3章:CommandとQueryの見分け方(判断の軸)🎯🧩

  • Command:状態変更(Create/Update/Delete)🔧
  • Query:参照(Get/List/Search)🔍
  • 「曖昧な例」も練習:ログ、キャッシュ、時刻取得など🌀
  • 覚え方:“データが変わった?”で判断👀

第4章:アンチパターンを体験しよう(混ぜると何が起きる?)😇💥

  • “Queryっぽいのに内部で更新”の怖さ👻
  • “Commandなのに値を返しまくり”のモヤモヤ📦
  • デバッグで「副作用の追跡が地獄」体験🪦
  • ここでCQSの価値が腹落ちする✨

第5章:戻り値の基本ルール(Commandは何を返す?)📦✅

  • Commandは基本 void/Task(+失敗は別で扱う)

  • 例外:IDだけ返したい/作成結果を知りたい🪪

  • 落とし所パターン:

    • ID返却パターン
    • Result返却パターン(成功/失敗)🎁
  • “返しすぎ”を避けるコツ🧠


第6章:副作用の整理(見えない変更を見える化)👻⚠️

  • 副作用の種類:DB・外部API・ファイル・メール・イベント📨

  • Query側に副作用が混ざる典型例(キャッシュ更新等)🧊

  • 設計超入門の落とし所:

    • Queryは原則ピュア寄り
    • どうしても必要なら“例外として明示”📝

第7章:まずは小さい題材でCQS(ToDoで分ける)📝🍰

  • Query:一覧/詳細/検索🔍
  • Command:追加/完了/削除✅🗑️
  • 命名のコツ(動詞・目的語・対象)✍️
  • “分けるだけで読みやすい”を体験する😊✨

第8章:最小の設計型(Commands/Queriesクラスで分離)🏗️🧱

  • TodoCommandsTodoQueries の作り方
  • 依存(Repositoryなど)を外から渡す(DIの入口)🔌
  • 「newしない」のメリットを軽く体験✨
  • 初学者向け:まずはコンストラクタ注入だけでOK👌

第9章:CQSとエラー設計①(失敗の種類を分ける)😵‍💫🧠

  • 予測できる失敗(バリデーション等)📋
  • 予期しない障害(DB落ち等)💥
  • 「どこまでが仕様で、どこからが障害?」境界の考え方🚧
  • 初学者向けの基準を固定する📌

第10章:CQSとエラー設計②(例外/Resultの使い分け)🎁🧯

  • Queryの失敗:null?例外?Result?🤔
  • Commandの失敗:Resultで返すと何が嬉しい?✨
  • “ユーザー向けエラー”と“ログ向け詳細”の分離🪞📝
  • 実装の型:Result<T> / Result みたいな考え方(入門)📦

第11章:CQSとテスト①(Queryはラク勝ち🧪🏆)

  • Queryは入力→出力のテストが書きやすい😍
  • テスト観点:境界値、空、並び順、フィルタなど🔍
  • Visual Studioのテスト実行・デバッグの基本🛠️
  • AIでテストケース案を出す方法🤖📝

第12章:CQSとテスト②(Commandの副作用を確かめる🎭🧪)

  • Commandは“何が変わったか”を確認する✅
  • スタブ/モック超入門(難しい言葉は最小限)🎭
  • 外部I/O(DB/HTTP)を差し替えてテストする感覚🔌
  • AIにモック案を出させる時の注意⚠️

第13章:実務っぽい形へ①(Command/Queryオブジェクト化)📦🚚

  • CreateTodoCommand / GetTodosQuery みたいなDTO風の形
  • “引数が増えると辛い”問題を解決する✨
  • バリデーションを置く場所の考え方📍
  • 命名とフォルダ構成の例🗂️

第14章:実務っぽい形へ②(Handler化で責務を固定)👩‍🍳📨

  • Handlerの役割(1機能=1ハンドラ)🎯
  • Controller/Endpointは薄く、Handlerに寄せる🧼
  • 規模が大きくなっても崩れにくい理由🧱
  • “依存の向き”を軽く意識(設計の入口)🧭

第15章:AI活用+総合演習(卒業制作🎓🎉)

  • 演習:注文ミニ版(Order)💳📦

    • Query:注文一覧/詳細
    • Command:作成/支払い/キャンセル
  • AI活用:

    • 雛形生成の指示テンプレ🤖
    • “事故らない”レビュー質問テンプレ🧷
  • 最終チェックリスト✅

    • Queryが状態変更してない?
    • Commandが値を返しすぎてない?
    • 失敗の扱いが統一されてる?
    • テストが書きやすい形?🧪✨
  • 次に進む道:CQRSはいつ?(触るだけ)👣📚


必要なら、この15章アウトラインをさらに授業っぽくして、各章に👇を付けた「完全シラバス」にできます😊✨

  • 学習ゴール🎯/やることリスト🧾/ミニ演習🧩/AIへの指示例🤖/よくある詰まりポイント🧱

次は「Console版で進める」か「Minimal API版で進める」か、どっち寄りでシラバス化します?😊