TDDBC名古屋体験記

すごい久々にブログを書きます。
さて、この度名古屋にてid:bleis-tift(名古屋アジャイル勉強会)主催のTDD Boot Camp名古屋が開催されて、そこに参加して来たので感想や体験した事などを書こうと思います。

教えて貰った内容(1, 2日目午前)

講師はid:t-wadaさん。
他の参加者の方々の記事があまりにも早く、優秀すぎるので、内容のまとめはそちらをご覧下さい。
http://blogs.yahoo.co.jp/nagoya_agile_study_group/32506622.html
自分が感じた事に関しては、(大体Twitterの過去ログそのままだけれども)

一日目(TDDによる開発)
  • ボケれなかった事に対して、(おそらく会場で一番に)「アジャイルに謝る」を実践した。
  • 「汚いコードだろ、動かないんだぜコレ…」(RED)→「汚いコードだろ、動いてるんだぜコレ…」(GREEN)→「綺麗なコードだろ、動いてるんだぜコレ!」(REFACTOR)
  • テストっていう言葉は文脈によって違うよ! TDDの文脈でいうテストは、「開発者」のためのテストであって、品質保証と密に結びついてはいないよ!
  • テストが通ることは、「開発者が考えた通りには」コードが動作する事を意味している。ただし、それが仕様と一致しているかは分からない。
  • 関数型言語の用語が飛び交う名古屋怖い
  • 「不安をテストに」。何が不安かは、開発者によって異なる。故に、TDDのテストの粒度は人によって異なる。
  • 仮実装(Fake it!)は、省略しがちだけれど、間違いの気づける良いタイミング。
  • TDDを5秒で説明すると => 「実装時間が2割増し、バグの個数は半分に」
  • 『一番の近道は遠回りだった』
  • スティール・ボール・ラン」はTDDの教本
  • assert(どのような結果になるか)から記述 → (コンパイル/実行エラー) → RED というサイクルでの実践。
二日目(レガシーコード改善のために)
  • コードの進化と同時に、テストも進化させる。(足枷にしてはいけない)
  • オススメ! → レガシーコード改善ガイド、xUnit Test Patterns、データベース・リファクタリング
  • スローテスト・モックテストも、「場合によっては」どちらも有効。
  • 既存レガシーコードの改善: 既にあるコードは変化させずに、その仕様を写し取るためのテスト(Characterization Test, 仕様化テスト)を記述する。

実践した内容(1, 2日目午後)

私はScala組。Scalaが6人、OCamlが4人。
最初は@RKTMさんとペアで。一番最初にsbt + scalatestの環境を導入。
それを使い始めるまでに多少時間が掛かりましたが、今までの手動方法よりも、遥かに開発効率が上がりました!
# おかげで、課題に取り組むのがひっじょーに遅れてしまいましたが(汗
assert先行での記述を大分指摘して貰いながら、基礎的な所を組み立てて行きましたが、ペアプロによる会話と、sbtによるテストの自動化による「テンポ」が、TDDを促進するのをコードを書きながら感じていました。
次に@yusuke_kokuboさんとペアで。
仕様を詰めすぎて、1番の課題から先に進めなかった......
時間の制約もあったので、もっとザックリと他の課題に手を付けても良かった気がします。
Scalaって、微妙に欲しくなる機能が備わって無い気がするんですよね。Uniqueとか。
でも、コードを書いていて楽しかったです。お二人とも、ありがとうございました。
本当は、普段からもできるだけペアプロを実践したいんだけどなぁ。


なお、作成したコードはこっちにアップしてあります。
http://code.google.com/r/i4hayasi-scalacode/source/browse


二日目もScala組に混じりました。
vim派 + デフォルトキーボード + マウス という環境の私に取って、emacs + Caps <=> Ctrlバインドキーボード + トラックボール という環境はまともに扱えるレベルではありませんでした。
あとは、scalatestフレームワークの使い方を皆知らず、例外がががという状況でした。
しかし、仕様化テストの前に、何処がどう動くかを理解するのに時間が掛かった私です。べんきょうぶそくです。
使う機会が無かったけれど、バージョン管理とTDD組み合わせのリズムも、近いうちに感じる必要がありそうです。

まとめ

「一番の近道は遠回り」
こういった場で切っ掛けを貰って、あとはきちんと手を動かして、自分なりのリズムを得たいですね。
そして、そのリズムをまた他の人と議論して見たいかなと思いました。


id:bleis-tiftさん、id:t-wadaさん、名古屋アジャイル勉強会の皆さま、そして、TDDBC名古屋に参加された全ての人に対して、「お疲れ様でした」、そして「ありがとうございました。」
また、機会があれば是非参加したいイベントです。
次は大阪か佐賀あたりで話が進んでいるとか、進んでいないとか。

オマケ

1日目の夜は素敵な修学旅行でした。
@pocketberserkerさんの研究に協力するために、課題をJavaガリガリと。
ここで、eclipseというツールと、TDDの相性の良さに驚きながらも、そこから生み出されるテンポの気持ち良さを改めて感じました。
ちなみに、そーいうことをしているというid:Akinekoさんのtweetで、一部屋に10人以上も集まって参りました。
途中から、クラスとインスタンスに関する議論(多分主犯 → id:rf0444)とか、ボードゲームとか始めていました。
引率のid:t-wada先生はお困りのようでした。
豊橋組、マジフリーダム。
学生だって、まずはこういったイベントに参加しようよ。楽しいよ!

ちなみに、id:Akinekoさんと同室という名誉を頂きました。
昼間や夜の議論とかコード記述・レビュー体験があまりに激しかったので、朝自力で起きられずに、秋猫さんに起こして貰うことで*1、朝食を食べることができました。
何か色々とありがとうございました。
# 次回、TDDBC大阪を期待してます!

*1:...///