Entries

スポンサーサイト

カテゴリ:スポンサー広告
更新日:--------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

「車輪を再発明」ってIT業界用語じゃなくて、ただの慣用句?なんで、IT業界でよく言われるのだろう?

カテゴリ:システム考
タグ: 車輪の再発明   
更新日:2013-05-08
> 車輪を再発明しよう - モジログ

ふと気になったこの記事。検索してみると、「車輪の再発明」を推奨する記事がいくつか見つかる。

> 車輪の再発明を推奨してみる - 地方からの戯言
> もっと車輪の再発明をしよう - ビスケットのあれこれ

「車輪の再発明」って、あんまりいい意味で使われる言葉じゃないんで、言葉の意味通りに使おうとすると自虐か、他人を馬鹿にする行為になるんで見つかりにくいのかもしれない。

推奨する理由は、主に学習効果のようだ。これは、私も同意。

> 車輪を再発明しよう - モジログ

私の考えでは、むしろ「車輪を再発明しよう」というスタンスを基本にしたほうがいいように思う。既存の車輪があるかないかは気にせずに、まずはあるていど自分で作ってみる、というのを基本にするのだ。あるていど作ってみて、「これは自分の手に負えない」と思い、挫折したら、そこで既存の「車輪」を探すようにする。こうすれば、既存の「車輪」を使うにしても、それがいかによくできているか、より深く理解できる。


このブログのフッターで自作のWebアプリを紹介している。まぁ、今は全く更新できてないんだけど、これは作ってみて、いろいろと課題が明確になってきたため。主にはWebアプリの内部構造の問題とアプリの目的の問題がある。

作ってみないとわからないことってあるんだよね。まぁ、私がトロいだけかもしれないと思うこともあるけど、アジャイルにしたって、デザイン思考にしたって、プロトタイプを作って見ることは推奨しているわけで、程度の差こそあれ、想像力には限界がある。

内部構造については、backbone.jsの導入でようやっと一段落ついたと判断しているんで、そろそろアプリの再設計もしたいんだけど、このbackbone.jsにしても、自分で同じようなものを書いてきていて、その限界が見えてきた所で探したから、「これでイケる」という直感も働く。そうでなきゃ、何を探していいかさえ、判然としなかっただろう。

> 車輪の再発明 - ウィキペディア

主にIT業界、とくにSEやプログラマの間で良く用いられる。


こうなってくると、そもそも何でIT業界でよく使われる言葉なのか、という方が気になってきた。

いくつか言葉通りで使っている記事を読んだ感じでは、「作ったものより、もっといいものが見つかってガックリ」という感じ。

でも、これは「学習効果」の問題に含まれると思う。もっといいものが見つかったのは作ってみたから、じゃないのかな?

表現が大袈裟すぎるための誤解という考えもあるようだ。

> もっと車輪の再発明をしよう - ビスケットのあれこれ

僕はソフトウェアでは車輪に匹敵するくらいのすごい発明にはまだ至っていないと思っている.まだ車輪の一歩か二歩くらい手前のレベルだ.乗り物にとって車輪はかけがえのないものだけれど,そういうソフトウェアはまだない.雨後の筍状態.こんなときはみんなでマイ車輪を作るべきなんだ.


車輪なんてまだね~よ派、かな。

例えば、データベース。昔は、階層型とか、ネットワーク型とか、カード型なんていろんな種類があった。それが、いつの頃からかリレーショナル型に集約してきて、もうデータベースといえばRDB(SQL)といってもいい状態だった。ところが、最近はNoSQLなんて言われて、また新しいデータベースへの模索が始まっている。

環境が変われば、必要とされる技術も変わるってことだよね。そして、コンピュータを取り巻く環境は、未だに変わり続けている。

生物が車輪を取得しなかった理由には、いろいろ考えられるんだけど、「車輪は慣性力を利用せずに乗り越えることが可能な段差が、一般的に車輪直径の 1/3 以下」というのがある。つまり、舗装された道路という環境があってこその車輪というわけだ。

コンピュータを取り巻く環境が変化する限り、車輪は現れないのかもしれない。

> Twitter / ransui: 「車輪の再発明」だって?どの口が軽々しくこの言葉を使うのだろ ...

「再発明」という表現が誤解のもとじゃないのか、という人もいる。再発明なんて言いすぎだ派?

> 「車輪の再発明をするな」の流行は孔明の罠 - きしだのはてな

