テスト駆動開発

Hさんという,なにかと伝説になっている研究室のOBがいる.飛び級して院に進学し,マスターとった後はあんまり優秀だったんで外国人のなんとか先生がオーストリアに帰るときにそのまま拉致されたとかいう噂だ.で,そのHさんなのだが,最近研究室の人と,プログラミング言語についてとかやたらと議論を吹っ掛けてくると,閉口している話を耳にした.

MLがどうのとか,そういう話が主らしいのだが,先日は「テスト駆動開発は不自然だ」とのたまっているらしいとか.テストを最初に書くのはおかしい,と.

テスト駆動のメリットについては,さんざん議論されているのでここではなにも言わない.それより,僕の感想だけ話そうと思う.

なにより僕がテスト駆動を気に入っているのは,開発のリズムがよくなることにある.

  1. 仕様を考える
  2. テストを書く
  3. プログラミングをする
    1. プログラムを書く
    2. make一発でテストが実行される
    3. テストを通るまで,3.1,3.2の繰り返し
  4. プログラムが完成するまで,1,2,3の繰り返し

という,ループを継続的に行うことにより,開発作業のリズムがすごく良くなる.そして,このリズムにはテストを最初に書くことが不可欠である.プログラムを書いた後で,ごそごそテストを作成するのは,やっぱりなんかリズムが悪い.内側のループが高速に回らなくなってしまう.

Hさんも実際にやってみれば,メリットがわかるはずなんだけどなあ(逆にデメリットがわかって,いっそうテスト駆動から遠ざかることになるかもしれないけど.まあそれは仕方がない).

ていうか,ふと思ったんだけど,Hさんはあんまり優秀なのでこういう凡人向けの開発方法は,やくに立たないんじゃないか,と.なんか,急にそんな気もしてきたな・・・


あと関係ないんだけど,ユニットテストフレームワークを書くときは,「小さなテストフレームワークを作って、ブートストラップするんだ」とか.なるほど,っていうかそれしかないよね.

あともっと関係ないんだけど,来年とかtRubyでRubyConf2005とか行かれんかな,と妄想.