きしだのはてな このページをアンテナに追加 RSSフィード

2007-09-10(月)

車輪の再発明をするな」の流行は孔明の罠 03:54 「車輪の再発明をするな」の流行は孔明の罠を含むブックマーク

なんかの実装がオープンソースで公開されているときに、同じ機能の実装を行うのは「車輪の再発明」で無駄な行為だといわれた時期がありました。

でも、それは「再発明」ではなく「再実装」であって、とても大切な行為です。

車輪にしたって、ブリヂストン横浜ゴムもタイヤの開発をいまもって続けてるわけです。タイヤだけでなく、ホイールからベアリングからドライブシャフトから、「車輪」の部品については、いまだにいろいろな会社が切磋琢磨して再実装を続けているのです。


世の中に出ているライブラリを自分で実装してみるとわかることは、自分の実装を持っているという強さです。

たとえ世の中のライブラリに機能的に性能的に負けていたとしても、自分の実装というのは自分のニーズに合わせるという点でとてもいい。特に、処理の途中の値を使えるというのがいいのです。ライブラリでは、入力したら出力が返ってくるまで中身が見れないですからね。


それよりなにより、自分の実装を持つと、「次」が見えてきます。その実装を行うことによる視点。

結局のところ、自分で実装してないときには万能に見えるアルゴリズムも、自分で実装してみれば欠点がたくさんあることに気づきます。そこで、自分で実装していれば、その欠点との折り合いのつけ方、用途が決まったときに機能を限定することでの欠点の解消、別のアルゴリズムの開発へのモチベーションと、「次」へ続いていきます。

車輪の再実装は、むしろやるべきなのです。


車輪の再発明はするな」という言葉で車輪の再実装を阻む行為は、「車輪を実装した」という経験をもたせないようにして、先行者利益を確保するという、孔明の罠なのです。

yamamotoyamamoto 2007/09/11 05:57 「しかし車輪の仕組の解説を読むというのは、自分で作った車輪を乗り回す経験には遠く及ばない。」という名言を思い出しました。大切ですね。

artonarton 2007/09/11 07:56 いや、策としてはせいぜい陳宮の罠程度だと思う。曹操はそんな罠は軽々と突破する。

nowokaynowokay 2007/09/11 09:10 そんな罠はかるがると突破できる、曹操になりましょう!と。

artonarton 2007/09/11 10:02 なりたいね〜。曹操かっこいい。

ふじたふじた 2007/09/11 14:18 そんなこんなでこないだ今さらC#でPOP3の実装を書くはめになった。久しぶりにRETRとか書いて、Socket待ち受けでハマったりとか、就職したての頃と同じようなことをやりなおしてバカみたいって思った。

通りすがり通りすがり 2007/09/11 23:13 概ね同感。
タダ、ありがちな課題
「ソートを考えろ」は無駄な行為な気はする。

syotaro_yoshidasyotaro_yoshida 2007/09/12 09:00 世の中に出回っている車輪の中には高度なものも含まれているので、自分がその水準に達するまでは、やはり何度も再実装する必要があると思います。技術って言うのはつみ重ねだけど、自分のものにするためには実践する必要があります。
「ソートアルゴリズム」を考えるのは、無駄じゃないと思いますが、クイックソートなんて考えられないですね。