テスト駆動開発を学習するにあたって、前回紹介した「写経」(本を写すこと)以外にどのような方法があるかについて説明します。
経験者から学ぶ
テスト駆動開発をマスターするための二つ目の道として、「テスト駆動開発の経験者から学ぶ」ということが挙げられます。具体的には、セミナーやレビュー、ペアプログラミングなどです。
セミナー
テスト駆動開発のセミナーですとか、レクチャー、ハンズオンは、一定数開催されています。
テスト駆動開発はどのようなものなのか知りたい、体験してみたいと思う方は、そういうセミナーに足を運んでみるというのも一つの有効な手段ではないでしょうか。
レビュー
テスト駆動開発の経験者からレビューを受けるという手段も有効です。ペアレビューとかピアレビューとか呼ばれるものですね。
ペアプログラミング
プロジェクトにテスト駆動開発の経験者がいる場合には、その人と一緒にプログラミングをしてみる(ペアプログラミング)ことで、テスト駆動開発がどういうものなのかということが、感覚として段々と理解できるのではないかと思います。
和田さんとペアプロした感想
本日は、私とペアプログラミングをやった経験がある方2名に来ていただいています。実際にペアプロしてみた感想をお聞きしたいと思います。
MIZOさんの感想
ペアプロしてみて一番わかったのは、テスト駆動開発をやっているときの「リズム」であるとか、Eclipseを使ってのショートカットキーの使い方であるとかです。「リズムを壊さずに進めることが大事である」ということはすごく思いました。これらは、たぶん写経ではわからない。
家永さんの感想
僕も最初に感じたのは、テストと実装のサイクルがすごい短い間隔で行われているということです。ペアプロする前に私が考えていたテスト駆動開発とはイメージが違いました。
なるほど。非常によいフィードバックをいただきました。大事な言葉、「リズム」が出てきました。
テスト駆動開発のリズム
写経では得られない典型的なものの一つが、「リズム」なんですね。実際に本を手で写してみても、ではKent Beckはどういう間隔でテストを起動していたのか、私はどういう間隔でテストを起動していたのかということは、伝わりません。
「リズム」は本当に重要なキーワードです。たとえば、コードを書く際に、テストを書いて、レッドバーを出して、プロダクトコードを書き始めて……といった一連のサイクルを、30秒で一周回すのか、はたまた2分で一周回すのか。そのような時間感覚は写経ではつかめません。
リズムを身につけるには、テスト駆動開発でコードを書いているところを実際に真似していくのが一番良いでしょう。やっていくに従ってだんだんと、思考パターン(レッド-グリーン-リファクタリング)や体の感覚だけではなく、考え方(テストの切り出し方や、小さいサイクルを重要視することなど)も含めて、テスト駆動開発のリズムに慣れていっていただくのが良いと思っています。
動画
私が『WEB+DB PRESS Vol.35』の特集1「実演! テスト駆動開発」と、『WEB+DB PRESS Vol.37』の特集1「実演! リファクタリング」で、特設サイトでの映像配信という形でコーディングしているところをお見せしたのはなぜかというと、写経だけでは伝わらない、しかしテスト駆動開発の最も重要な要素の一つである「リズム」というものを、どうやったら伝えられるかと考えた結果なんです。実際にコーディングしているところを、リアルタイムに近い形で見てもらおうと。動画から視覚情報として得られるものは、やはり「リズム」ですからね。
テスト駆動開発の動画は、私の記事以外にもあります。今はスクリーンキャストという技術が進み、実際にプログラミングしているところを映像の形でインターネット上に配信するという手段が多く採られるようになってきています。
著名な動画配信サイトでキーワード「TDD」「Test Driven Development」で検索してみたり、「Eclipse」で検索してみると、いろいろな映像が見つかります。
経験者はどういうリズムでテスト駆動開発を行っているのかを見たり、実際に自分で真似してみることによって、テスト駆動開発が感覚としてつかめるのではないかと考えています。