A Day in the Life

2006-10-26

thinkpad の HDD がまた壊れた

MJD…。もういやだ…。とりあえず仕事ができるぐらいには別マシンで環境修復した。各種設定ファイルやソフトウェアの一部を svn やらなんやらで管理しといてよかった、、、。

バーカバーカ

おにおんくろわっさんうまい。タマネギがとろとろに煮てあるの。

money_spec.rb

http://kakutani.com/images/20061016_0.png

カッケー。rspec で TDD本写経なついー。ちょうど一年ぐらい前だなw。いま rspec ってこんな書き方できんだー。日本語で仕様名書きたい!こういうのみると rails の test も rspec に移行したい!とか思ったりもするけれど Test::Unit べったりな各種 test_helper がなぁ。

呑んで酔っぱらうとなんか長文を書きたくなるということが解った>俺。そしてあとで読みなおしていろいろとへこむ気がする

↑エントリータイトルに本文を書くメソッドって otsune さんが発祥なのかしら?

テストの話

http://kakutani.com/20061024.html#p01

ハッカーにTDDは要らない。ただただハックすればよい。

にはやっぱりちょっと納得がいかない、と思った。思った、んだけど優れたライブラリ/ツールを生み出してるハッカーってホントに TDD で作れるのか?(作ってるのか?)という気もする。

まず単体のライブラリに対するユニットテストを最初書くいてもインターフェイスの輪郭であって、まだぼやけてる。頭できっちりとイメージできない。これは「仕様がきっちりと固まってないのに作るなんてダメ」ということになるんだろうけど、仕様をきっちり定義できるほどしっかりしてない。

でもなんとなく書いていくうちに、こうした方が使いやすいよなー、といった発想が思い浮かんで Test 書き直して(つまるところインターフェイスの再定義)してまた別の実装にしてって、という事も割とあるような。これって TDD じゃないよね?

メソッドの引数が 0 or 1で、クラスに一つのパブリックなメソッドしか持たないような単純なクラスの場合は、そりゃもう仕様なんてかっちりすぐ決まって TDD になるんだけど、ちょっと複雑になってくると、わりと試行錯誤してるうちに優れたインターフェイスが実装中に思い浮かんだりして、結局 Test 書き直す、とか。元も子もない。

Plagger は miyagawa さんが書いているとおり、最初はいろんなフックの追加や内部的な変更など、仕様が曖昧だったけど、試行錯誤していくうちに、現在の優れた様々なAPIや、きっちりとしたフック定義、それに基づいた Test が書けるようになっている。ということから、やっぱすごいハッカーは最初は TDD じゃなくて、純粋なドライブ感を楽しみながらハックしてるなー、という気がする。

アイディアが浮かんで、めっちゃはまってコードを書ときって、Test から書くんじゃなくてコードの断片書いてったらすごい楽しくなってって、ドライブしてって、って感覚があるよね?少なくとも俺はそうだなぁ。

ハッカーの人は「コードを書く前にはテストから」というよりも、ハック中は本人の感覚、感性でコードやテストを書く気がする。もちろんテスト環境がきっちり整っていたり、テスト書いた方が絶対良い場合はわりとテストから書くけど、感覚(ドライブ感)優先でどっちからでも!となる気がする。

というようなことを角谷さんは「ハッカーと普通のプログラマの違い」として云いたかったのかなー、と思った。ていうかそもそも前提条件が違うのか。角谷さんのくだりだと、ハッカーは普通の受託開発ではない、好きなプログラミングが前提で、普通のプログラマは仕様を顧客と話しながら進めていくようなプログラミングが前提の気がする。後者の場合はそりゃ最初に仕様を決めるべきであって TDD をしやすいが、前者の場合はそりゃハッカーのセンス任せだから TDD でもハックでもお好きなように、となる。

記事の一覧 >