title: 【開発】「車輪の再発明をするな」は非常に悪く、破壊的なアドバイス
uuid: 30252751-7591-4603-9566-bfe1438495e0
author: 諏訪子
date: 2025-04-15 13:39:22
thumbnail: cwheel.jpg
thumborient: center
category: programming,rant
----
ソフトウェア開発の分野、特にウェブ開発では、「車輪の再発明をするな」という
アドバイスをよく耳にします。\
短期的な目的はタスクを終わらせ、詰り早くお金を稼ぐ事です。\
然し、長期的にはこのアドバイスは非常に破壊的です。
## 何故「車輪の再発明をするな」が破壊的なのか?
最大の理由は、この考え方が開発者にコードの基盤や実行されているシステム、
更には高レベルのコードに無関心である事を助長するからです。\
その結果、プロジェクトが壊れた時にどうやって修正すれば良いかわからず、
車輪を発明した人に修正して貰える事を願うしかありません。\
それも、その人が未だ気にかけてくれていればの話です。
あたしが10年以上前から警告してきたもう一つの問題は、今日益々明らかになっている
サプライチェーン攻撃の危険性です。\
これは、攻撃者が貴方のソースコードを知らなくてもプロジェクトを破壊出来るという物です。\
何故なら、ウェブ開発、モバイル開発、デスクトップ開発で使用している依存関係の全てが
オープンソースであり、プロジェクトの残りの5%のコードは恐らくStackOverflow、Qiita、
又はChatGPTからコピーされた物だからです。
「車輪の再発明をするな」というメンタリティは、自信を失わせる物でもあります。\
この考え方は心理的に貴方を抑え込み、知識やスキルの成長を妨げ、
全体的に悪いプログラマーにしてしまいます。\
何故なら、「誰か自分より優れた人が既に作っている」
「自分には他の人と同じ位良くは作れない」と常に考えてしまうからです。
## 自己尊重が重要
これは日本の文化では議論を呼ぶ意見で、どちらかというと西洋的な考え方とされますが、
優れたプログラマーになる秘訣は自己尊重を持ち、自分の仕事に誇りを持つ事です。\
これはプログラミングだけでなく、デジタルアート、デザイン、音楽、スポーツ、工学、
文学等、スキルに関わる全ての事に当てはまります。\
国や文化に関係なく、快適なゾーンから出て自分の仕事に誇りを持つか、
快適なゾーンに留まり何も考えずに他人に頼るかの選択が常にあります。
あたしが最近公開出来る例として挙げられるのは、
[あたしのPHPライブラリのコレクション](https://code.076.moe/web/LittleBeast/trunk/src/Site/Lib)
です。\
各ライブラリには既に利用可能な依存関係や、php-curlやphp-mysqliといったPHP拡張、
又は非常に大げさに言えば、PHP拡張の為のOOPレイヤーに過ぎない依存関係が存在します。\
それでもあたしは全てをゼロから作り、
その過程でそれぞれがどの様に動いているかを深く学びました。
「難しいからやらない」という言い訳はしないで下さい。\
あたしは今、Nintendo Switch SDKやそのツール、NVN API、
そしてNDA下で言及出来ないかもしん他の事を学んでいます。\
オンラインコミュニティも、ドキュメントも、AIも頼れませんが、
それでも毎日新しい事を学び、外部の助けなしにゲームの進捗を進めています。
## どうやってやるのか?
これを達成する為に必要なのは、今直ぐちゃんとやると決める事です。\
そう、プログラミングを学ぶ為に必要なのは、それをやるだけです。\
これは現代のコーダーには信じられない事かもしんが、ベテランプログラマーには常識です。\
それをあたしが教える必要があるなんて、本当に残念です。
先週末、あたしはモデルベースの衝突検出を機能させるのに苦労していました。\
それから基本的な形状を見て、問題はステージ全体を
単一のモデルにしていた事だと気づきました。\
コンポーネントごとに分離していれば、衝突計算がずっと簡単だったはずです。\
例えば、PCやモニター、猫タワーがある部屋の3Dモデルがある場合、床、壁、デスク、
猫タワーにボックスコライダーを設定するだけで良いいいのです。\
デスク上の各アイテムに対してAABB衝突を計算する必要はありません、
だってそこを歩くことはないのですから。\
天井も同様で、衝突を設定する必要はありません、
だってそこに衝突する予定はないのですから。\
もしこれら全てを単一のモデルにすると、部屋全体にAABB衝突を適用してしまい、
プレイヤーキャラクターが天井の上に立って、床に降りられない状態になってしまいます。
以上