Example)今日は仕事Rubyでちょこちょこ書いていたのだが、そこで気づいた開発方法ってのは、DBEという感じだ。TDDに似てるけど違うのは、僕が仕事用にRubyで作るプログラムというのは文字通りシェルスクリプトというか、シェルから実行するタイプのプログラムだから、全部で1ファイルのような作りになる。外部インターフェイスみたいなものを考えないところかな。考えてみるとそれは関係なさそうだし、そんなこともなさそうだ。gzipを使いたいとする。リファレンスを見ながら作るのだが、この時、僕が作りたいのはこんなメソッドだとする。strをgzip圧縮して返すendもちろん、ということはTDD風にtest_fooを作って......という方法はあり得るのだが(というか、書いていて気づいたが、そうできるな。フィードバックの量に関する問題のような気がする)、何しろ使ったことないんだから実際に動くところを見てみたい。buff.stringbuff.closeで、とりあえずこんなのを作ってみる。gz.rb|gunzipabcdef$ちゃんと動くじゃん、と確認して、このサンプルプログラムをコピペしてfooを完成させる。buff.stringendとか書いてみたりしたのだが。StringIOはStringWriterとは違うと良くわかった。いうようにむしろStringIOのほうで引っかかっていたのだった。"")と与えて後からbuffを取り出す使い方が想定だと書かれている。そのほうがスマートなのでそう書くべきでしょう。TDDは繰り返しできるから(残るから)、リファクタリングにも利用できる。DBEは、確認した先から実際のプログラムへ移動して行くから残らない。なんでこんなことを書いているのかというと、DBEが成り立つ点が、スクリプト言語の良い点なのかな、と思ったのだった(実際は、CでもVBでもJavaでもこういう簡単な確認プログラムを作って取りあえず試すことは良くやるし、普遍的な方法なのだが、部分切り出しがRuby−−もちろんPerlなんかもそうかも知れないが知らないものは知らないわけである−−だと楽だな)。いうか、むしろミソは、パイプでgunzipを繋げられて実行できる環境のほうかも。システムで何かを書くとき、似たような手順をふんでいます。