TDDBC Tokyo 2017-09 に参加してきました #tddbc

TDDBC Tokyo 2017-09 - connpass に参加することができたのでメモ。

TDDBC ってなに?

TDD Boot Camp(TDDBC) とは、テスト駆動開発(Test Driven Development)について、座学だけでなく、実習形式で手を動かして体得することを目的とするイベントです。

実際に参加してみた感想としては、以下の要素がギュッと詰まった濃厚なイベントでした。

個人的には、ペアプログラミングを組み込んでいるのが素晴らしいと思いました。何事もそうですが、実践では座学どおりに進むことはめったになく、少なからず失敗しながら身につけていきます。1人よりも学習効果が高いペアプログラミングを組み込んだのは、2時間という限られた時間のなかで一定以上の成果を得るためのベストプラクティスかもしれません *1

基調講演

せとあず (Twitter ID: @setoazusa) さん

www.slideshare.net

TDD のエッセンスがギュッと詰まったフルスペック感漂う重量級の講演でした! スライドを見るだけでも大いに勉強になると思いましたが、熱いトークを聞くことができたのは参加した人の特権じゃないでしょうか :)

ペアプロデモ

ペアプログラミング実践の前に、YASUI Tsutomu (Twitter ID: @yattom) さんと よこち (Twitter ID: @chiiia12) さんによる、ペアプログラミングしながらテスト駆動開発するデモンストレーションがありました。

参加者はテスト駆動開発の経験がないのはもちろん、ペアプログラミングの経験もない人が多いです *2 そこで、実際にテスト駆動開発 + ペアプログラミングをライブで見ることができるのは、TDDBC に参加する大きなメリットだと感じました。特に引っかかることもなく淡々と進むのですが、とても丁寧かつ原則に忠実で、すごく分かりやすかったです。

ペアプロ

ペアプロのお題は セマンティック・バージョニング でした。

自分たちのペアは、ざっくりと相談して以下のような戦略をとることにしました。

  • テスト駆動開発を体験することを一義的な目標にする
  • 意見やアドバイスはためらわず言う
  • 今やる演習問題だけに集中する (先の演習問題は見ない)
  • 詰まったらペア交代 (第2ラウンドは5分のタイムボックスに変更)

第1ラウンドは、お互いの呼吸やベースとなるスキル・好みが分からずかなり苦戦した印象です。しかし、第2ラウンドでは第1ラウンドの経験が生き、お互いの呼吸が分かってくるにつれてリズムがよくなっていくのを感じることができました :)

また、「今やる演習問題だけに集中する (先の演習問題は見ない)」という戦略のおかげで、ついつい考えすぎてしまう落とし穴にはまることもなく、目の前のことに集中できたのは良かったと思います。特に、当初は「2.0.1a とかあるかもしれないし、バージョンはとりあえず文字列型で持っておこ〜」としていたのが、問題3で「ゼロ、または正の整数です」となったところで整数型として保持するように変更したときなど、「テスト書いておいてよかったよね〜」と、2人でニヤニヤしちゃいました。

コードレビュー

各ラウンド2ペア ✕ 2ラウンド = 4ペアがコードと戦略、実際の進み方を話して、他の参加者や TA さんがそれをレビューしました。

プログラミング言語フレームワークによって観点や戦略がまったく異なるものになってしまうのはもちろんですが、*3 同じプログラミング言語でもまったく異なる戦略で進めているペアもおり、「こんないいやり方もあるんだなあ」と知見を広められるのは、とてもよい体験でした。

懇親会

メインスケジュールが終わったあとは懇親会へ。

恒例 (らしいです) の LT 大会がすごい盛り上がりでした。個人的には、主催者の1人である PoohSunny (Twitter ID: @PoohSunny) さんがガチのマサカリ勢だと知ることができたのが大きな収穫でした。以後、態度にはよりいっそう気をつけたいと思います。

感想

パワーワード

  • 茶番
  • Spock 最高
  • IntelliJ IDEA 最高
  • その人は diff

参加者のレベルが高い

参加された方のレベルがすごく高かったです。ガチでレベルが高すぎて「本当に新兵?」「むしろ教官側では……」と感じることも何度となくありました。

運営スタッフさん

講演やデモ、ペアプロやコードレビューもとても良かったのですが、個人的には運営スタッフさんが素晴らしい仕事をされていたなあ、というのが強く印象に残りました。受付から、各プログラム間のつなぎの良さ、ディスカッションでの進行・意見入れ、滞ることがほとんどなく、参加者としてはずっと走りっぱなしだった印象です (ほめ言葉です)特に、ランチでは15人もの外食組が入れる美味しいお店を紹介していただいたおかげでプチ懇親会状態になり、午後のペアプログラミング実践に向けてモチベーションが高まったのが嬉しかったです。

まとめ

本当に久しぶりとなる勉強会への参加でしたが、朝の受付から懇親会までフルに楽しかったです!

自分はまだブートしたてですが、少なくとも前に進むキッカケをいただくことができたので、今後は新兵以外の形で TDDBC に関わっていくことを考えてみたいな、と思いました。

*1:テスト駆動開発ペアプログラミングも XP のプラクティスなので親和性も高い

*2:ですよね?

*3:たとえば、C 言語には "オブジェクト" はない