車輪の再発明は無駄 §
車輪の再発明は無駄です。既に存在するソースコードやリソースは再利用して素早く目的を目的を達成すべきです。そのためには、ソースコードを資産として囲い込むべきではありません。公開してシェアしましょう。それが人類の進歩のためです。
ちょっと待て、実装は発明なのか? §
「やはり車輪の再発明は無駄だね」
「ちょっとまて。実装は発明なのかい?」
「えっ? どういう意味?」
「コードを書くという行為は発明に相当するのかい?」
「えーと。どういう意味だい?」
「車輪という仕組みを着想する行為は1回あれば十分。それはその通り。でもね、車輪を製造するという行為は未来永劫必要とされる。車輪は大量に必要だし、様々な規格の車輪も必要とされるし規格外の車輪が必要とされることがある。しかも使っていれば壊れるから代わりが必要だ」
「つまり、アイデアは1回でいいけど、製造を繰り返す行為は無駄では無いわけだね」
「そうだ」
「ソースコードも同じってこと?」
「そうだね」
「でもさ。1回書いたソースはコピーすればいくらでも使えるだろう?」
「使えないよ」
「えっ? なんで?」
「想定された暗黙の前提(場合によっては明示的な前提)が違いすぎて、ソースコードそのままで動くことは非常に希。特に、言語が違った動くことはほとんどあり得ない」
「えー、じゃあソースコードを公開してシェアしたって無駄じゃないか」
「無駄だよ」
「はっきり言い切った!」
「しかもね。書き換えるためには理解が必要なんだ。そして、理解を深めるには書いてみるのがいちばん。逆にいえば、書いたことも無い人間がソースをいじったりしたら、かなり不安」
「正しい書き換えができているかわからないってことだね」
「結局書くしかない。同じアルゴリズムであろうともいくつもの実装が存在するのが自然な状態なんだし、実際に現実はそうなっている」
「そうか。現実はそうなっているから、ソースは1つだけあってシェアすれば良いというのは夢想なんだね?」
「そうさ。もしも無駄だらけのクソ実装を大事に抱え込んで全世界の全てのソフトで使用したりしたら、全世界レベルで大きな無駄を抱え込むことになるし、信頼に不安があれば全ソフトが同じ不安を抱え込むことになる」
「いろいろな実装がある方が健全ってことだね」
「そうさ。アルゴリズムの再発明に時間を使うのは無駄だが、実装を繰り返すことは無駄にならない。そもそも実装者の勉強になる。実装はどんどんやるべきだ」
オマケ §
「じゃあ、車輪の再発明は無駄という言葉に意味を間違って認識して実装をしなくなったらどうなるんだい?」
「書かなければ理解力が劣るようになり、コードがブラックボックス化して誰も理解できなくなる」
「強引に書き換えたらどうなるの?」
「生半可な理解で書き換えるとバグが増えるだけだろう」
「ひ~」
「というわけで科学の時代は終わり宗教に時代が戻ってくるわけだ。ソースコードはアンタッチャブルな神となり、人間の方がコードに合わせる時代が来るだろう」
「それは嫌だよ」
「おいらも嫌だよ。だけどそういう時代を欲している人もいるからね。注意は必要だよ」