日々常々

ふつうのプログラマがあたりまえにしたいこと。

69.車輪の再発明の効用

ソースコードリーディングの帰り道、 @さんと @さんが「ソースコードライティング」とか言ってたので便乗してみました。

なんでもDIコンテナを作ってみるとか。私自身はDIコンテナって言葉は知っているものの、実際の業務で使った事は無ない状態です。DIコンテナと言うと既に有名どころが幾つもあるように、まさに車輪の再発明です。車輪の再発明は忌避されるものの、それの学習効果は多くの場所で語られるものですが、実際にやっているのを見たり、やってみたりすると、改めて「車輪の再発明の効用」を感じることが出来ました。


学習のための「車輪の再発明」で重要なのは、それが再発明であると認識している事だと思います。忌避されるべき車輪の再発明は、作ろうとしているものが車輪である事をわかっていない場合です。全く新しい車輪ではない何かではなく、車輪が既に存在するのに作る行為は馬鹿げていますし、プロならばするべきではありません。再発明だと理解していれば、その辺の道は違えないでしょう。
再発明の過程では実現すべき事をあらかた想像できます。使い方はわかりますし、実装方法もだいたい想像は付きます。なんだったらコードを開いてしまえば良いんです。それを実装する過程で様々な乗り越えるべき障害が存在し、車輪の偉大さを感じるようになります。参考にすべき車輪は多いに越した事はありません。異なる実装で実現しようとして、その道が行き止まりだったりする事もあります。避けようとしている実装に何故か寄って行ってしまう事もあります。このあたりを体験できるのは車輪の再発明ならではだと思います。


車輪の再発明を行うことで、何故車輪がそうなっているかの理解が深まります。車輪を上手く使えるようになるかもしれません。車輪を上手く使えないと再発明なんて出来ないのかもしれません。よく知るために再発明してみるのもありなのかもと思いました。

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

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