作る前に使えば作ったものに未練がない。不安をテストにテスト駆動開発にテストをどこまでテストするべきかという定量的指標はない。TDDにおける「テスト」は開発者のためのものなので、自分たちが何故テストを書いているか考えるべき。「自分たちの手が止まるのはどういうとき?」「不安があるとき。」getterやsetterに不安はないよね祈るのではダメ。不安があるならテストを書く。テストを書くということは、命綱を編む行為である。Testingのよいところソフトウェア工学的なメリットはたくさんあるけれど最大の理由は心理的なもの。バグがないとは言い切れないけど、自分の考えた通りには動いていると言える。テストは目的ではなく手段です。変化に対応するのは健康体のコード。変化に対応するのは健康体のチーム。開発いよいよ開発が始まります。Ruby/RSpecかPHP/PHPUnitのどちらかにしようとしていて、直前まで悩んでいたのですが、結局PHP/PHPUnitにしました。普段、Railsの上でしか開発をしていないので、素のRuby書けるかなぁという不安に負けた感じですかね*1。JavaScript等?)が2割といった感じだったでしょうか。今回のお題はLTSVでした。任意のkey-valueをset/getできて、それをdumpするとLTSV形式で吐き出されるような機能をTDDで実装せよという感じです。開発環境ペアを組んだ人とお互いの環境を確認しながら、どっちのマシン使うか考えたりしました。運が良かったと思ったのはどっちもMac-er(まあ、これは想定通り)どっちもUSキーボード配列(まあ、プログラマだし)どっちもVim-er(まあ、これもだいたい想定通り。)どっちもtmux-er(まあ、Screen使ってる人もそれなりにいると思うのでラッキー)どっちもprefixキーがCtrl+t(ええ、まあ)PHPUnitはどっちも3.7系(最新)PHPの自分5.3系、相手5.4系という結構近い環境でした。.vimrcや.tmux.confの細かい設定まで一致することはないと思うのでそこまで確認はしませんでしたが、はじめてペアを組むにしてはだいぶやりやすかったかと。結局、PHPのバージョンの関係で相手のマシンを使うことになりました。黙々と作業していました。意識していたこと/気づいたことだけ箇条書きでまとめるとテストのリファクタリングもした。「このテストってもうたぶんいらないですよね?」とペアで確認しながらうまく進めることができた。実装前に書くテストはただRedになればいいんじゃなくて、期待通りのRedになるか大事。assertメソッド呼んで失敗するのが正しいはずなのに、何らかのエラーでそもそもassertまで到達してなかったりするんですよね、たまに。それに気づかずに実装してしまうと、実装終わってもGreenにならない。したペアプロは初めてやったけど、やっぱりナビゲータのほうがいろいろ気づくことが多い正常系動いてないのに異常系のこと考えない弱そうなやつから仕留めるなどですね。ありがとうございました。開発が終わった後には何組かからどういう風に進めたかという発表と、実際にコードを見ながらのレビューがありました。僭越ながら、我がペアはPHP組を代表して「PHPらしいコードを書いていた」という誇っていいのかどうかわからない理由(笑)により発表させていただきました。ちなみに我がペアの成果物は以下にあげています。https://github.com/a-suenami/tddbc2013-ltsv-phpunitFork元がペアだった人ですね。TDDBC終わった1週間経ちますが、それ以降手を入れてないです。それなりにしゃべれた気がします。会場から質問やまさかりが飛んでくることはなかった*2けど、それはみんなPHPに興味ないんじゃなくてコードが良かったからだと信じてます!(笑)ビアバッシュその後、ビアバッシュ。野良LTが始まって、それに対してまさかりが投げられたりして、とてもおもしろかったです。憧れだったグリーンバンドを手に入れました!これで僕も堂々とTDDerと名乗っていいですかね。振り返り初参加ながら振り返りにも参加させていただきました!いろいろなよかったところ/改善すべきところがあるのはどんなイベントでもそうだと思いますが、実際にこの場に参加させていただくと、運営側のみなさんがどれだけ参加者のことを考えて開催をしてくれているのかを実感することができました。本当にありがとうございます。今年はTDDBCラッシュらしく、この後、長岡/福岡でも開催されるとのことです。長岡はまだどういう関わり方をしようか考えていませんが、九州人としては福岡にはぜひ参加したいと考えています。今回PHPで参加したので次回はRubyで再度参加でもいいのですが、スタッフ(TA)というのも捨てがたいと思っています。*1:今考えればRubyでも全然行けた気がします。見極め方Archiveスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。