LoginSignup
20
5

More than 5 years have passed since last update.

「車輪の再発明」は、自作、再実装、模倣、改善を否定する言葉ではないぞ!から始まるプログラミング学習法

Posted at

「車輪の再発明」"Reinventing the wheel"
すでに広く知られたアイデアを、その存在を知らずに改めて考案すること

今回の主題

  • 「発明」と「生産、実装、作成」など混同されがちな言葉をはっきりしておく
  • 「車輪の再発明」が推奨される状況を書く

車輪の再発明

「『車輪の再発明』は良くない」という言い回しをプログラマはよく使います。
この言い回しは頻繁に誤って使われる(あるいは意味が本来とは変わっている)ものです。

"Reinvent"あるいは「再発明」の対象は「アイデア」「方法」であって「実装物」ではない

すでに存在するものを使わずに、自分で実装することを「車輪の再発明」と呼ぶ人がいます。
これは本来の意味からすると、誤っています。

"invent":「発明」の意味

発明は、新しい「アイデア」「問題解決法」を生み出すことです。
それゆえ「車輪の再発明」という言葉において「アイデアがどのように実装されるか」はスコープ外です。

冷静になって考えればわかることですが、今の世の中車輪を作っている人はたくさんいます。
(比喩でなく、自動車業界や鉄道業界を指しています)
その人たちが車輪を再発明しているかといえば、Noです。
彼らはすでに発明された「車輪」という概念を形にしています。
それは否定されることではありません。

ではどのような状況で「車輪の再発明」と言われるべきか

「パフォーマンスを発揮するべき状況」で「すでに存在する解決方法を調べず」に「解決方法を生み出そうとする」とき。
つまり「車輪の再発明」は、ネットスラングで言うならggrksの範疇に収まります。

すでに存在するソフトウェアを自作するか否かについて

すでに存在するソフトウェアを使うか否かは、そのソフトウェアの信頼とかパフォーマンスとか状況とかいろいろ考慮して、自作するかきめればよい、というただそれだけの話です。

「車輪の再発明」あるいは「車輪の自作」「車輪の再実装」が推奨される状況

先程車輪の再発明について「パフォーマンスを発揮するべき状況」という注釈をつけました。
今日見たTED talksに、How to get better at the things you care aboutというものがありまして、効率よく何かをできる人は初学者を抜けた後も「学ぶ時間」と「パフォーマンスを発揮するべき時間」を意識的に分けて考えている、というものです。

「学ぶ時間」という文脈では、「車輪の再発明、自作、再実装、模倣、改善など」は推奨されるべきです。

学びとしての模倣について

学ぶの語源は真似することとか、軽くググっただけで出てくる模倣することの意義を語る記事たち。

https://cybozushiki.cybozu.co.jp/articles/m000319.html
https://wirelesswire.jp/2018/06/65757/

言語(自然音声言語)学習には、Silent Periodなる概念があります。
最初のうちはひたすらインプットして、自分から発話することは難しい時期がある、というものです。

個人的な感覚になりますが、プログラミングにもSilent Periodに近いものがあって、インプットがある程度進まないとオリジナルのコードを書くのは難しいのではないかな、と思っています。
それで、Silent Periodのインプット方法に最適なのが模写と。
慣れてきたら、既存のアイデアの再現(再実装)あるいは改善。

学びとしての「車輪の再発明」について

新しい問題解決方法を発明するのは、訓練がいるので「学びの時間」の中なら自分で既存の概念を再発明するのはありだと思います。

まとめ

「車輪の再発明」という言葉は正しく使おう。
初心者のうちは模写しよう。

20
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
5