(Forum) 私はなぜフレームワークが嫌いか

From The Joel on Software Translation Project

Jump to: navigation, search

BenjiSmith / 青木靖 訳
2005年9月30日 金曜


私は現在JavaによるWebアプリケーションの構築を計画している(そう、様々な理由のためにJavaである必要があるのだが、それについては今は話したくない)。その過程で私は、ポートレットをサポートしたJSR準拠のMVCロールベースCMS WebサービスJ2EEアプリケーションのコンテナフレームワークを数多く評価した。

機能リストやドキュメンテーションに目を通すのに何十時間も費やしたのち、私は自分の目玉をえぐり出したくなった。

たとえば私がスパイスラックを作ることにしたとしてみよう。

私は小さな木工プロジェクトを前にもやったことがあり、何が必要になるだろうかについては十分に理解している。木片と、それに巻き尺や鋸や水平器やハンマーといった基本的な道具だ。

ただのスパイスラックでなく、まるまる一軒の家を建てるのだとしても、私は依然として巻き尺や鋸や水平器やハンマーといった道具を使うだろう。

それで私は金物屋に道具を買いに行って、店員にハンマーがどこにあるかたずねる。

「ハンマーですか?」と彼は聞き返す。「最近ではハンマーなんて誰も買いませんよ。時代遅れですからね」

私はこの展開に驚いて、どういうことなのか彼に聞いてみる。

「問題は、ハンマーにはすごくたくさん種類があるということです。スレッジハンマー(大鎚)に、くぎ抜きハンマーに、丸頭ハンマー。どれかを買って行って、あとになって別な種類のハンマーが必要だとわかったらどうします? 次の作業のために、別なハンマーを買わなきゃいけなくなるでしょう。わかったのは、一本であらゆる種類のハンマー仕事に使えるようなハンマーをみんな望んでいるということです」

「フーム。それももっともな話だ。じゃあその万能ハンマーを見せてもらおうかな?」

「いえ、うちではもう扱ってないんです。もう廃れてしまったので」

「ほんとに? 今の話だと、万能ハンマーは今後使われていくものなのかと思ったよ」

「あらゆる種類のハンマーと同じ仕事をこなせる一本のハンマーを作ろうとすると、実際のところどの仕事もあまり満足にできないということがわかったんです。釘を打つのにスレッジハンマーを使うというのは効率的じゃないでしょう。それに昔のガールフレンドを殺そうと思ったら、丸頭ハンマーに代るものはありません」

「確かに。じゃあ誰も万能ハンマーを買わないし、昔ながらのいろんな種類のハンマーも売っていないなら、どんなハンマーを売っているわけ?」

「実のところ、ハンマーは全然売っていません」

「じゃあ・・・」

「うちで調べたところでは、みんなが必要としていたのは万能ハンマーじゃなかったんです。それぞれの仕事に合ったハンマーを使う方がいいですからね。それで私たちは、使いたいどんな種類のハンマーでも製造できるハンマーファクトリーを売り出したんです。あなたがしなきゃいけないのは、ただハンマーファクトリーで機械を操作する工員を補充し、原材料を買って、水道や電気代を払いさえすれば、ほら、まさにほしいハンマーがあっという間に手に入ります」

「ああ、しかし私は正直ハンマーファクトリーを買いたいとは思わないな・・・」

「それは構いませんよ。ハンマーファクトリーはもう売ってませんし」

「でも君は今言ったんじゃ・・・」

「確かにほとんどの人はハンマーファクトリーをまるまる必要とはしていません。たとえば、決して丸頭ハンマーを必要としない人もいます。(たぶん元ガールフレンドがいないんでしょう。あるいは代りにアイスピックを使ったのかも。) そうであればどんなハンマーでも作れるハンマーファクトリーを買うというのはあまり意味がありません」

「確かにそうだ」

「それで私たちは、代りにハンマーファクトリーの設計図を売り始めたんです。実際に必要な種類のハンマーだけを製造するカスタマイズされたハンマーファクトリーを、クライアントが構築できるようにするためです」

「当てようか? それはもう売ってないって言うんだろう?」

「まったく。確かにもう売ってません。わかったのは、2, 3本のハンマーを作るだけのために、ファクトリーをまるまる構築しようなんて誰も思わないということです。ファクトリー構築はファクトリー構築のプロにまかせときゃいいんだって、私は最初から言っていたんです」

「その点については同意するね」

「どうも。それで私たちは設計図を売るのをやめて、ハンマーファクトリー構築ファクトリーを売るようになったんです。それぞれのハンマーファクトリーファクトリーは、ハンマーファクトリーファクトリー業界で最高の専門家があなたのために構築してくれますから、あなたはファクトリー構築にかかわる詳細は全然気にかけなくていいんです。それでいてあなたは、自分のハンマーの設計に基づいたカスタムハンマーを作り出すカスタマイズされたハンマーファクトリーを手にするというメリットを享受できます」

「だけどそれはまったくのところ・・・」

「何をおっしゃりたいのかわかります! ・・・それに私たちはもう売らなくなりましたし。ある理由で、ハンマーファクトリーファクトリーを買う人というのはあまりいなかったんです。それで私たちはこの問題に対する新しいソリューションを考え出しました」

「へえ」

「ツールのインフラ全体を距離を置いて眺めてみて、ハンマーファクトリーファクトリーとそれが作り出すハンマーファクトリーを管理したり運営したりするのには、みんなうんざりしているということがわかりました。巻き尺ファクトリーファクトリーや鋸ファクトリーファクトリーや水平器ファクトリーファクトリーも同様に運営することを考えると、そういったオーバーヘッドは非常に煩わしいものになります。製材コングロマリット持ち株会社運営が面倒なのは言うまでもありません。そういう状況を見て、これは単にスパイスラックを作りたいだけの人には、あまりに複雑すぎると考えたのです」

「まったく」

「そこで私たちは、1つの統合されたファクトリーで様々なツールファクトリーファクトリーを製造できる汎用ツール構築ファクトリーファクトリーファクトリーを、今週披露したわけです。このファクトリーファクトリーファクトリーは、顧客が本当に必要とするツールファクトリーファクトリーだけを製造し、そしてそれらのファクトリーファクトリーは、顧客のカスタムツールの仕様に基づいた1つのファクトリーを製造するようになっています。このプロセスで最終的に作り出されるツールセットは、顧客のプロジェクトに理想的なものとなります。顧客はまさに必要としていたハンマーや、作業にまさにぴったりの巻き尺を、ボタン1つで作り出せるのです(すべての工程が期待通りに機能するようにするために、ちょっとした構成ファイルを配備する必要はありますが)」

「じゃあハンマーは置いてないんだね? 1つも?」

「置いてません。本当に上質で工業的品質のスパイスラックをほしいと思うなら、古くさい金物屋にあるような単純なハンマーよりも、もっと先進的なものが必要になるんです」

「そしてそれが今時みんなのやっているやり方だというわけだね? ハンマーが必要なときには、みんな汎用ツール構築ファクトリーファクトリーファクトリーを使ってるんだね?」

「そうです」

「そうか・・・わかった。どうすればいいかわかった気がする。それが最近のやり方なら、私もそのやり方を学んだ方が良さそうだ」

「がんばってください」

「それってドキュメントはあるんだよね?」


(オリジナル: Why I Hate Frameworks)

戻る

Personal tools