こんにちは。R&D開発本部でアジャイル開発の推進を担当している栗秋です。このたび、ヤフー社内でTDDブートキャンプを行いましたのでご紹介させていただきます。
はじめに
TDDブートキャンプとは、開発スタイルのひとつであるTDD(テスト駆動開発)を、ワークショップ形式で体験してみようというイベントです。2009年12月で東京で開催されたのを皮切りに、全国各地で有志が集まって行われています。
このワークショップで体験できるのは、TDDというテストファーストで開発していきましょうという開発スタイル、そしてペアプログラミングはエンジニア2人でコードを書いていきましょうという開発スタイルの2つです。そのTDDとペアプログラミングは、エンジニアにとって非常に重要なスキルという認識が広まってはいますが、開発現場で始めようとするには大変に難しい苦労があります。また、ひとりで学習していくよりも、みんなで学んだ方が効率はいいですし、できれば、先人に知恵をいただくのが熟練の近道なのではないでしょうか?
そこで、Hack Dayのサブイベントとして、社内版TDDBCを行いました。今回のTDDブートキャンプには、各地のTDDブートキャンプでも講師をされている、和田卓人さん(@t_wada)にお越しいただきました。
和田さんによる講演とデモ
まずはじめに、和田さんによる講演と、和田さんと有志1名による演習デモがありました。
演習では、テスト駆動開発をなぜ行うのか、どうやって行っていけばいいのか、テストのないコードに対しての対処方法をどのように学んでいけばいいのかなど、熱く語っていただきました。初めからきれいなコードを書いていくのではなく、動く汚いコードを書いてリファクタリングしていく黄金の回転についても教わりました。
デモでは、FizzBuzz問題を題材に、画面をプロジェクターでうつしながら、ライブコーディングを行いました。和田さんと有志の方で、普段使っているキーボードの配列が異なっていて、文字入力にひと苦労するという一幕もありました。
自己紹介
あらかじめ参加者に作ってもらっていたポジションペーパーを使って、周りの人との自己紹介タイムを作りました。積極的に自己紹介しあっていて、それまで講師の話に集中していた静かだった部屋がにぎやかになりました。
同じ会社で働いていても、フロアが違うなどで、普段顔を合わせない人たちがいたりもします。そういった人たちと、自分が担当しているサービスから、趣味にいたるまで話すことで、お互いを知りあえるいいきっかけになったのではないでしょうか。
演習
演習は、ペアで課題に取り組む時間と会場みんなでコードレビューを行う時間を1セットで行うのですが、今回はそれを2セットで行いました。1セット目はあるプロダクトを一から作っていく課題に、2セット目は作ったプロダクトに仕様変更を加えていく課題に、それぞれ挑戦しました。課題は主催者側であらかじめ用意したものを使いました。
1セット目の演習では、2人で一緒に考えながらテストファーストで開発をすすめていく、普段とは違う開発スタイルに最初は戸惑いながらも、徐々に時間がたつにつれて慣れてきたのか、楽しく開発をしている様子が印象的でした。今回は1セット目と2セット目の間に、和田さんへの質疑応答の時間をとったのですが、実際に体験してみて気になったこと、実際の現場に持ち帰るときに問題になりそうなことなど、さまざまな質問が飛び交っていました。
コードレビューは、いくつかのペアにコードをプロジェクターで映し出してもらって、どういった観点でテストを書いたかを中心に解説してもらいました。同じ課題ですが、実装の方針が言語の特性やペアによって異なっていて、「なるほど、こんな実装方法があるのか」と新しい発見が多くありました。
演習の後、ふりかえりを行いました。参加者の皆さんに “よかったこと・続けたいこと” “難しかったこと” “今後挑戦してみたいこと”を書いてもらったのですが、「ペアプロをやってみて、人によって実装のしかたが違うことを発見した」「ペアプロでお互い間違いを指摘しあうことができた」「設計に時間をかけすぎた」「TDDを習慣にしたい」といったコメントがありました。今回は、ふりかえりのコメントをみながら話す時間を十分に取れなかったのですが、ふりかえりでいただいたコメントは後日まとめて参加者と共有しています。
まとめ
今回はHack Dayの一環としてTDDブートキャンプを開催することができました。講師の和田さんからも次回があればぜひ来たいとのコメントをいただきました。TDDブートキャンプに限らず、参加者みんなで楽しみながら学びあうイベントを企画していくつもりです。
最後になりましたが、和田卓人さん、多忙の中、ご講演、ご指導いただきありがとうございました。この場を借りてお礼申し上げます。
こちらの記事のご感想を聞かせください。
- 学びがある
- わかりやすい
- 新しい視点
ご感想ありがとうございました