のんラボ

車輪の再発明は悪なのか?

2020/07/24 2020/07/24 車輪の再発明は悪なのか?

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

こんにちは。Nonです。本日はプログラマが知るべき97のことを読んでいてこれ「いいな」と思った箇所について書いてみようと思います。

こちらの書籍はとても有名なので、既読の方もいらっしゃるかもしれません。
そういう方は復習というか、内容を思い出したり、私の意見と違うところや共感できるところを探していただければ幸いです。

プログラミング業界では車輪の再発明は悪と見られがち?

一度作成されたコードを再作成することはしばしば嫌がられる傾向にあるのがプログラミング業界です。例えば、Bootstrapを導入しているプロダクトでモーダルを表示する処理を自作する意味はあまりないでしょう。

もしあるとすれば、

  • Bootstrap依存(jQuery依存)をしたくない
  • すでにある機能のテストを再度したくない

などでしょうか?

もちろん、その中にはDry原則もあるでしょうが、Dry原則とはそもそも

Don't Repeat Yourself

なので、自分自身のコードの中で同じような処理を作成することはアンチパターンだよってことを示していると思います。


あとはOSSにあるツールなどを知っているパターンでしょうか。

OSSに実装したい機能とほぼ同じものがある場合、そちらを利用したほうが遥かに効率がいいからです。

では車輪の再発明にメリットがあるときはどのようなとき?

しかし、実は私は車輪発明は大好きです。何故かというと車輪の再発明はとても勉強になるからです。

車輪の再発明で得られるものは多いです。

たとえば、モーダルを表示するために必要な技術は何か?表示するときにアニメーションを入れるにはどうすれば良いのか?このようなことを勉強するにはうってつけです。

更にその機能の構造や動きを理解することで、その機能を利用するときに気をつけるべきことやどのように利用すれば気持ちよく動作するかがわかります。

独自フレームワークは嫌われやすい

似たような話に独自フレームワークがあります。

今大抵のプログラミング言語にはフレームワークがあります。

黎明期の頃はフレームワークが充実していなかったので独自フレームワークを作成することがはやっていましたが、今では特殊な案件以外ではありえません。

しかし、独自フレームワークを作った人はフレームワークの構造を理解しています。

例えばWEB用のフレームワークを作成した人はリクエストとレスポンスを捌く部分についてよく知っているので、どう捌けば良いのか、どのように作れば良いのかを(作ったことがない人より)知っていることでしょう。

もしかしたら、独自フレームワークを作ったことがある人こそ、人気のフレームワークの便利さを一番理解しているのかもしれません。

最後に

実際のプロジェクトで何も考えずにパッケージが導入されていることはよくありますし、用途が重複したパッケージが導入されているものも見たことがあります。

これは、パッケージの特性を理解しないまま「ただできるから」、それだけの理由で導入したのでしょう。

そういうことが無いように、すでにできている車輪を使うだけでなく、その構造と使用方法を理解した上で使えるようになりたいですね。そしてそのためには車輪を自分でも作れる必要があるのではないでしょうか?

ここまで書いておいてなんですが、私個人の意見です。

次回もプログラマが知るべき97のことを読んで記事にしようかなと思っています。

その時はよしなに。

.