.claude/skills/practicing-getting-start-tdd/SKILL.md
テスト駆動開発から始めるプログラミング入門」の対話式チュートリアル。FizzBuzz を題材に TDD の Red-Green-Refactor サイクルを 14 言語で体験する。「TDD を練習したい」「FizzBuzz で TDD を学びたい」「テスト駆動開発の入門をしたい」「Java で TDD を体験したい」「Python で TDD を始めたい」「プログラミング入門チュートリアルをやりたい」「getting-start-tdd をやりたい」「TDD のハンズオンがしたい」「Red-Green-Refactor を体験したい」といった場面で発動する。TDD チュートリアルやプログラミング入門の要望があれば積極的に使用すること。
npx skillsauth add k2works/getting-started-tdd practicing-getting-start-tddInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
FizzBuzz 問題を題材に、TDD(テスト駆動開発)の手法を実践的に学ぶ対話式チュートリアル。ユーザーが自分の手でコードを書き、テストを通す体験を通じて TDD のサイクルと各言語の特徴を身につける。
docs/article/getting-start-tdd/ に 14 言語 x 12 章の完全な教材がある。チュートリアル進行時は該当する言語・章の教材を参照し、内容に沿って進行する。
チュートリアルを始める前に、開発環境を準備する。環境構築はユーザーにインストラクションを提示し、合意を得てから進める。勝手にコマンドを実行しない。
チュートリアルで作成するコードは apps/ 配下に言語ごとのディレクトリを切って配置する。言語環境・プロジェクト初期化・ソース・テストはすべてそのディレクトリ内で完結させ、他言語と干渉しないようにする。
apps/
├── java/ # Java プロジェクト(build.gradle, src/ など)
├── python/ # Python プロジェクト(pyproject.toml, tests/ など)
├── typescript/ # TypeScript プロジェクト(package.json, src/ など)
├── go/ # Go プロジェクト(go.mod, *_test.go など)
├── rust/ # Rust プロジェクト(Cargo.toml, src/ など)
└── ... # その他の言語も同様に `apps/{lang}/` を作成
進め方:
apps/{lang}/ が存在するか確認するcargo init、npm init、go mod init 等)をユーザーの合意を得てから実行する最もスムーズに始められる環境。devcontainer に Nix が設定済みで、言語ごとの開発環境が即座に利用可能。
# Codespace 起動後、選択した言語の開発環境に入る
nix develop .#java # Java の場合
nix develop .#python # Python の場合
nix develop .#node # JavaScript/TypeScript の場合
# ... 各言語に対応した flake が用意されている
ローカルで進める場合は、OS に応じたパッケージマネージャで各言語の開発環境を構築する。
| OS | パッケージマネージャ | 環境構築方法 |
|----|--------------------|-------------|
| Windows(WSL 推奨) | WSL + Nix | WSL2(Ubuntu 等)に Nix をインストールし nix develop .#{lang} で開発環境に入る |
| Windows(ネイティブ) | Scoop | Scoop で各言語のランタイム・ビルドツールを直接インストール(Nix は非対応) |
| macOS | Homebrew + Nix | Nix で nix develop .#{lang} または Homebrew で個別インストール |
| Linux | Nix | nix develop .#{lang} で開発環境に入る |
Windows ユーザーにはまず WSL(Windows Subsystem for Linux) を推奨する。WSL 上では Linux と同じく Nix / devcontainer がそのまま使え、教材の動作例ともっとも齟齬が少ない。WSL を利用できない事情がある場合に限り、ネイティブ Windows + Scoop の構成を提案する。
# PowerShell(管理者)で WSL2 と Ubuntu をインストール
wsl --install -d Ubuntu
# 再起動後、Ubuntu を起動し初期ユーザーを作成
# WSL(Ubuntu)内で Nix をインストール
sh <(curl -L https://nixos.org/nix/install) --daemon
# 以降は Linux と同じ手順
nix develop .#java # 例: Java の場合
Windows 側のファイルシステム(/mnt/c/...)ではなく、WSL の Linux ファイルシステム(~ 配下)にリポジトリを clone すると I/O 性能が大幅に向上する。
Windows では Nix が使えないため、Scoop で各言語のツールを個別にインストールする。
# Scoop のインストール(未導入の場合)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
# Java の場合
scoop bucket add java
scoop install openjdk gradle
# Python の場合
scoop install python
pip install pytest
# Node.js(JavaScript/TypeScript)の場合
scoop install nodejs
npm install
# Go の場合
scoop install go
# Rust の場合
scoop install rustup
rustup default stable
# Ruby の場合
scoop install ruby
# PHP の場合
scoop install php composer
各言語の詳細なセットアップ手順は、教材の各章(特に第 1 章・第 5 章)に記載されている。
ユーザーに学びたい言語を尋ねる。対応言語と特徴を簡潔に提示する。
| 言語 | 特徴 | |------|------| | Java | 静的型付け、OOP、JUnit 5 | | JavaScript/TypeScript | 動的/静的型付け、Vitest | | Python | 動的型付け、pytest | | Ruby | 動的型付け、Minitest | | PHP | 動的型付け、PHPUnit | | Go | 静的型付け、標準 testing | | Rust | 所有権、標準テスト | | C# | 静的型付け、xUnit | | F# | 関数型、Expecto | | Clojure | LISP、clojure.test | | Scala | OOP+FP、ScalaTest | | Elixir | 関数型、ExUnit | | Haskell | 純粋関数型、Hspec |
全 12 章 4 部構成。ユーザーの経験レベルに応じて開始章を提案する。
第 1 部: TDD の基本サイクル(初心者はここから)
第 2 部: 開発環境と自動化 4. バージョン管理と Conventional Commits 5. パッケージ管理と静的解析 6. タスクランナーと CI/CD
第 3 部: オブジェクト指向設計 7. カプセル化とポリモーフィズム 8. デザインパターンの適用 9. SOLID 原則とモジュール設計
第 4 部: 関数型プログラミングへの展開 10. 高階関数と関数合成 11. 不変データとパイプライン処理 12. エラーハンドリングと型安全性
教材ファイルを読み込み、以下のルールで対話的に進行する。
言語ごとにファイル名パターンが異なる。
docs/article/getting-start-tdd/{lang}/01-todo-list-and-first-test.md 等docs/article/getting-start-tdd/csharp/chapter01.md 等docs/article/getting-start-tdd/fsharp/chapter01.md 等ユーザーが詰まった場合、段階的にヒントを出す。
number % 3 == 0 という条件式を使えます」章の終わりに以下を実施する。
各章の最後に、KPT フレームワークで振り返りを行う。ユーザーに以下の 3 観点を順に問いかけ、回答を整理してまとめる。
KPT は以下のフォーマットでまとめ、セッションログとしてユーザーに提示する。
## 第 N 章 KPT 振り返り
### Keep
- (続けたいこと)
### Problem
- (問題点)
### Try
- (次に試すこと)
Problem で挙がった項目は、Try で具体的なアクションに変換するよう促す。Try は次章の進め方に反映させる。
ユーザーが複数言語に興味がある場合、docs/article/getting-start-tdd/integration/ の多言語統合解説を参照し、言語間の比較視点を提供する。
tools
イテレーション計画と上流設計ドキュメント群(ユーザーストーリー、ドメインモデル、データモデル、UI 設計)との整合性を検証する。「イテレーション計画を検証したい」「計画の整合性をチェックして」「イテレーション計画を作成した」「計画と設計ドキュメントの不整合を確認したい」といった場面で発動する。planning-releases でイテレーション計画を作成した直後にも積極的に使用すること。計画作成後に必ず本検証を実施することで、開発着手前にドキュメント間の不整合を検知・修正できる。
tools
プロジェクトの開発進捗を多角的に分析しレポートを生成。イテレーション達成度、技術実装状況、品質メトリクスを確認し、計画ドキュメントを自動更新する。「進捗を確認したい」「プロジェクトの状態を知りたい」「イテレーションの達成度を分析したい」「進捗ドキュメントを更新したい」といった場面で発動する。定期的な進捗可視化により、遅延や品質低下を早期に発見しプロジェクトの透明性を確保する。
testing
リリース計画を GitHub Project・Issue・Milestone に反映し一元管理。初回の一括同期から差異検出・自動同期まで対応する。「GitHub Project に同期したい」「Issue を作成したい」「計画と GitHub の差異を確認したい」「Milestone を設定したい」といった場面で発動する。計画ドキュメントを Single Source of Truth とし GitHub に自動反映することで、二重管理の手間と不整合を排除する。
tools
アジャイルなリリース計画とイテレーション計画を作成し進捗を管理。ベロシティ分析、ふりかえり、完了報告書まで一貫してサポートする。「リリース計画を作りたい」「イテレーション計画を作成したい」「ベロシティを分析したい」「ふりかえりを実施したい」「完了報告書を作りたい」といった場面で発動する。計画を生きた文書として管理し、実績データに基づいて継続的に調整することで、プロジェクトの予測可能性を高める。