TypeScript × TDD(2026)詳細アウトライン: 56章 🧪✨
前提:Windows🪟 / VS Code🧑💻 / TypeScript初級〜中級 / TDDは初めて / 設計は超入門 / AI(Copilot/Codex等)導入済み🤖✅ ※章ごとに「🎯目的 / 📚学ぶ / 🧪手を動かす / 🤖AI / ✅チェック」つきだよ💕
Part 1:TDDの地図(まず安心して始める)🗺️🌱(1〜6)
1. TDDってなに?(1行で言える)🙂
- 🎯 目的:TDDを“手順”として説明できる
- 📚 学ぶ:テスト=仕様 / 実装=満たす / 整理=読みやすく
- 🧪 手:短いテストを読んで「保証してること」を日本語で書く
- 🤖 AI:要約→自分の言葉に言い直し
- ✅ チェック:「テストたくさん書くこと」になってない
2. Red→Green→Refactor を1回体験🚦
- 🎯:3ステップを体で覚える
- 📚:Redの作り方 / Green最小 / Refactorは後で
- 🧪:足し算関数で1サイクル回す
- 🤖:失敗ログを貼って原因→次の一手
- ✅:Greenで作り込みしない
3. “小さく刻む”基本(1テスト=1約束)🔪
- 🎯:仕様を小テストに分解できる
- 📚:正常→境界→異常の順
- 🧪:仕様文をテスト3本に分割
- 🤖:AIに「最小の順番」を3案出させる
- ✅:1ステップが大きすぎない
4. TDDが向く場所・向かない場所🎯
- 🎯:TDDの適用範囲を選べる
- 📚:純粋ロジック◎ / I/Oは境界で / UIは重要導線だけ
- 🧪:自分の作りたい機能を“テストしやすさ”で仕分け
- 🤖:仕分け改善案を出させる
- ✅:「全部同じやり方」にしてない
5. テストは仕様書(読み物にする)📘
- 🎯:読めるテストの感覚を掴む
- 📚:意図が伝わる命名 / AAAの考え方
- 🧪:悪いテスト例を「読み物」に直す
- 🤖:命名案3つ→誤解が少ないの採用
- ✅:実装の写しになってない
6. AI時代のTDDルール(使い方固定)🤖✅
- 🎯:AIを使っても品質が落ちない
- 📚:AIは案出し係、最終判断はテスト&意図
- 🧪:AI案を採用/却下して理由を書く
- 🤖:毎章同じ“質問テンプレ”を作る
- ✅:AIの提案が“仕様”になってない
Part 2:環境と習慣(回せる状態を作る)🛠️🪟(7〜14)
7. プロジェクト作成(フォルダだけ決める)📁
- 🎯:迷わない土台を作る
- 📚:src / tests の分離
- 🧪:空構成を作ってコミット
- 🤖:READMEの見出し案を作らせる
- ✅:ここで設定盛りすぎない
8. Node/TSの方針(最新版より“安定”)🧩
- 🎯:環境差で詰まらない
- 📚:LTS優先、TSは安定版を使う
- 🧪:node -v / npm -v / tsc -v確認
- 🤖:エラー文→原因→対処を箇条書き化
- ✅:バージョン迷子になってない
9. tsconfig最小セット(まず strict)🧷
- 🎯:型チェックを味方にする
- 📚:strictの意味、最低限の設定
- 🧪:tsconfig最小でビルド&テストが通る
- 🤖:設定の意味を“人間語”で説明させる
- ✅:必要十分に収まってる
10. モジュール(import/export)で迷わない🌿
- 🎯:import設定で詰まらない
- 📚:ESMの基本、拡張子/パスの考え方
- 🧪:1ファイル→2ファイルに分けてimport
- 🤖:設定差分を比較表にしてもらう
- ✅:コピペ設定になってない
11. Vitest導入(成功/失敗を体験)🧪
- 🎯:テストが動く
- 📚:describe/it/expect の最小
- 🧪:成功テスト1本+わざと失敗1本
- 🤖:雛形生成→削って最小化
- ✅:失敗ログを読める
12. Watch運用(保存→即テスト)🔁
- 🎯:TDDが気持ちよく回る
- 📚:watchの基本、短いサイクル
- 🧪:Red→Greenをwatchで回す
- 🤖:運用ルールを短くまとめさせる
- ✅:回すのが遅くない
13. VS Code Testingビュー(ワンクリック化)🧰
- 🎯:心理コストを下げる
- 📚:1本だけ実行/失敗だけ実行
- 🧪:テスト選択実行を3回やる
- 🤖:ショートカットメモを作らせる
- ✅:コマンド忘れても回せる
14. “1章の粒度”ルール(ブレ防止)📏
- 🎯:教材が崩れない
- 📚:1章=1ゴール=1〜3コミット
- 🧪:コミット規約を作る(例:test: / feat: / refactor:)
- 🤖:コミット文テンプレを作らせる
- ✅:章が長編になってない
Part 3:テストの書き方(読みやすさ基礎)📚✨(15〜24)
15. AAAで書く(型を固定)🧱
- 🎯:毎回迷わない
- 📚:Arrange/Act/Assert
- 🧪:ぐちゃテスト→AAA整形
- 🤖:AAA変換案を出させて比較
- ✅:Assertが散ってない
16. Assert基礎①(数・文字・真偽)✅
- 🎯:確認が弱くならない
- 📚:期待値の置き方、失敗時の読みやすさ
- 🧪:assertを3種類に書き換えて比較
- 🤖:観点の抜けを指摘させる
- ✅:「通るだけ」になってない
17. Assert基礎②(オブジェクト比較)🧸
- 🎯:オブジェクト検証ができる
- 📚:部分一致/完全一致の考え
- 🧪:同じ仕様を“部分一致”と“完全一致”で書く
- 🤖:テスト名改善案を出させる
- ✅:意図に合った比較になってる
18. Assert基礎③(配列・順序・含有)📦
- 🎯:配列結果を正しく検証できる
- 📚:順序が仕様か?を決める
- 🧪:順序あり/なしのテストを作る
- 🤖:順序依存の危険点を挙げさせる
- ✅:仕様が明確になってる
19. 例外・失敗のテスト(異常系入門)🚫
- 🎯:失敗も仕様にできる
- 📚:throw/reject、メッセージの考え方
- 🧪:無効入力で落ちるテストを書く
- 🤖:無効入力候補を列挙
- ✅:失敗の種類が曖昧じゃない
20. テスト名(仕様が読める命名)📝
- 🎯:落ちた瞬間に原因が分かる
- 📚:Given/When/Thenの発想
- 🧪:テスト名を10個改善
- 🤖:命名案3つ→誤解少ないの採用
- ✅:関数名暗記テストじゃない
21. テストデータ最小化(Arrangeを軽く)🧸✨
- 🎯:準備が重くならない
- 📚:意味がある値、最小の例
- 🧪:Arrangeを半分の行数にする
- 🤖:冗長ポイントを指摘させる
- ✅:データが説明できる
22. パラメータ化テスト(ケース増殖の味方)🔁
- 🎯:境界値を増やしやすい
- 📚:増えたら分ける運用
- 🧪:境界値5ケース追加
- 🤖:境界値候補リスト作成
- ✅:読みやすさが保ててる
23. テストの独立性(順序依存を消す)🧵
- 🎯:たまに落ちるを防ぐ
- 📚:共有状態禁止、beforeEachの使い方
- 🧪:順序依存テストを直す
- 🤖:共有状態の候補を洗い出し
- ✅:何回回しても同じ
24. ミニ演習①:カフェ会計(税・端数)☕️🧾
- 🎯:基礎でTDDを完走
- 📚:正常→境界→異常、AAA、命名
- 🧪:テスト3本→最小実装→整理
- 🤖:ケース抜け探しだけ依頼
- ✅:テストが“仕様書”になってる
Part 4:TDDの手筋(設計が育つ)🧠✨(25〜34)
25. 仮実装(まず通す)🩹
- 🎯:Red→Greenを素早く抜ける
- 📚:仮実装は“仮”
- 🧪:ベタ実装→次テストで一般化
- 🤖:永住しそうな箇所の指摘
- ✅:仮が仮のまま終わってない
26. 三角測量(2例目で一般化)📐
- 🎯:一般化のタイミングが分かる
- 📚:2ケース目の選び方
- 🧪:2ケース追加→一般化
- 🤖:次に足すべき例を提案
- ✅:早すぎ一般化してない
27. 明白な実装(迷いがない時は素直に)🌼
- 🎯:儀式化しない
- 📚:仮/三角/明白の使い分け
- 🧪:同じ課題を別手で作って比較
- 🤖:選択理由を説明させる
- ✅:毎回同じ手になってない
28. 重複のにおい(設計アラーム)👃🚨
- 🎯:改善ポイントに気づく
- 📚:Arrangeが重い=分離チャンス
- 🧪:つらいテストを1つ選んで原因を書く
- 🤖:改善案3つ(最小→中→大)
- ✅:気合より分離
29. リファクタ安全運転(小さく)🛡️
- 🎯:壊さず整理
- 📚:リネーム→抽出→整理
- 🧪:3回に分けてリファクタ(毎回テスト)
- 🤖:候補を出させて“最小だけ”採用
- ✅:一気に変えてない
30. テスト側リファクタ(読み物として整える)🧹
- 🎯:テストが資産になる
- 📚:共通化しすぎない
- 🧪:重複を減らしつつ意図を残す
- 🤖:隠しすぎ警告を出させる
- ✅:テストが読みやすい
31. ベイビーステップ(詰まらない進め方)👶
- 🎯:止まった時に進める
- 📚:超小ステップ分解
- 🧪:難仕様を5小テストに分割
- 🤖:分割案を出させる
- ✅:作業が細かい
32. 仕様追加の手順(壊れない増やし方)➕
- 🎯:機能追加が怖くない
- 📚:1仕様=1〜2テストで固定
- 🧪:割引/上限などを段階追加
- 🤖:境界値候補を列挙
- ✅:増えても整理されてる
33. 決定表で整理(if地獄回避)🗂️
- 🎯:ルールを見える化
- 📚:条件×結果の表→テストへ
- 🧪:決定表→パラメータ化テスト
- 🤖:表のたたき台作成
- ✅:条件の抜けが減ってる
34. ミニ演習②:会計(割引・クーポン)🎟️🧾
- 🎯:中盤の総合力
- 📚:決定表、境界値、リファクタ
- 🧪:3段階で仕様追加→毎回整える
- 🤖:抜け観点の列挙
- ✅:テストが増えても読める
Part 5:TypeScriptならでは(型で守る設計入門)🧩🛡️(35〜40)
35. unionで状態を表す(ifを減らす)🧷
- 🎯:状態が増えても崩れない
- 📚:union/リテラル型
- 🧪:状態をunion化してテストで固定
- 🤖:型名候補を出させる
- ✅:状態追加に強い
36. ブランド型(ID取り違え防止)🏷️
- 🎯:string地獄を防ぐ
- 📚:型で意味を分ける
- 🧪:UserId/ProductIdを分けてテスト
- 🤖:命名案の比較
- ✅:取り違えが起きにくい
37. Result型入門(例外を乱用しない)🧯
- 🎯:失敗を仕様にできる
- 📚:ok/err、呼び出し側の責務
- 🧪:無効操作をResultで返すテスト
- 🤖:失敗分類案(ユーザー/システム)
- ✅:throwだらけになってない
38. 網羅性(exhaustive)で抜け漏れ防止🕳️🚫
- 🎯:状態追加のバグを減らす
- 📚:switchの網羅の考え方
- 🧪:状態追加→コンパイルで気づける形に
- 🤖:抜け検知の実装案
- ✅:追加に強い構造
39. 変換層(外部データに汚染されない)🔄
- 🎯:中心モデルを守る
- 📚:DTO→内部モデル変換をテストで固定
- 🧪:欠損/型違いの変換テスト
- 🤖:欠損パターン列挙
- ✅:中心の型が汚れてない
40. 小さな設計ルール(境界を守る)📏
- 🎯:設計が崩れにくくなる
- 📚:ドメインは外部を直接触らない、の雰囲気
- 🧪:境界越えを1箇所直す(依存を追い出す)
- 🤖:依存の向きチェック
- ✅:責務が混ざってない
Part 6:依存を切る(テストの核心)🔌🎭(41〜48)
41. 依存って何?(時間・乱数・I/O)⏰🎲
- 🎯:不安定の原因を言える
- 📚:依存一覧化
- 🧪:自分の機能で依存をリスト化
- 🤖:抜けの補完
- ✅:依存が見えてる
42. 依存の注入(関数引数DI)📦➡️
- 🎯:差し替え可能になる
- 📚:newしない/直接呼ばない
- 🧪:Clock注入で安定テスト
- 🤖:差分最小修正案
- ✅:テストが安定した
43. スタブ(返すだけの偽物)🧸
- 🎯:外部なしでロジックをテスト
- 📚:スタブの役割
- 🧪:DB/HTTPの代わりを作ってテスト
- 🤖:スタブ設計案
- ✅:外部なしで回る
44. モック/スパイ(呼ばれ方を仕様に)🎭📣
- 🎯:副作用を確認できる
- 📚:呼ぶ/呼ばない/回数/引数
- 🧪:通知(ログ/イベント)を呼ぶ条件をテスト
- 🤖:副作用観点の列挙
- ✅:呼び方が仕様になってる
45. ファイルI/O境界(本物/偽物の判断)📁
- 🎯:遅いテストを増やさない
- 📚:ユニットは偽物、統合は少数精鋭
- 🧪:読み込みをアダプタ化してユニットテスト
- 🤖:本物でやるべき範囲提案
- ✅:I/O依存が減った
46. 非同期テスト基礎(async/await)⏳
- 🎯:PromiseでもTDDできる
- 📚:resolve/rejectのテスト
- 🧪:成功/失敗の2テストを書く
- 🤖:await忘れ等のミス点検
- ✅:非同期でも安定
47. タイマーとリトライ(遅くしない工夫)⏱️🔁
- 🎯:待ち時間でテストが死なない
- 📚:タイマー制御、疑似時間
- 🧪:リトライ処理を即検証できる形に
- 🤖:遅い原因→改善案
- ✅:テストが速い
48. 乱数の固定(フレーク撲滅の基本)🎲🚫
- 🎯:毎回同じ結果にする
- 📚:乱数源を注入して固定
- 🧪:乱数を固定して期待値テスト
- 🤖:不安定ポイント列挙
- ✅:「たまに落ちる」が消えた
Part 7:外部API(境界→検証→契約)🌐🧪(49〜52)
49. fetch境界(ネット無しでテスト)🌐
- 🎯:外部が落ちてもテストできる
- 📚:HTTPラッパー、依存注入
- 🧪:成功/404/500の3ケーステスト
- 🤖:エラー方針案(リトライ可否)
- ✅:ネット無しで回る
50. 入力検証(スキーマ/バリデーションの入口)🧷
- 🎯:壊れたデータで事故らない
- 📚:検証→変換→内部型
- 🧪:欠損/型違いを弾くテスト
- 🤖:想定すべき欠損例の列挙
- ✅:入口で守れてる
51. 変換層の契約(DTO→モデルの約束)🤝
- 🎯:相手が変わっても被害が小さい
- 📚:契約=入出力の約束
- 🧪:変換層に契約テストを置く
- 🤖:契約を文章化(READMEひな形)
- ✅:変更に気づける
52. 後方互換の考え方(壊さず進化)🧬
- 🎯:破壊変更で地獄にならない
- 📚:追加はOK、削除/変更は慎重に
- 🧪:互換を守るテスト(旧入力もOK)
- 🤖:互換ポリシー案を作らせる
- ✅:壊し方が設計できる
Part 8:運用で勝つ(CI・カバレッジ・遅い/不安定対策)🏁✅(53〜55)
53. カバレッジの正しい距離感(数字に振り回されない)📈
- 🎯:カバレッジを道具にする
- 📚:重要ロジック優先、数字は補助
- 🧪:重要分岐の穴を埋めるテスト追加
- 🤖:カバレッジ穴→追加観点を提案
- ✅:数字だけ追ってない
54. 遅いテストの直し方(継続の生命線)🐢➡️⚡️
- 🎯:テストが嫌いにならない
- 📚:依存分離/データ縮小/タイマー制御
- 🧪:遅いテストを1つ高速化(体感できるレベル)
- 🤖:原因候補→改善案の診断
- ✅:速く回るようになった
55. フレーク(たまに落ちる)を潰す手順💥🧯
- 🎯:信頼できるテストにする
- 📚:共有状態/並列/時間/乱数/外部要因
- 🧪:フレーク再現→原因特定→修正メモ作成
- 🤖:原因候補のチェックリスト生成
- ✅:10回回して0落ち
Part 9:UIは最小必修+発展(やりすぎない)🖥️✨(56の前に…ここは 56 を卒業制作にしたいので、UIは「必修2章+発展1章」を このブロック内で 56 の手前に入れる形にします)
※ごめん!章番号を崩さないために、UIは 56 ではなく 56の直前(=56は卒業制作)に入れる必要があるので、ここは 章番号を整理して最終確定にするね👇 (=UIは 56-2〜56-1 みたいにできないから、53〜55を運用にした以上、UIを 41〜52の間に差し込むと流れが崩れるの😵💫)
なので、最終確定はこうするね✅
- 53:UI戦略(必修)
- 54:DOM/コンポーネントの最小テスト(必修)
- 55:E2E/ビジュアル(発展・任意)
- 56:卒業制作 そして「運用(カバレッジ/遅い/フレーク/CI)」は 49〜52に移して、全体の流れを崩さずにバランスを取るよ😊✨
以下が 最終・番号確定版(56章) です👇(内容は上の最適化ポイントそのまま!)
✅最終・番号確定版(56章)詳細アウトライン 🧪✨
(49〜52=運用、53〜55=UI最小、56=卒業制作)
1〜48:上の内容そのまま(Part 1〜6まで)✅
(章の中身も上で書いた通りで固定だよ😊)
Part 7:外部API+運用(境界→検証→契約→運用)🌐✅(49〜52)
49. fetch境界(ネット無しでテスト)🌐
- 🎯:外部が落ちてもテストできる
- 📚:HTTPラッパー、依存注入
- 🧪:成功/404/500の3ケーステスト
- 🤖:エラー方針案(リトライ可否)
- ✅:ネット無しで回る
50. 入力検証(スキーマ/バリデーションの入口)🧷
- 🎯:壊れたデータで事故らない
- 📚:検証→変換→内部型
- 🧪:欠損/型違いを弾くテスト
- 🤖:想定すべき欠損例の列挙
- ✅:入口で守れてる
51. カバレッジの正しい距離感📈
- 🎯:数字に振り回されない
- 📚:重要ロジック優先、数字は補助
- 🧪:重要分岐の穴を埋める
- 🤖:穴→追加観点の提案
- ✅:数字目的になってない
52. 遅い/不安定(フレーク)を潰す手順🐢💥
- 🎯:継続できるテストへ
- 📚:依存/共有状態/時間/乱数/並列のチェック
- 🧪:遅いテスト高速化+フレーク原因メモ作成
- 🤖:原因候補チェックリスト生成
- ✅:10回回して0落ち&速い
Part 8:UIは最小必修+発展(やりすぎない)🖥️✨(53〜55)
53. UIテスト戦略(やる/やらないを決める)🧭
- 🎯:UIで迷子にならない
- 📚:重要導線だけ/見た目は最小/ロジックは別でTDD
- 🧪:重要導線を3つ選び、ユニット/統合/UIに振り分け
- 🤖:導線案と振り分け案を出させる
- ✅:UIテストが増えすぎない
54. DOM/コンポーネントの最小テスト(必修)🧱
- 🎯:UIでも“壊れにくいテスト”が書ける
- 📚:セレクタ選び、意図のあるassert、フレーク回避
- 🧪:クリック→表示変化の最小テストを1本(壊れにくく)
- 🤖:壊れポイントを指摘させる
- ✅:安定して通る
55. 発展:E2E/ビジュアルは少数精鋭(任意)⭐️
- 🎯:必要な時だけ強くする
- 📚:E2Eは少数、ビジュアル差分は運用コストも理解
- 🧪:E2Eシナリオ1本“設計だけ”+採用基準を書く
- 🤖:シナリオ案と落とし穴の列挙
- ✅:やる理由が説明できる
Part 9:卒業制作(TDDで完成まで)🎓🎉(56)
56. 卒業制作:小アプリを“TDDで完成”+CI導入✅
-
🎯:一人で「仕様→テスト→実装→整理→運用」まで回せる
-
📚:ここまでの全部(特に“境界分離”と“継続運用”)
-
🧪:
- 作品例:推し活グッズ管理🎀 / 家計簿💰 / 学食注文🍙(どれか1つ)
- 重要ユースケース3つをTDDで完成
- CIで「テスト+型チェック」を必須化(GitHub Actions想定)
-
🤖:PRレビュー役として「抜け観点」「改善案」「命名案」を出させる
-
✅:
- ローカルで安定して全テストOK
- CIでもOK
- READMEに実行手順がある
必要なら、この56章を「章ごとの提出物(何を提出したら合格か)」「章ごとの所要時間目安」「毎章のAIプロンプト固定テンプレ」まで付けて、さらに教材っぽく整えられるよ😊🧪✨