TDD Boot Camp 横浜 Second Season に参加しました

9月1日 TDD Boot Camp (#TDDBC) 横浜 Second Season(神奈川県)
2012/09/01 TDD Boot Camp 横浜 Second Season #tddbc - Togetterまとめ

アジャイルサムライ横浜道場でおなじみ、アットウェアさんで初 TDDBC。
2 倍以上の抽選倍率をくぐり抜け Groovy + Spock での参戦です。

基調講演 テスト駆動開発入門の入門 by 川西 俊之 (@tosikawa) さん

テスト駆動開発入門の入門

ではなく

テスト駆動開発入門』の入門

ということで、TDD といったらまずはこれ、『テスト駆動開発入門』についての講演でした。

テスト駆動開発入門

テスト駆動開発入門

  • 作者: ケントベック,Kent Beck,長瀬嘉秀,テクノロジックアート
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2003/09
  • メディア: 単行本
  • 購入: 45人 クリック: 1,058回
  • この商品を含むブログ (161件) を見る

  • この本を読んで、写経したことあるひと!
    • 帰っていいですよ (笑)
  • 絶対的な定義はない
    • 各自の工夫や実践が重要
  • 動作するきれいなコードのための技
  • 自分のコードに自信をもてるように
    • 保証ではなく自信
  • 黄金の回転

デモペアプロ

TA によるお題のデモペアプロ
ペアプロは @tomy_kaira さんと @yujiorama さん、解説は @t_wada さんという豪華な布陣。

コーディングしているのが見られたのもよかったですが、コードに手を付ける前に話し合いから ToDo リストを作成していく過程と、要所で入る和田さんの解説がとても参考になりました。

  • 慣れないうちはテストはゴール (assert) から書く
  • 1 テストケース 1 assert が基本
    • 場合によるけど
  • 最も単純な動作から着手する
  • 重複が発生したらリファクタリング
    • 2,3 回くらい?
    • 我慢強くない人は 2 回で

昼食

グリーンバンドをてにいれた!

ペアプロ

午後から、いよいよペアプロ実践です。
Groovy は希望者が 3 人だったので、 Java チームから一人スカウトして 4 人 2 ペアです。
途中でペア交代を挟みつつ 3 スプリント行いました。

お題は個人的にも何度かやってる自動販売機です。
TDD Boot Camp(TDDBC) - TDDBC大阪2.0/課題

最初のお相手は業務でも Groovy を使われているという @gantawitter さん。
コードを github で共有して、コーディングは各自の PC で行いました。
設計について話し合う時間を長めに取ったため、2 スプリントで、ステップ 1 までの消化でした。
お釣りの表現、投入操作の戻り値という 2 つの ToDo というか、懸念事項のようなものが残ってしまいましたが、ここでペア交代です。

スプリント 3 のお相手は横浜道場でもお世話になっている @aeg さん。
@aeg さんの PC を共有してコーディングというスタイルで行いました。

ただ、このスプリントは、ステップ 2 の設計についての話し合いがほとんどだった気がします。
どのように商品の状態を表すのかということが主なテーマだったのですが、テストを考えたときにテストの一歩がとても大きくなってしまう気がして二人して悩んでました。

結局、途中の状態がわかるようなメソッドを作成して、最終的に不要だったら消そうという方針で進めましたが時間切れ。
後から考えると、一歩が大きくなるということはメソッドが大きすぎるサインだったかもしれません。

この件について、質問コーナーで @aeg さんが質問したところ、考え方としてはそれほど間違っていなかったようで安心しました。

各ペアでの成果
ganta/tddbc-yokohama-2.0 · GitHub
https://www.dropbox.com/s/duhcc4we7igtuy9/tddbc_0901.zip

スプリントごとに行われた各言語のコードレビューもとても興味深かったです。
同じお題でも、各ペア、各言語などそれぞれ大きく違うのが面白いです。

コードレビューでは、t_wada 賞 にも選ばれた C++ チームの内容が印象的でした。
性格もあるのでしょうが、一歩一歩を非常に小さく慎重に刻んでいったためか、レビューでもテストの意図の説明が明確で説得力がありました。

あと、ペアプロ全体を通しての感想として、和田さんのように特定言語専属ではない TA の方が歩き回って、質問をしたり指摘したりしてくれるのがとてもよかったです。言語に依存しない設計や考え方に対する指摘はとても参考になりました。
といようなことを、ビアバッシュのときに @yujiorama さんにお話ししました。

ビアバッシュ

本編以上に盛り上がったのではないでしょうか。

個人的には、@tomy_kaira さんに、自動コミットについて質問できたのがよかったです。

  • 主眼はコミット忘れをなくすこと
  • コミット忘れがない = VCS を意識しなくていいのでコードに集中できる
  • 副次的メリットとして
    • コミットを後からまとめることでコミットログがきれいになる
    • etc

和田さんのサインもいただきました!

その他いろいろ。詳細は参加者捕まえて聞いてください。

  • お前はいままで書いたテストの個数を覚えているのか?
  • SeleniumとCucumber で君も Facebook HERO だ!
  • @tomy_kaira さん、「TA さぼって pull request しました。+1 してね。」
  • 結婚式準備はデスマ的?
  • 見積もりって難しいよね

最後はみんなで後片付けして撤収です。
横浜道場で毎回やってるのでお手のものですね。

会場提供のアットウェアさん、主催の @setoazusa さんを始めとするスタッフの皆さん、参加者の皆さん、ありがとうございました!