follow me badge

2012年4月30日月曜日

CoderetreatでTDDに挑戦してきた

Coderetreat in Drecom powered by AgileSibuyaに参加してきました。

イベントの詳細については、HIROCASTERさんがここに詳しく書かれているの詳しくはそちらでどうぞ。

このエントリーでは1ヶ月前まではCoderetreatという言葉すら聞いたことなかった私がどんなことを考えながら参加していたのかをつらつらと書き綴ってみようと思います。今後、Coderetreatに興味を持った方がイベントの雰囲気をつかむ手助けになればと思います。

イベントへの参加目的

目的というほどのものではないのですが、Coderetreatへの参加を決めてから漠然と

  • テスト駆動開発を実践してみたい
  • 新しい言語に挑戦してみたい(RubyかJavascript、できればHaskellとか)

ということを考えていました。特に新しい言語という部分に関してですが、自分で環境構築などをするとどんなものがいいかなど結構調べるのに時間がかかるので既に構築している人とペアプロすることで自分の環境を作る時の足がかりにできたらいいなと思っていました。

各セッションで考えたこと

4/28に実際にイベントに参加して来たわけですが、各セッションでは自分なりにテーマをもって楽しむことができました。

Session1. PHP

ペアでコーディングを進めていくにあたって、どうやって意思疎通の方法を探っている間に終了してしまいました。 今振り返ると、ドライバーとナビゲーターを交代するタイミングが曖昧だったのは良くなかったなと思いました。

Session2. PHP

テスト担当と実装担当にわけて進めていきました。テスト担当者がテストを追加したらドライバーとナビゲーターをスイッチして実装担当者がテストを成功させるところまでコーディングするという流れです。

私はテスト担当だったのですが、テストデータの作り方が悪かったせいでセッション後半でテストが簡潔に記述できなくなっていきテストデータを整理するのにかなり時間を使ってしまいました。fixtureの管理は重要ですね。

Session3. PHP

このセッションでも基本的にテスト担当と実装担当にわけて進めていきました。前回のセッションで得られた教訓をいかしてテストデータも簡潔に記述でき、結果として結構順調に進めることが出来たのではないかと思います。

このセッションではテストが実装の方向性を作っていくという流れが作れたのが非常に良かったと思います。

Session4. Javascript

このタイミングで実装言語を変えてみたいと思い、Javascriptの開発環境を準備されていた方とペアを組ませてもらいました。私はJavascriptでの開発経験がとぼしかったので、テストの書き方等の基本的なことを教わりながら進めていきました。にもかかわらず前のセッションよりもさらに実装が進みました。

Session5. C#

前のセッションで違う言語でやっても案外いけると調子にのって火傷を負ったのがこのセッションでした。例によってテストを担当していったのですが、しょっぱなでデータ構造の選択をミスったため最後の段階でコーディングが複雑になりました。データ構造の選択は重要ですね。

また私の準備不足が原因で、ペアの方を待たせてしまったのが申し訳なかったです。

Session6. 不参加

HPが0に近づいた人達(?)で集まって、エクストリームフィッシュボウルをやりました。Rubyをかける人がほとんどいないのに何故かRubyを選択し、残念な結果となりましたがそれはそれで学ぶことが多かったと思います。それと最後にRSpecのモダンな書き方を実演してもらえたのが凄い勉強になりました。

まとめ

  • ペアプロは怖くない、むしろ楽しい。けど、ずっとはしんどい。
  • テストファーストによって実装は導かれるという経験ができて良かった。
  • あわよくば、関数型言語で導いてくれる人と出会えるといいなと思ってたけど出会えなかったのが残念だった。(同日に開催されていた名古屋の会場ではF#が猛威を奮っていたようですが・・・。)

余談

PHPのリファクタリングツールが貧弱なことに絶望して、今年に入ってからPHP用のリファクタリングツールをVimスクリプトでコツコツと作成しています。まだ機能は少ないですが順次機能追加していくので良かったら使ってみてください。