69-車輪の再発明の効用

プログラマが知るべき97のこと」の69個目のエピソードは、車輪の再発明に関する話です。プログラミングにおける「車輪の再発明」とは、既に作られたフレームワークやライブラリがあるのにも関わらず、コストをかけて開発する事を指します。このような「車輪の再発明」をする事は、一般的にはネガティブな意味合いで使われます。つまり、「車輪の再発明をしない方が良い」というニュアンスです。十分にテストされ使えるものがあれば、既に存在するものを作るのは無駄であると考えるのは自然な事です。状況によっては、既存の「車輪」に不満があるため新しい車輪を作る、十分にテストされていない為にリスクを避ける意味で作る、必要な機能が足りないため作る、利用したい言語では実装されていないために作る、といったケースもあります。しかし、そうでないのであれば「車輪の再発明」を仕事としてのプログラミングですることはほとんどないでしょう。
ですが、「車輪の再発明」をあえて行う事はプログラマにとっては無駄どころか非常に有用な事です。優れたプログラマになる為には様々な経験が必要です。その為に、書籍を読んだりと様々な学習をする必要がありますが、最も重要なことはコードを書くことです。経験が浅い時は書籍を読みひたすらコードを写経をすることで十分な学習効果があります。それではある程度の基礎ができたプログラマはどのようにしてスキルをあげるのでしょうか?その1つの回答は「車輪の再発明」だと思います。
車輪の再発明」と「全く新しい事の発明」とを比べると「車輪の再発明」の方が簡単です。元になる「車輪」もそのソースコードも手に入るのであれば、それが何を目的としたライブラリであり、どのように実装されているかが理解しやすくなります。可能であれば自分なりの解釈をし、実装を変えたり、なんらかの工夫をすると「少しだけ良い車輪」が出来るかもしれません。単にソースコードを読み似たような実装を書くだけでも勉強になるでしょう。あまりにも難しく巨大な「車輪」を選択せず興味のあるちょっとしたライブラリを再発明することは、ある程度の基礎が出来たプログラマにとって非常に有効な学習です。業界にとっては貢献できないかもしれませんが、自分には大きなプラスになります。しかし、恐らくは自分の「車輪」は完成できません。「車輪」を「製品(プロダクト)」にするにはコーディング以外に非常に多くのスキルが必要なのです。それが、車輪を再発明することで学べるもう1つの効用です。

プログラマが知るべき97のこと

プログラマが知るべき97のこと