TDDBC名古屋参加報告
id:a-hisameと同じくBlogを更新するのは久々だったりするわけですが。
7月10日、11日に開催されたTDD Boot Camp 名古屋に参加してきました。
主催のid:bleis-tift、id:t-wadaさん、そしてスタッフの名古屋アジャイルスタッフの皆様、本当にありがとうございました。
以下、あったこと・やったことなどをつらつらと。
1日目
出発
前日に全く準備をしていなかったため朝から準備をする。
6人いたTUT参加組の中で、1人寂しく名鉄で金山へ。(´・ω・`)*1
約1時間後、若干迷いながらも到着。
私のようなヘタレプログラマがいていいのかとgkbrしながら受付を済ませ、席に座る。
午前・TDDについて
TDD自体は、以前に名古屋アジャイル勉強会で経験済みだったため、ある程度基本的なことは知っていたものの、改めて話を聞いて新たな発見や気付かされることが多くありました。
特に興味深かったことは(多いけど)以下のポイント。
- 複数を相手にせず、1つずつ少しずつ、各サイクルをすばやく回す
- 自分が最初のユーザである 自分が最初に使う そのコードを最初に『利用』する
- 祈るのではダメ 安心して飛び込む(飛び込んでいく)
- TDDはテスト技法ではなく設計技法、目的ではなく手段
- TDDの最大の理由は心理的なものであり、即座にフィードバックを得ると共に、書いたコード及びこれから書くコードに自身をもつために行う
- TDDの真の目的は健康
- 仮実装(Fake it)はテストのテスト
- 間合いを測ることが大事
- Lesson 5「一番の近道は遠回りだった」 (荒木飛呂彦「スティール・ボール・ラン」より)
以前からおっしゃられていた「黄金の回転(TDDでのRed→Green→Refactoring)」の意味もより掴めた気がします。
どうでもいいですが、この時の「きれいなコードしてるだろ・・・。動かないんだぜ、これ。」という台詞が妙にツボにはまりました。
その他、細かい話の内容をメモした範囲で書こうかとも思いましたが、id:rf0444のエントリに細かいメモ、およびid:t-wadaさんのエントリにも当日のスライドがアップされているため、割愛します。
午後・実践
座学が終わり昼食後、TDD実践。言語はJava。
まず隣に座っていた@you_akasiroとペアを組む。
・・・と言っても、まずお題のプログラムのクラス仕様を相談しすぎたため、この時手を動かす作業はあまり進まなかったわけですが(^^;
そして各テーブルで各ペアごとに書いたコードのレビューを行った後、お題の仕様変更が発表されペア交代。次のお相手はid:meganiiさん。
先程出来なかった部分をササッと完成させ、テストコードを書きながら実装を進める。
以前の名古屋アジャイル勉強会の時にも感じたことですが、複数人で1つの画面を眺めてプログラミングをしていると、1人でプログラミングをしている間には気がつかないポイント(軽い記述ミスなど)にも気がつくことができるので、プログラミングをしていて楽しかったです。
ただ、Mock等の知識がなかったため、一部テストコードが書けず少し悔しい思いもしましたが。
この後のコードレビューも、他の方達の凝ったコードを見ると同じJavaでプログラムを書いたとは思えなかったぐらいでした。
すごいなぁと思いながら、まだまだ実力が足りてなさすぎだ、と感じました。*2
懇親会
人見知りな性格のため、あまり見知った方としか話が出来ませんでしたが、主にid:bleis-tiftとXperia及びiPhoneについての話と、@you_akasiroとゲーム(主にシューティング)の話をしていた気がします。
2日目
午前・レガシーコード改善について
テストやリファクタリングの重要性や、レガシーコード(テストがないコード)とどう戦うかについての解説が主題でした。
この日の興味深かったポイントは以下。
昼ごはん
炭水化物大杉。*4
午後・レガシーコード改善
午後は複数人に分かれ、レガシーコード改善実践。
Java組は人数が多かったため、2組に分かれ、5分交代でペアプログラミングを行う内容。
私たちのチームは6人。
レガシーコードはid:Akinekoさん提供の、Twitter APIを利用したプログラム。
ペアプログラミングといえど、もうすでに出来ているコードにテストを追加していくということは初めてのことだったのでしどろもどろしてしまったのですが、id:katzchangさんの手助けもあり、ある程度チームに貢献できたように思います。
結果的に、チームでいい線までコードを改善することが出来、レガシーコードを改善していくというプロセスをはっきりと実感できました。
また、他のチームの成果発表もありましたが、Scalaのチームが一番盛り上がっていました。
これが名古屋Scalaの力か・・・。
その後、1日目と同じくKPTを行い、2日間の全日程終了。
最後に
この2日間、とてもいい経験になりました。
id:t-wadaさんの講演に始まり、ペアプログラミングでのTDDやレガシーコードの改善などにおいて、新たな経験や発見を多く見つけることが出来ました。
本当にありがとうございました!
感想などなど
- もっとコード書かなきゃなぁ。
- 人見知り&体力が尽きて積極的に議論に参加できなかったのはちょっと残念。
- TDDについて本を買うなどして今回以上にちゃんと勉強しよう。
- そのうちレガシーコード改善ガイドも買わねば。
- id:a-hisameを起こすときにはコツが必要だったりそうでもなかったりします(よく起こしてる人談)。*5
- みんなもスティール・ボール・ランを読もう!むしろ読め!