プリンシプルプログラミング プログラミング

【POP100】車輪の再発明

はじめに

この記事は「プリンシプルオブプログラミング 3年目までに身につけたい一生役立つ101の原理原則」を読んだ際に記した議事録です。

著作権の関係により、詳細には書きません。詳しい詳細を知りたい方はぜひ本書を読んでみてください。

プリンシプルオブプログラミングをPOPと訳します。

What : すでにあるものを作る

ある機能を実現したいとき、すでにそれを実現しているコードやライブラリを使わず、自分で改めて同じものを作ることがあります。これは時間がもったいないです。すでに世の中にある「車輪」をわざわざ発明してしまうような無駄な作業です。

しかもたいていの場合、自分で作らずに外部のものを利用した方が品質はいいし、時間もかかりません。なぜならその標準となっているライブラリを作った専門家の知識と、今まで使ってきた人の経験が反映されたものだからです。

そしてさらにいいことにライブラリはどんどんアップデートされていきますので、障害やパフォーマンスを勝手に良い方向に変えてくれるというメリットがあります。

Why : 「車輪を知らない」「車輪を作りたい」

車輪を発明してしまうパターンは以下の2パターンあります。

車輪を知らない

車輪を知らなかったことにより再発明してしまうパターンです。意図しないパターンです。

しかし、「知らなかった」で済ませていては成長がありません。再発明をしてしまうことは己の勉強不足、知識不足です。例えば、スライドショーなどです。様々な優秀なライブラリがあるにも関わらず、知らずに0から作ってしまうのはたいへん損です。自分が成し遂げたい機能はしっかりと調べて再発明しないようにしましょう。

車輪を作りたい

あると知っていながらも「車輪を作りたい」というプログラマの欲求によるものです。つまり確信犯です。笑

どうしても自分の知識を試してみたかったり、アピールしたかったりと動機は様々ですが「ここで発明されたものじゃない(NIT : Not Invented Here)」と呼ばれています。

How : 「車輪以外」に注力する

車輪の再発明は避けて本来やるべき作業に注力しましょう。

ソフトウェアの品質向上、ユーザーへのヒアリングなどより良い、より使われるものを作るために時間と労力を使います。そのために気をつけないといけないことは「コードを書く前に同じ機能の標準ライブラリがないか」を調べることです。他にもチームメンバーのプログラマに聞いたりして「知らなかった」を極力避けるようにしましょう。

NIT精神(自分で作りたい欲)は捨て去りましょう。時間は限りあるものですし、プログラマにはやらないといけないことがたくさんあるため、とても貴重です。そのことを自覚して、限りあるリソースを有効に使えるように尽くしましょう。

例外 : 車輪を再発明すべきとき

・ビジネス上の目的

ビジネス上、その箇所が「核」となるとき、再発明すべきです。なぜならライブラリや外部のコードは何かに依存していたり、抽象的であったりするため、自分がやりたいことを100%やってくれるとは限らないからです。また外部のライブラリを使うということはソフトウェアの差別化を諦めるということです。ソフトウェアを用いてビジネスをする上でコアとなる部分であればライブラリを使わず実現した方が障害にも柔軟に対応できますし、独自性も生まれます。

・学習目的

優れたプログラマになるためには様々な、質の高い経験を積む必要があります。「ソフトウェアのパターン」「設計」「言語」などプログラミングに関する良書はありますが、読むのと実際に手を動かしてやるのとではかなり隔たりがあります。

そして同様に、ライブラリを使うのと自分で0から作るのとでは得られる経験値が全く違います。多くのプログラマはライブラリを「使う側」になります。ですので裏側で何が起きているのかがわからず、表面的な部分しか理解できていないことがほとんどです。

しっかりと原理、危険性を理解して使いこすために0から作ることはとても効果的です。

ちなみに私もこのPOPをブログにまとめているのは「学習目的」です。ネットで探せばPOPの記事はいくらでもあります。ですので私は「みんなに見てもらう」ためではなく、自分の経験を絡めながら自分の言葉で解説していくことにより、POPを落としこむことが一番の目的です。

終わりに

この記事ではプリンシプルオブプログラミング 3年目までに身につけたい一生役立つ101の原理原則の議事録を自分用に記しています。

この記事ではカバーしきれていない部分も多いので、是非本書を手にとって読んでみてください。

次回、「【POP101】ヤクの毛刈り」です。ぜひ、次の記事も読んでみてください。

  • この記事を書いた人
  • 最新記事

ミッチー

小中高と野球漬けの毎日 ▶︎ 大学時に自分が何もできないことに気づき、プログラミング学習開始 ▶︎ PCは疎かったがめげずに継続 ▶︎ 受託で案件を頂きながら、オーダースーツ事業に、通販事業にも参戦 ▶︎ 東証一部Web系自社開発企業にエンジニアとして内定。

-プリンシプルプログラミング, プログラミング

© 2022 オミチャンネル Powered by AFFINGER5