プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

車輪の再発明って、良くないことなの!?

大切なことは、車輪の再発明をするかどうかの見極めを慎重にすること。

いくつか講演やワークショップをのぞけば今のトレンドが分かります。様々なグループが「車輪の再発明」をしていました。そこで議論になるのは、やはりその良し悪しでしょう。

車輪の再発明 | POSTD

プログラミング界隈でよく見るこの言葉。まずは言葉の定義から見てみましょうか。

車輪の再発明(しゃりんのさいはつめい、英: reinventing the wheel)は、車輪を題材にした慣用句であり、世界中で使われている。「広く受け入れられ確立されている技術や解決法を知らずに(または意図的に無視して)、同様のものを再び一から作ること」を意味する。

車輪の再発明 - Wikipedia

例によって曖昧な定義だ。この「意図的に無視して」がポイントだと思うんだな。

ソフトウェア開発してると、よくあるよね

ある機能を実現したい時に「このライブラリ/フレームワークを使えば実現できそう」ってこと。でも実際に初めてみると、いろいろと手直しが必要だったり、仕様の差異を吸収するためwrapperの嵐になったり。はてはhack codeを埋め込むことになったり、だったり。

「既存技術」を利用することに意味がある場合ならともかく、効率化のために導入するつもりだったのに、かえって苦労をしょいこんでしまったんじゃ本末転倒だ。

個人的には車輪の再発明大好き。もっとやれ :)

なんだけど、いつも再発明してるわけじゃない。

ぼくが車輪の再発明を好きなのは、その技術を深く理解することが出来るから。実際に実装して実行してみると、概要やAPIの使い方からは見えなかったことが見えてくる。それが嬉しい。

とはいえ、業務でそんなことばかりしてると会社に肩たたきされてしまうので(笑)既存技術が使えるかどうかを考えます。大切なことは、この車輪の再発明をするかどうかの見極めなんだと思う。

いくら厳密に設計したって、実装してみたらいろんなことがある。だから、既存技術が使えるかどうかの見極めは慎重にすべきだ。APIが概要を眺めて採用を決定することって危ないと思わない!?

つまり

ソフトウェアに関しては、車輪の再発明の良し悪しじゃなく、もっと柔軟に考えるべきだ。再発明することが妥当な時だってある。優秀なエンジニアは、そのあたりの見極めがとても上手だと感じる。

私?苦労してるに決まってるじゃないですか^^;