ペアプログラミングを体験
ハンズオンは、二人で一台のマシンに向かってコードを書く「ペアプログラミング」の形式で進めます。こちらも、ペアプログラミングのプロトコル(手順)や、「ドライバー」「ナビゲーター」といった役割の説明、講師による実際のデモンストレーションなどが行われるので、前提知識がない初心者でも安心です。
ペアプログラミングは、プログラミングを通して二人で会話をする(設計とテストといった担当を交互に入れ替えながら実装を進める)ことで、より上手にプログラミング/設計できるようになる効果があることから、リファクタリングが重要なTDDの演習手法として採用されているようです。
体験してみると、確かに他者のやり方や発想と交わることで、より深い気付きがあり、これだけでもよい経験になりました。
日常でペアプログラミングを行う場は、なかなか得にくいと思いますので、ぜひこういった場で一度体験しておくとよいでしょう。
演習課題
当日与えられた課題は、次のような整数の区間を扱う処理の実装です。区間の生成や、文字列表現での表示、ある区間に整数や別の区間が含まれるかの判定、などの全部で6つの課題が用意されていました。
チームごとに、課題を分割し、TODOを作成して、テストコードに落とし込み、リファクタリングを繰り返す、といった流れで課題を解き進めます。
冒頭の座学やデモを見聞きして、頭では理解したつもりになっていても、実際に手を動かしてみると、思わぬところでつまずいたり、新たな疑問が起こったりするものです。
そこは小人数制のワークショップということもあり、講師やチューターが絶妙なタイミング、ヒントで学習が効率よく進むように導いてくれました。筆者のように、「あのt-wadaがじかにレクチャーしてくれた」というのがモチベーションにつながる方もいるかもしれません。
また、2度ほど、発表とコードレビューの場が設けられ、他者に教える、他者の意見を聞く行為を通じて、より深く理解することにつながりました。
冒頭で、講師が「プログラミングコンテストではないので、最後までやることが重要なわけではない」と説明していましたが、その通りで、見た目の分量よりもはるかに濃密な経験を得ることができると思います。なにより楽しい。
TDDを実践するための次のステップ
ハンズオンの後は、1時間程度の座学と質疑応答の時間があります。
TDDの第一歩を踏み出した後で、今後どのように技術を深め、現場で役立てていけばよいか、学習のステージごとに適した推薦図書や研究データの紹介などが行われました。
当日、講師のやっとむさんが基本レベルと紹介した書籍だけでも、次のとおりで、なかなかTDDの道も奥が深そうです。
- 『JUnit実践入門』
- 『The RSpec Book』
- 『レガシーコード改善ガイド』
- 『データベース・リファクタリング』
- 『xUnit Test Patterns』
- 『ソフトウェアテスト技法ドリル』
- 『ソフトウェア・テスト PRESS 総集編』
- 『実践テスト駆動開発』
- 『テスト駆動開発による組み込みプログラミング』
- 『継続的デリバリー』
- 『システムテスト自動化標準ガイド』
- 『Fearless Change アジャイルに効く アイデアを組織に広めるための48のパターン』
- 『組織パターン』
質疑応答の場では、「TDDが向く/向かない領域はどこで、どう使い分けるか」「実際に業務で適用する際に考えられる課題」など、今後現場で活用することを意識した、具体的な相談が目立ちました。経験豊富な講師陣ですので、かなり突っ込んだリアリティーのある内容でも明確な答えを導いてくれると思います。
また、当日参加いただいた受講生の方には、次のようなコメントをいただきました。
「TDDとはどういったもので、どのように利用するのか分かりやすく説明してもらえた。また、TDDに向くシステムと向きにくいシステムの説明も有効だった」
「初歩的な進め方のコツが学べたと思う。明日から実践する自信がついた」
「『テストコード書かなきゃ!でもよくわからないし難しそうだから……』と、なかなか重い腰を上げられない人はもちろん、プログラム初心者にもおススメ」
「ペアプログラミングを初めてやってみて、その雰囲気が分かってよかった」
「ペアプログラミングを行うことで、テストや設計を考えながら実践できた」
次回の開催
講座の流れは以上です。詳細は、ぜひ皆さんがご自身で体験いただければと思います。
次回開催は2015年6月26日(金)です。アジャイルアカデミーのページから奮ってご応募ください。お得なペア割(6000円オフ)もありますので、チームでの参加もオススメです。