TDD BootCamp 札幌2.0に参加してきました。

6/4にTDD BootCamp札幌2.0に参加してきました。
TDD(Test-Driven Development)とか、よく聞くんですけど、
全くテストとか未経験だったので、興味本位で参加することに。
以下、感想です。


日程としては4日オンリーなんですが、物覚えの悪いうちは5日のServicePackも適用してきました。
いや〜、基本・応用情報の知識程度は持ってましたけど、
手法に関してはからっきしでした。


午前の講演・実演、午後の演習ともにとても楽しかったです。
印象的だったのが、レガシーコードの度合いの表

レベル0 重要なロジックに限定しテストされている
レベル1 設計・可読性は良いが、テストがない
レベル2 可読性は著しく低いものの外部的振る舞いは正しく、インターフェースも適切
レベル3 外部的な振る舞いは怪しく、内部的実装を理解することが難しい
レベル4 外部的な振る舞いは怪しく、内部的実装に各種トラップが多く理解できる人が存在しない

とのこと。
今までつくってきたソースがLv4ないし、3に該当する自分。
困った困った。今後は少しずつテストしていけるようにしよう。
・・・でもC言語でテストとかどうすりゃいいんだろう・・・。(業務でよく使う)


午後のセッションではPython班として、参加。
何気に「初めてです」と行ってた割にJavaScriptのテストとか見せてくれた、@dasoranさん
PHPが本職で、Python歴半年?3ヶ月?の、@ayako119さん
pythonおじさんでEmacの人こと、今回のPython班スタッフの、@nakayoshixさん
テストを書いたことのない自分にとってはみんな眩しかった。
いざ初めてみると、@nakayoshixさん無双でした。
最初の方針決めから、テストコードの書き方までささっとやってくれて、
後は、@ayako119さん、@dasoranさん、うちの順番でEmacsをローテーション。
vim派のうちとしては新鮮な環境でした。
知らないことをpythonおじさんに聞いたら、直ぐに返答がきて、以外にサクサクと操作してました。
方針としては、もともとあるJavaのレガシーコードをコンパイルして、classファイルにして、
classファイルをJythonから呼び出してpythonのunittestで仕様化テストを書いていくという手法。
レガシーコードが欲しい方はこちら→shuji.w6e / tddbc-sap02-legacy / source / — Bitbucket


ファイルを読み込んで、処理するテストを省き、
仕様化テストを元に残り1hでpythonコードに直す。
正直心の内は「間に合わない」と思ってたり。
・・・ですが、ほぼ30分で、書きあがりました。
しかもテスト通るという安心感。


このままファイルの読み書きを!と思ったところで時間切れ><
最後に班ごとに発表と、テストが通るかの実演をやって終了。
その後懇親会に行き親睦を深めました。


次の日のSPは、前日の続き。
・・・と思いきや、自動テストとバージョン管理システムの構築から。
どちらも自分の知らなかった知識がバンバン出てきて、心中「すげー、すげー」としか言ってなかった気がします。
そして、ファイルの読み込みまで完成して時間切れ。
続きは各自ということで、@nakayoshixさんにbitbucketに上げてもらいました。
あとで、ちゃんとやらないと・・・。


TDDだけでなく、いろんな人のいろんな知識を知れたので、pythonBoot Campとかあればいいのになと、
心の内にひめて幕を閉じます。