今日はお昼からチームメイトのAbdelのうちで一日中ペアプログラミング、と思ったら、彼は先週買ったばかりのMacProでの開発環境に四苦八苦しているらしく、しばらくはRubyEclipse, Rad Rails といったソフトウェアを一から入れなおしていました。

3時くらいからようやくユニットテスティング開始。昨日一日かけて私が書いたロジックの部分を一からユニットテストしながら書き直しました。一番苦労したのは open-uri(http://www.ruby-doc.org/stdlib/libdoc/open-uri/rdoc/)というモジュールをいかにモックするかということでした。

最初は「モジュールを呼び出しているだけなんだからそんなのまでわざわざテストする必要ないじゃん」と思っていたのですが、テスト環境ではいかに外部との依存を断ち切るかが重要らしく、open-uriなどのように外部のウェッブサイトからHTMLをとってくるようなモジュールはネットワークのつながらないところじゃテストできないからモックは必要、とAbdelは主張するのでわざわざつくることに。といってもやりかたわからなかったので本をみながらなんとか設定しました(実際には"test/mocks/test/"ディレクトリ上にopen-uri.rbというファイルを作り、そこへHTML分を適当に放り込んどきました)。

その後もいろいろ試行錯誤していたのですが、なかなかユニットテストに合格せず、ようやくグリーンの灯がともったころには7時を過ぎていました。でもがんばったあいあって、私が昨日ぶっつけ本番で書いたコードより数段きれいになった気がします。

そしてやっぱりテストをしながらのほうが格段にディバッグもしやすいことに気がつきました。今日のコードはほとんどAbdelが書いたのですが、自宅に帰ってから、追加のテストを自分で2本書くことに成功。いままでテストなんか一度も書いたことがなかったので、格段に成長した気がします。

今日は結構中身の濃い一日でした。最後に二人で家の近くのお好み焼きやさんで晩ご飯食べました。お好み焼きの由来をAbdelに説明するとともに「お好み焼きには関西風と広島風があって、どっちが本家お好み焼きかでいろいろ論争になるんだ」などと説明したのですがあまり反応がありませんでした。やはり外人には少し高度すぎる話題だったでしょうか....