この感覚かも

今日は、テスト項目をExcelで書き書き。

自分の書いてるテストはハードが関わってきたりするので、自動化できないのでつまらんなぁと思いつつ書いていると、なんとなくBDDっていいねっていう気になった。


オブラブのクリスマスイベントの角谷さんのセッションで、角谷さんがRSpecのshouldなどのコードを示しながら「このコードを見て、おぉっ!!と思う人と思わない人の違いはなんなんでしょうね?」と語っていたのをすごく覚えています。僕は、その当時は思わない側の人間だったので。でも、今日でなんか、いいねと思える感覚がつかめたきがします。


当時の感覚としては、テストを別に英語っぽく書けて何がうれしいのってかんじだったのですが、今となってはテストの動作と結果を文章に近い形で記述したものが、動くっていうのはいいって感じです。ほんと文章が下手ですみません。


で、自分なりに思ったRSpecのコードを見て、おぉっ!!っと思う人と思わない人というのは、テストのドキュメントを作ったことがある人と無い人で、まずわかれるのではないのかなぁという気が今日しました。もっというなら、ドキュメントを書いていて、なおかつ、今書いていることを後で、また実行(TestUnitを使ってオートメーションするにせよ)するのに労力をかけなきゃいけないことに違和感を感じれる人じゃないのかなぁと。当然、そうじゃなくても、おぉって思う人がいると思いますが。

たぶん、普通にテストオートメーションを実行しているだけの人には、自分でテストプログラムを書くにせよ、RSpec を使って書くにせよ、目的は達成できる訳で。テスト項目の仕様書を書いて、更に自分でテスト行うようなひとには、RSpecで書けば仕様書と言っていいに近いドキュメントのようなコードが動いて、テストもできて嬉しいってなる。

結局、ほかの人と共同で作る場合には、人に何をやったか理解してもらうことが重要なわけで、やったことを説明するのに手っ取り早いのはドキュメントの存在な訳で。いくらコードがドキュメントといっても、オレオレテストプログラムで書くと、他の人はそのプログラムを理解するのにコストがかかり、時間がたつと自分も理解するのにコストがかかる。かといって、テストのためのドキュメントとテストを書くと、なんとなく2回同じことをやっているっぽくて、DRYじゃないし、メンドイよということになる。そして、時間がたつと変更がでてドキュメントとテストに違いがでてくるわけで、駆動しないドキュメントはどんどん陳腐化していく。そこで、RSpecのような自然言語のような形でテストコードを記述できるというのは、他の人も自分も理解するためのコストを抑えることができるわけで。なおかつ、変更がでても、書き換えないとBDDで開発していると駆動できなくなっちゃうから困っちゃう訳で、整合性がとれてくれると。


となると、角谷さんがセッションの最後で、「母語が2バイト文字の人はこれでいいのかなぁ」とおっしゃっていたのですが、その意味が角谷さんが思っていることとあっているかはわかりませんが、より理解できた気がしますよ。結局、日本人にとって英語を理解するには、コストがかかりますものね。かといって、日本語でコードを書く気がおきるかといったら別のような気がしてしまいますが。Haskellでラムダの表現をいくら使えるようになったからといってλといちいちIMEを変更して入力したいかといったら、僕は嫌な人だから。