車輪の再発明
(車輪の再発明とは違う意味で使っている、存在する言葉かはわからない)
車輪の再発明:車輪を知らずに、自分で新しく車輪を考え出す 車輪の再実装:車を作る上で、市販の車輪を買ってこないで自力で車輪を作るみたいな? この「車輪の再発明」という言葉は世の中の使い方より狭い意味で使っているが、それは世の中の言葉の使い方がボンヤリしてるだけなので、キチンと区別することは良いことだと思った。もっと細かく分けてみる。
A: 既存の解決方法を知らずに、同じ解決方法を発明してしまう
B: 既存の解決方法は知っていて、入手可能な既存の実装があることを知らずに実装してしまう
C: 入手可能な既存の実装があることを知っていて、あえて実装する
C1: 知識の獲得や作る楽しさを目的としたもの
C2: 既存の実装に不満があり、改善することを目的としたもの
この件に関する意見
https://gyazo.com/c0f742e433c4c67ccb1eef38d2daa8e5
2020年度PMからのメッセージ
筋の良い「車輪の再発明」は大歓迎です。車輪の再発明とは、既存のライブラリや先行事例があるにもかかわらず、似たようなプログラムを自分で一から作ってしまう行為のことです。現代は効率良くプログラミングできる開発ツールやライブラリが豊富にあり、複数の要素を組み合わせてインテグレートするだけで目的のアプリケーションを少ない工数で作ることができるようになりました。既に誰かが同じようなことを実現するライブラリが存在するのに、それを自分で一から作ってしまうと生産性が良くないと外野から指摘されることがあります。しかし、それで本当に新しいイノベーションや技術革新は生まれるでしょうか。むしろ、今の時代こそ、アプリケーション層のプログラムを実装する際にも、低レイヤーの技術にも精通し、下から上まで一気通貫でモノを作れる技術を有して手を動かしていることの方が競争優位性になり得ます。物事の原理原則を理解した上で型を上手に破り、自分の新しい型を作る、そんな試行錯誤の中で新しい技術革新が生まれることがあります。学習目的のために車輪の再発明をすることもありますが、未踏ではそれ以上の価値が求められます。成功するまで継続するために、自分で一からコードを書くのが大好きで、プログラミングそのものに熱中できる情熱も重要です。その結果、世界に新しい価値を一つでも提供することができれば、胸を張って未踏の領域に踏み込めたと言えるでしょう。車輪の再発明でも大歓迎、実装が大変でも自分が情熱を持って続けられる、内発的動機に基づいた提案をお待ちしております。
これは世の中に「車輪の再発明」を否定する空気があることに対して、むしろCは競争優位性をもたらすとの主張
それに加えて「未踏ではC1に留まらずC2を目指すことが必要」と言ってる 2009-12-30
自分は「車輪という"アーキテクチャ"の再発明はする必要が無いが、車輪という"物体それ自体"は自分で創る必要がある場合も多い」という意見
Aは必要ないがCは必要な時もある、という意見
「車輪の再発明」で無駄に頭を悩ませる必要はないですが、寧ろ「車輪の再実装」は非常に重要だと考えています。
ただ、「車輪の再実装」は習作でしかないことも多く、習作は習作だということです。
書道でお手本を見ながら字を書くのに似ています。
お手本があるとき「新しい字」を考える必要はないですが、「既存の字」を見てそれがなぜそうなのか考える感じです。
Aは必要ないがCは有用、ただしC1で作られたものは習作に過ぎない、という意見
再実装した車輪を使わない方がよい理由
テストや検証の量が全然違う
車輪の再実装をする本当のコストっていうのは、車輪を実装する分のコストだけじゃなくて、テストや検証を既存の車輪と同じくらい充実させるコストも含んでるという訳。
C2を目的とする時、しばしばテストや検証のコストを見落としがち
その結果、既存のものより良いものを作ったつもりでも信頼性の欠けたものになっている
だから使わない方が良い、という主張
「車輪の再発明はするな」は、経営者の言葉で、言い換えると「金にならないことはするな」。
逆に技術者目線では、「車輪の再発明」こそが技術力の向上に繋がるから、積極的に再発明しろと思っている。
再発明した上で、実用上は既存のより優れた車輪を使えば良い。
C1は金銭的利益につながりにくいので経営者は反対しがち、一方で技術者はC1をやって知識獲得をした上で、実用上はそれを使わないのが正しい、という意見