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

2020/07/24 2020/07/24 #プログラマが知るべき97のこと #車輪の再発明

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

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

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

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

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

もしあるとすれば、

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

などでしょうか?

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

Don't Repeat Yourself

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

最後に

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

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

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

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

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

その時はよしなに。

.

Non

所属 : 株式会社スマレジ 開発部

Twitter : @nonz250

Github : nonz250

Qiita : @nonz250

My Qiita posts My Qiita contributions My Qiita followers

主にPHPを使用し、サーバーサイドを担当。最近はフロントにも興味津々。

なにかを作ったりいじったりするのが好きで、個人開発なども行っている。

趣味はバイクアイコン画像は大抵愛車の「Z250」である。友達にアイコン描いてもらえて嬉しい。

PHP / Laravel / CakePHP2 / CakePHP3 / Vue / Nuxt / C# / etc...

Tags

#non's Labo #Laravel #Vue #個人開発 #ブログ #プログラミング #javascript #Html5 #WEBサービス #Twitter #今年の抱負メーカー #勉強方法 #PWA #モバイルアプリ #Android #ツーリング #バイクに乗るエンジニア #Z250 #秋吉台 #能登半島 #バイク #冒険 #東尋坊 #Squid #リバースプロキシ #hosts #axios #cropper #AdSense #Bootstrap #MySQL #高速化 #トドTask #Telescope #デバッグ #composer #テスト #セキュリティ #POSレジ #スマレジ #本部機能 #バリデーション #入力チェック #Mac #Chrome #テスト駆動開発 #開発手法 #UI #デザイン #WEBサイト #機能美 #PHP #Laravel 6 #コメント #バージョンアップ #vue-cli #localhost #BIツール #売上分析 #TANAX #MFK250 #ツアーシェルケース2 #RESTful #API #REST API #実務的 #PHP Tech Tutor #Smaregi Tech Talk #勉強会 # ブログ #CakePHP3 #CSRF #VSCode #開発環境 #CakePHP3.0 #さくらのレンタルサーバー #モジュールモード #シェル #メール #Gmail #relay #OGP #エラーページ #抱負 #家庭教師 #ドメイン駆動設計 #DDD #読書会 #那智の滝 #伊勢志摩 #伊勢志摩スカイライン #フロント #三方五湖 #レインボーライン #ボーイスカウト・ルール #プログラマが知るべき97のこと #リファクタリング #ユビキタス言語 #車輪の再発明 #マイクロサービス #デプロイ #QA #laravel-mix #Tips #storybook #@storybook/addon-actions #昇降デスク #コードレス #書斎 #オフィス #リモートワーク #働き方 #エラーハンドリング #スマレジ4 #pixel 5 #レビュー