『404 Blog Not Found ― テキストエディタさえあればできるTDD』について。

※ 「それがわからないのであれば、あなたはTDDがわかってないのだ」という強い言葉に反応。

まず、角谷さんは誤解なんか全然していないように思える。

つまり、「Perl だとちゃちゃっと書けて、面倒くさくない」というのは、まさにハッカーの発想であって、TDD は本来そんなハッカーには不要なものじゃないかということだ。

上記記事より引用:

プログラマーにとって最も偉大な習慣とは、プログラマーでない人たちの立場になってものを考えられるかではないのか。テストを書く人はプログラムを書く人と同じとは限らない。いや、本当のところは違っていた方がいいのだ。

私が「eclipseを使っている人はいいけど」と言ったのは、まさにそのことだ。

それがわからないのであれば、あなたはTDDがわかってないのだ。

記事では、「Perlではこんな簡単に書ける」ということで Perl で書いたテストの例が挙げられている。

しかし:

  • 上に書いたが、テストがこんな風にちゃっと書ける、というのは主にハッカーにとっての利点であるように思える。少なくとも「プログラマーでない人たちの人たちの立場」のものとは思えない。記事には「プログラミングを全く知らなくてもテストを書くことが出来る」ともあるが、Perl のテストの例を見る限り、とてもそうは思えない。特別なツールを使わずにテキスト エディタでさっと短くテスト コードを書く、というのは、「プログラマーでない人たち」から見ると逆にハードルが高いだろう。そちらの方が簡単、というのは「プログラマーでない人たち」の視点ではなくハッカーの視点だと思う。
  • そもそも TDD の一文字目が表わすのは、「プログラマーでない人たちの立場になった」テストではないと思う。あくまでもプログラマーが設計と実装を行うためのものだ。「テストを書く人はプログラムを書く人と同じとは限らない」とあるが、その「テスト」とは違う。こんな風に、TDD の Test は通常のテストと混同されることが多い。通常のテストと混同されないようにTDD の Test は Test と呼ばない方が良い、という議論もあるほどだ。TDD はあくまで設計と実装を楽にやるためのプラクティスであって、プログラマーのためのものだ。

※ 私は TDD はプログラマーの視点変換ツールだと考えていて、その点に関しては記事の方と意見が共通だ。