でも、それは「再発明」ではなく「再実装」であって、とても大切な行為です。
車輪にしたって、ブリヂストンも横浜ゴムもタイヤの開発をいまもって続けてるわけです。タイヤだけでなく、ホイールからベアリングからドライブシャフトから、「車輪」の部品については、いまだにいろいろな会社が切磋琢磨して再実装を続けているのです。


そうなんだよね。「車輪」なんて、今でも毎日生産されているわけだ。でも、それを「再発明」とは言わない。

「車輪の再発明」という言葉が、IT業界でよく使われるのは、設計と実装に差がないというソフトウェアの特徴のためか?

とはいえ「再実装」と言い直しても、それは避けたほうがいいと考えられている。

> 車輪の再実装をしない方がよい理由 - 文殊堂

車輪を再実装しない方がよいというか、
再実装した車輪を使わない方がよい理由だけど、
テストや検証の量が全然違うからというのが一番大きいと思う。


ソフトウェアにおいて「枯れた技術」というのは、今まで使われてきた「コード」ということなんだよね。バグが無いソフトウェアはない。でも、使われ続けてきたコードにはバグが少ない(と考えられている)。

だからこそ、ソフトウェアにおいては「再利用」が推奨されてきた。その上での「車輪の再発明」という話なんだろう。

ところがねぇ。「再利用」ってのも、難しい課題なんだよ。

> いい加減「車輪の再発明」の暗喩を使うのはどうかと思うが。 - ぐらめぬ・ぜぷつぇんのはてダ
「ソフトウェア開発55の真実と10のウソ」ロバート・L・グラス, 日経BP社, 目次より
再利用

  • 真実15 : 小規模な再利用(例えば、ライブラリやサブルーチン)は、50年前に始まり、既に解決済みの問題である。
  • 真実16 : 大規模な再利用(コンポーネント単位)は、誰もがその重要性を認識し、なくてはならないと感じているが、今なお未解決である。
  • 真実17 : 大規模な再利用は、類似システム間でうまくいく可能性が高い。応用分野の類似性に依存する為、大規模流用の適用範囲は狭くなる。
  • 真実18 : 再利用には、二つの「3の法則」がある。(a) 再利用可能なコンポーネントを作るのは、単一のプログラムで使うモジュールを開発する場合に比べ、3倍難しい。(b) 再利用可能なコンポーネントは、ライブラリに取り込む前に、3つの異なるプログラムでテストする必要がある。
  • 真実19 : プログラムを再利用する場合、流用母体の変更は、バグの原因になる。20 - 25%も変更する必要があるなら、最初から作った方が、効率が上がるし、品質もよい。
  • 真実20 : デザインパターン方式の再利用は、ソースコードの再利用における問題を解決する一手段である。

真実15 - 20だけでお腹一杯。ちなみに真実20の「デザインパターン方式の再利用」は、これこそが「車輪の再利用」だと睨んでいる。誰か他の人が考えた優れた設計技法(=「車輪というアーキテクチャ」)をお知恵拝借、と物まねさせてもらうわけだから。MVCパターンというアーキテクチャは誰もが真似るが、その実装であるフレームワークライブラリは十人十色になって当然。大体、人間を含めた生物自体がDNAというアーキテクチャを真似た上での、実装の再発明、再生産の繰り返しではないか。


事実上、再利用なんてほとんどできないんだよな。とはいえ、手を付けない領域、というのはある。

例えば、私はWebアプリを作る時、OSやデータベースやブラウザや言語を作りなおそうなんて考えない。コンポーネントにしても、jQueryの再実装は考えない。でも、jQueryのプラグインは、微妙。一応探すけど、見つからないことも少なくない。気に入らなければ作り直すこともある。(作る前提で探すから見つからないのかもしれない)

これは立場によっても変わるよね。私はWebプログラマだけど、おそらくWebデザイナーであればjQueryのプラグインの再構築はよっぽど考えないだろう。でも、Twiter BootstrapのようなCSSフレームワークだと微妙じゃないかな。(まぁ、BootstrapもjQueryレベルになりつつあるけど)

思うに、開発対象の一つ下のレイヤーが、再利用するかどうかが微妙なところなんだろう。

2つくらい下のレイヤーに選択の余地があって、再利用の対象になる。でも、1つ下は、自分が開発するものへの影響が大きいから再利用性に困難を感じるんじゃないかな。
スポンサーサイト

Appendix

プロフィール

いむら@fintopo いむら@fintopo

フリーのシステムエンジニア兼プログラマです。趣味はガーデニングとカメラ。2017年4月にα7IIを買いました。フルサイズ一眼初心者です。

このページのQRコード

季節暦

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。