test-driven-development について
test-driven-developmentは、RED-GREEN-REFACTORのサイクルでテストを先に書く開発を導くスキルです。テスト品質、YAGNI、DRY、小さなコミットも扱います。
主な機能
- 01RED-GREEN-REFACTORワークフロー
- 02テスト先行の実装ガイド
- 03Arrange-Act-Assertの構成
- 04テスト品質の原則
- 05YAGNI、DRY、コミットの指針
活用シーン
- 01失敗するテストから新機能を始める
- 02修正前に不具合を再現する
- 03リファクタリング前にテストを整える
- 04変更を小さく保ち検証する
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ bbeierle12/ skill-mcp-claude --skill test-driven-developmentインストール後、Claude Code で/test-driven-developmentを入力して読み込まれたか確認します。
同梱ファイル_meta.json
詳細
テスト駆動開発
TDDの絶対的なルール
テストより先にコードを書きましたか? そのコードを削除して、最初からやり直してください。
これは交渉の余地がありません。選択肢でもありません。もっともらしい理由をつけて逃れることはできません。
RED-GREEN-REFACTORサイクル
1. RED - まず失敗するテストを書く
- 正しい理由で失敗する、最小限のテストを書きます
- 機能がまだ存在しないためにテストが失敗するようにします
- テストを実行し、失敗することを確認します
2. GREEN - テストを通す(最小限のコード)
- テストを通すために必要な最小限のコードを書きます
- 必要以上に書かないでください
- まだ最適化しないでください
- まだリファクタリングしないでください
3. REFACTOR - コードを改善する
- ここでコードを整理できます
- 重複を取り除きます
- 名前を改善します
- メソッドや関数を抽出します
- リファクタリング後も、すべてのテストが通る必要があります
禁じられた言い訳
次のいずれかを考えていることに気づいたら、すぐにやめてください。
- 「これは単純な関数にすぎない」→ 間違いです。単純な関数にもテストが必要です。
- 「あとでテストを書く」→ 間違いです。それはTDDではありません。
- 「まず動くようにするだけ」→ 間違いです。テストが先です。
- 「これはテストしなくていい」→ 間違いです。すべてにテストが必要です。
- 「手動でテストする」→ 間違いです。自動テストを書いてください。
- 「テストは明らかだ」→ 間違いです。それでも書いてください。
- 「ただ調べているだけ」→ 間違いです。テストを使って調べてください。
テスト品質のガイドライン
優れたテストとは:
- 高速 - テストはミリ秒単位で実行されること
- 独立 - テスト間に依存関係がないこと
- 再現可能 - 毎回同じ結果になること
- 自己検証可能 - 解釈の余地なく、成功か失敗かが分かること
- 適時 - コードより前に書かれていること
テストの構成(準備・実行・検証):
// Arrange - Set up the test conditions
const input = createTestInput();
// Act - Execute the code under test
const result = functionUnderTest(input);
// Assert - Verify the expected outcome
expect(result).toBe(expectedValue);
このスキルを使うタイミング
- 新しい機能に着手するとき
- バグを修正するとき(まず、そのバグを再現するテストを書きます)
- 既存のコードをリファクタリングするとき(まず、テストがあることを確認します)
- 既存の機能を壊す可能性のあるコード変更をするとき
YAGNI(必要になるまで作らない)
まだ必要のないコードを書かないでください。
- 先を見越した機能は追加しない
- 「念のため」の抽象化はしない
- 時期尚早な最適化はしない
- 今必要なものだけを作り、それ以上は作らない
DRY(同じことを繰り返さない)
ただし、REFACTORフェーズでのみ適用します。
- まず動くようにする(GREEN)
- 次に正しくする(REFACTOR)
- 一時的な重複は問題ありません
- リファクタリング時に取り除きます
コミット戦略
- GREENのたびにコミットします
- REFACTORのたびにコミットします
- 小さく、頻繁にコミットします
- 各コミットですべてのテストが通るようにします
コメント
Markdown 対応