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