TDDBC福岡、行ってまいりました。
…すごいですね。思っていた以上に意識やレベルの違いを感じました。勉強のために行くつもりでしたが、一番変化したのは意識や気持ちという部分かもしれません。今回はOCamlで参戦しましたが、なにせ突貫工事で突っ込んだのでペアプロというより教えてもらっている感覚が強かったです…。ですが、学んだことは次に活かしたいと思います。
いろいろ思うところはあったのですが今回、実際の会場ではできていなかったKeep/Problem/Tryを書いてみたいと思います。
Keep
Problem
Try
- やっぱり三本柱(テスト、バージョン管理、自動化)をちゃんと実践したい
- SCM→Jenkinsの連携(@bleisさんの紹介してた環境)
- ベイビーステップ(知っていても忘れてることもあるので注意しよう)
- しっかりカバレッジツールでコードのどの部分が実行されていないかを確認!
- ペアプロ時のコミットタイミング(交代時にコミットする)
- VsVim!Visual NUnit!
- acts_as_professional!(グリーンバンドに刻まれた言葉。詳細はこちら)
ここからは軽くTDDBCで感じたことなどを書いてみたいと思います。
Twitterはいけませんね、つい乗せられてしまいます(OCamlをやるということになった理由もTwitter上のツイート。@mzpさんに乗せられてしまったためです)。そうして(おそらくOCaml出なければ、.NETかJavaか仲間はずれのC++かになっていたはずでしたが)、OCaml&OUnitというあからさまに私の慣れていない環境ではじめてのTDDBCを行うことになりました。
今回はOCamlでペアプロを行うということでWindowsよりもLinuxの方が良いはずだと思い、Linuxを使いました。そしてEmacsを用いてペアプロをしていたのですが、Emacsやvi(vim)を日常的に使ってる方々(主に私が見ていたのはペアプロをしていた@suerさん)のコマンドを駆使してのコーディングスピードに驚きました。あれほどのスピードでコーディングができるようになるのであれば、しっかりviやEmacsのコマンドをマスターしたいと思います。(あ、これもTryですね…)
一日目の夜は元々大学の友人である@soranimiさんをかりだして、F#&FsUnitで昼の課題に挑戦していました。二人ともF#初心者(私はOCamlの知識でなんとかカバー、@soranimiさんは「実践F#」持ってたはずですが、まだそこまで読み進めていなかった模様)だったので@mzpさんと@bleisさんの手を借りつつ、やっていました。NUnitにもあるパラメータ化されたテストを用いることでテストコードも大幅に重複が消えてすっきりしました。これがいわゆるテストコードのリファクタリング…と実感しました。「Fingがいいよ」とか「VsVimいれてないの?」とか言われました。すみません、まだVS2010は入れて間もなかったので…。
二日目はOCaml組は私以外全員RubyistだったのでRSpecで盛り上がっていました。休憩時間に少しテストコードを見たのですが、すごくよさそうでした。ああ、Ruby&RSpec触ってみたい…
二日目の最後に謎の表彰式があって、@bleisさんに「入門Git」を頂きました。既にいろいろとTDDBCの復習のために使ってみたりしていました。ありがとうございました!
@t_wadaさんのJavaScriptのテストコードについて二日目の終了後、駅前でJavaScriptのペアの方とお話ししました。いままで「JavaScriptのテスト」と言ったときに思い浮かべるものとの差が大きく驚いたという話をしました。私はそれほどJavaScriptに親しんでいるわけではないのですが、私も@t_wadaさんのテストコードを見たときの感想は「あれがJavaScriptのテストコード…」という感じでした。JavaScriptでペアプロをしていた方も同じように感じたようで「今までのテストコードをテストコードって言ったら、@t_wadaさんに怒られちゃう」と笑い話をしました。
「TDDは才能によってできるできないといったものではなく、誰しも習得できるもの」だということを@t_wadaさんがおっしゃっていました。私はまだまだTDDに触れる機会というものが少なかったため、慣れることはできていません。今回の体験でTDDというのがどのように進めるのか、本で読んだだけではなかなか掴みにくい部分を学べました。この体験を生かしてさらにTDDに親しもうと思います。
最後になりましたが、主催者の@pocketberserkerさん、講師の皆さん、そして参加者の皆さん、お疲れさまでした!そしてありがとうございました!