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

CQS(コマンド・クエリ分離)教材アウトライン(全15章)🌸💻✨

(TypeScript 2026/Windows+VS Code/AI導入済み前提🤖)

第1章:CQSってなに?超ざっくりつかむよ〜🧸✨

  • Command / Query の言葉の意味
  • 「混ぜると事故る」直感を作る💥
  • 今日のゴール:CQSの一文ルールを覚える📝

第2章:混ぜ混ぜ関数が起こす“あるある事故”集😇→😱

  • 1つの関数で「保存・取得・表示用整形」までやる例
  • 副作用が読めない/デバッグがしんどい
  • “何が起きた?”を説明できない状態を体験🎮

第3章:CQSの基本ルール(初心者版)✅✨

  • Command:状態を変える(副作用あり)🔧
  • Query:状態を読む(副作用なし)📖
  • 例外:どうしても迷うケースの判断(軽く)🧠

第4章:TypeScriptでCQSを書く時の型(戻り値の決め方)🧩

  • Queryは T を返す / Promise<T> を返す
  • Commandは void / Promise<void> が基本
  • 「Commandは何を返してもいい?」の答え(最小限だけOK)🎁

第5章:題材スタート(ToDoミニアプリ)をベタに作る📝💖

  • 追加・完了・一覧の機能を“まず混ぜて”作る
  • あえて混ぜて、後で良さを感じる作戦😎
  • VS Codeで動かす準備(最低限)🪟

第6章:分類ゲーム!これはCommand?Query?🎯✨

  • 例題で仕分け(10〜15問くらいのイメージ)
  • “更新っぽいけど参照っぽい”の罠(カウンタ・ログ等)🧨
  • 自分で判断できるミニ基準を作る🧠

第7章:リファクタ① まず関数を分ける(CQSの第一歩)✂️✨

  • addTodo() / completeTodo()(Command)
  • getTodos()(Query)
  • 名前付けルール:動詞で迷わないコツ📛

第8章:リファクタ② “境界”を作る(UIとロジックを分ける)🚪🧱

  • UI(入力/表示)とロジック(判断)を混ぜない
  • 「ロジックは純度高め」がテストと相性抜群🧪
  • どこまで分ければOK?やりすぎ防止🧯

第9章:Query設計:副作用ゼロにするコツ🍃✨

  • Query内でやらない:保存・更新・外部送信🙅‍♀️
  • “隠れ副作用”チェック(Date/乱数/グローバル)👀
  • どうしてもログが必要な時の置き場所📍

第10章:Command設計:返していいもの/ダメなもの🎁⚠️

  • 返してOK:ID、成否、最小の情報
  • 返しすぎ注意:「更新後の一覧を返す」問題🐘
  • 基本パターン:Command → Queryで再取得🔁

第11章:非同期のCQS(Promise版の基本だけ)🌐⏳

  • Promise<void>Promise<T> の分け方
  • fetch を使った超シンプル例(1個に絞る)🎯
  • “非同期でもルールは同じ”を体感する✨

第12章:発展おまけ:キャッシュしやすいQuery🍯

  • Queryが安定するとキャッシュが楽になる話
  • 「キャッシュしていい条件」ざっくり理解
  • 仕組みは深入りしない(発想だけ)🧠💡

第13章:テスト① Queryはテストが超簡単🧪🥳

  • Queryのテスト=入力→出力を比べるだけ
  • サンプル:getTodos() の並び替えやフィルタ
  • AIでテスト雛形を作るミニコーナー🤖✍️

第14章:テスト② Commandは“副作用”を分離してテストする🧩🧪

  • Commandのテストが難しい理由(副作用)
  • 依存を外から渡す(DIの超入門だけ)📦
  • AIでモック案を出させるミニコーナー🤖🪄

第15章:総まとめ:よくある失敗・実務の落とし所・次の一歩🚀💖

  • 失敗トップ3

    • Queryが更新してる😱
    • Commandが返しすぎ🎁💥
    • 分けたのに命名が微妙で読めない📛
  • CQSとCQRSは別物(やりすぎ注意)⚖️

  • 次に学ぶと強い:SoC / DI / テスタブル / エラーモデリング📚✨


追加:AI(Copilot/Codex)を“教材に自然に混ぜる”運用案🤖💡

各章の最後に小さく入れるのがおすすめです☺️

  • 「この章のコードをCQSに直して」
  • 「Command/Queryを分類して理由つけて」
  • 「このQueryに副作用がないかチェックして」
  • 「テストケースを3つ提案して」