東京をはじめ各地で開催されているTDD BOOT CAMP(以下TDDBC) が長野で開催されました。
午前中は@tmtmsさんと@ktz_aliasさんの発表に続き、私も「.NETのテスティングフレームワーク」と題して発表しました。
今回は事前に練習してたんで、まあまあ言いたいことが言えてやりたいことができました。それほど難しい題材じゃないのでできて当たり前なんですけどね。。。
その後に@tmtmsさんと@nabetaroさんでペアプロ実演。ほんとはfizzbuzzを題材にする予定だったそうですが、私がそのネタを取ってしまったので、ボウリングのスコア計算機を苦心しながら実装することに。。
午後はプログラミング言語別にペアプログラミングをしました。題材はTDDBC東京で出題された自動販売機の実装です。
1.
・千円札と硬貨を投入することができる(1円玉5円玉は使えない。Exceptionを投げる)
・それ以外を投入された場合、Exceptionを投げる
・現在投入されている合計金額を算出できる2.
・ID1 コーラ5本120円を在庫として保持する
・お金を投入すると、現在購入できるIDを算出する
・購入できるIDを指定して、ジュースを買うとコーラの在庫が減る
・現在の売上金額が算出される
・現在の在庫数が算出される
・在庫切れを考慮する3.
・千円札5枚、硬貨はそれぞれ10枚保持する
・ジュースが1つ購入されるとお釣りとして、お金が減算される
・お釣りが足らなくて購入できない状態を考慮する
・現在のお釣り用のお金が算出される4.
・ID2 レッドブル 5本 200円 を追加
・ID3 水 5本 100円を追加
ペアプロについて
私はC#でペアプロさせてもらいました。サボれないし、ちょっと気を使いながら、というのもあってかかーなり疲れました。
C#も含め下位互換を意識した(というか何かの流れをくむ)プログラミング言語って、人によって記述スタイルがまちまちに書けてしまうので、それを合わせるのにちょっとストレスですね。具体的にはfor eachで書くかforループで書くかとか。LINQ使う使わないとか。何度かペアを続けていけば、そういったプログラミングスタイルをすり合わせていって、本来注力すべきロジックに専念できるのでしょう。
rubyはそういうプログラミングスタイルの違いがC#/VB.NETと比較しては出にくいのかなー、と成果発表を見ながら感じました。
TDDに合う組織合わぬ組織
TDDは仕様を明確にしつつ内部実装を"その場"で作っていくというスタイルなので、箸の上げ下げレベルまで詳細に記述したプログラム設計書を事前に要求している開発プロセス、組織には合いませんね。ふむー。
ありがとうございました
それにしても、東京や名古屋に行かないと参加できなかったTDDBCが、チャリで15分の所で開催されたことは本当に嬉しい限りです。企画してもらった@tmtmsさんに感謝いたします。ありがとうございました。また、NSEGを立ち上げてくれた皆さん、毎回参加している皆さん、幹事の皆さんに重ねて感謝いたします。今後もどういう形であれ続けていきましょう。
最後に、KPT形式で振り返り。
keep
会場が無料だった。良い会場でした。
お菓子を仕入れておいたのは良かったと勝手に思っている。
NUnit初心者の方に、ちょっと教えることができた。
problem
自社の人間の招へいが実現しなかった。私の力不足。
絶妙なタイミングで家を出て雨に降られた。
try
次のネタとしてはレガシーコード改善でしょうか。
自社の人間を呼びたい。タダでこの体験ができるのにもったない。