#TDDBC 大阪でGroovyを最大勢力にしてきました。
Groovy/SpockなTDDBC
6/2, 6/3にTDDBootCamp 大阪1.0, 2.0があったのでGroovyのTAとして参加してきました。
両日ともに当初(イベント開始時点)ではGroovy希望者が1名でしたが、
1.0では6名に、2.0では言語希望者最大となる11名(ペアの都合上、後に10名に減る)の方達にGroovyでのTDDを体験してもらえました。
テストコードだけGroovyでいいし、Javaと同じように書いていい
これだけGroovyの希望者が増えたのは、Javaの希望者がGroovyに流れた事によります。
また、僕は今回Groovyを体験してもらうにあたって、
「テストコードだけをGroovyにするだけでもいける。わからなくてもJavaと同じように書けば動くし、とりあえずGroovyでやってみても大丈夫ですよ。」
と宣伝しました。
1.0では6人中4人にSpock、2.0では10人中10人にSpockを使ってもらう事になりました。
Spock自体は簡易なDSLとして非常に見易いパラメタライズドテストを支援します。
そして教えたのもパラメタライズドテストのみです。
お題的にもモックやランダム性やマルチスレッドのテストはほとんどないため、パラメタライズドテストの書き方を教えるだけで済むという相性の良さがありました。
環境構築
1.0では環境未設定の方は人数が少なかったので、個別に対応したのですが、2.0では人数が多かったので、イベント中に以前僕が主催したStartupGroovyというイベントで使ったIntelliJ IDEA + Groovyの設定方法資料をツイートしておきました。
参加者達の様子
某参加者「Groovy知らないですが大丈夫ですか。。。?」1時間後の某参加者「Spock!Spock!」 #tddbc [うさみみ*´×`*エンジニア]
両日とも全体コードレビューでSpockのコードを披露した(1.0では参加者が説明、2.0では参加者のコードを僕が説明する形式になった)のですが、非常に好評でした。
驚いた事は最後のKPTでKeepやTryに「Groovy」「Spock」と入っていた事です。今までのTDDBCでもほとんど見かけない光景でした。
他のこと
上がTAとしてやってきたことで他にもたくさんの経験をしました。
@m_sekiさんや@yasuohosotaniさんと初めてお会いして、少ないながらもお話を伺えたのはすごく楽しかったです。
もちろん、TA、参加者問わず久しぶりに再会していろんな方とお話できたのもすごく嬉しかったし、楽しかったです。
話を聞くたびに「あぁ、すごいなぁ。。。」と感心したり「元気そうでよかった!」と安心したりでした。
まとめ
私はGroovyが最高の言語だともSpockが最高のテスティングフレームワークだとも思っていません。
ですが、ある用途、あるコンテキストにおいては非常に有用なものであると思っています。
それが「Javaプログラマーが手軽に現状のユニットテストを加速させる」ことです。
GroovyはJavaとGroovyのコードをミックスしてコンパイルすることが可能です。
テストコードでなれてから、徐々にプロダクトコードをGroovyに置換していけます。
具体的には、Javaでは型をinterfaceで表現するため、それをGroovyで継承し、リスコフ置換の原則に従っていれば、クライアントコード側からはそれがJavaであるかGroovyであるかなど関係ないのです。
僕は実際にそうしてきました。
今後もTDDBCに参加することがあれば、Groovyの素晴らしさを少しでも伝えられればいいなぁと思います。
また、今年中にはTDD for Groovyのようなイベントもやりたいなぁと思います。(名古屋でやるか東京でやるかはわかりませんが。
今回会場を提供していただけた、楽天さん、企画運営に携わった人々、講演してくださった人々、参加者の皆様、本当にありがとうございました。