TDD Boot Camp札幌に参加しました。
1/22-23の週末、「TDD Boot Camp」札幌にいきました。
2日遅れでやっとBlog書いていますが、まだまだ熱い気持ちはさめてないつもりです。
詳しい説明は皆さんがBlogでもう書いているので、要点と感想中心で書きます。
1日目のメインはTDDについて@t_wadaさんがどうやってTDDで開発をするのかという流れを教えていただきました。
TDDは、
- テストから書き始めて
- それに対応するとりあえず動く実装を行い
- その後にテストを通す状態を保ちつつリファクタリングしてキレイにする
と言うものすごく理想的ですが是非実現したいスタイル。
それをペアプロを通して、実際にプログラムを書きながら学びました。
たくさんの本の紹介を交えつつわかりやすく説明して頂け本当に充実した一日でした。
2日目のメインはレガシーなコードをテストしていくという、レガシーコードを改善する内容でした。
1日目の内容はものすごく理想的で会社ではなかなか実践できないこともあると思います。
そして、たくさんのテストがなく、
そして仕様書とプログラムの仕様が剥離していたりするような
レガシーコードに対してTDDがどのように効果があるのか、
どうやって戦っていくのかを教えて頂きました。
1日目が終わった際に、会社じゃ無理だろうと思っていたのですが、2日目の講演を聞いて、希望が持てるようになりました。
戦い方は、仕様化テストを行い、その後にリファクタリングや仕様変更を行うという流れです。
コツは、「あきらめちゃいけない」ことです。
簡単にまとめると
- レガシーコードをみて糸口を見つける
- テストコードを書いて、今の実装で通るテストを書く(仕様化テスト)
- テストを通しつつリファクタリングする
みたいな戦い方でした。
実習では、今話題の「Java プログラミング能力認定試験」の第1級問題の仕様化テストを作りました。
これは実に面白かったのです。
これも3人でペアプロをまわしていく手法で実習を行いました。
一人だったらおそらく心が折れていたと思うのですが、
ペアプロスタイルだった事もあり、非常に楽しくレガシーコードに向き合う事ができました。
全体を通しての感想ですが、TDDはものすごく理想的な開発手法です。
そして、ペアプロもかなり理想的。
なんで理想的かというと、私が思う最も重要な理由は「楽しい」からだと思います。
勉強会だから楽しい訳じゃなく、きっと会社でも楽しく感じるだろうと思えるような
そんな楽しさがありました。
仕事だからなかなか楽しくは感じられないと思いますが、
人とふれあい、TDDで安心したコーディングを行う事ができれば、
効率よくモチベーションを保ったまま開発がスムーズに進むと思います。
この効果は結局どうなるかはわかりませんが、
普通に考えて、
コーディング+レビュー+レビュー対応
の時間をペアプロの時間に置き換えるだけで、もうお釣りがくるくらい時間の短縮になるような気がします。
これからのTDDに期待をしつつ、その流れを自分でも作れるようにこれからも努力したいと感じました。
そう、あきらめずに。