読者です 読者をやめる 読者になる 読者になる

jnobuyukiのブログ

JavaScriptとR言語を中心に研究活動に役立つwebアプリケーション技術について考えていきます。twitter ID: @j_nobuyuki

研究における「車輪の再発明」

車輪の再発明」という言葉があります。
既に発明されているものを活用しないで、同じようなものを自分でゼロから作ってしまうことを言います。IT 業界でよく使われる表現で、別の人が作った機能をうまく利用しながら新しい機能やサービスを作るために「車輪の再発明を避ける」という言い方をします。実際にIT 業界の方に尋ねてみたところ、オープンソースコミュニティでは、「車輪の再発明を避ける」仕組み(例えばアップストリームやプルリクエスト)がコミュニティ全体に浸透しているようです。

実は、研究でも「車輪の再発明」は大事な問題だと思います。そこで、ちょっと考えてみました。

基本的には「車輪の再発明」は避けた方が良い

科学の基本的な目的の一つは、誰も知らなかったことを皆が利用できる知識として確立することです。そのような観点からすると、「車輪の再発明」は時間と労力の無駄使いです。なので、基本的的には科学研究においても「車輪の再発明は避ける」べきです。

でも、しばしば見かける「車輪の再発明

実際の研究では、知の創造という理想からは予想もつかないほどたくさんの「車輪の再発明」を目にします。大きく分けて二つのパターンがあります。
一つは、既存の研究に気づかないまま研究を進めてしまう場合です。特に、学生さんの卒業論文とかレポートとして提出されたミニ研究などで目にします。先行研究の下調べをきちんとしていれば避けられることもあるのですが、経験不足の人は先行研究の探し方に、不慣れ故の偏りがありがちです。その結果として、研究発表会とか初めての学会発表でたいてい先行研究との類似性を指摘されます。
もう一つは、他の人が作ったものは信用しないというポリシーから、全て自分でやらないと気がすまない場合です。これは比較的ベテランで、実力がある研究者の方にも見られます。、このタイプに当てはまる研究者は、たとえば測定データの解析プログラムに少しでもブラックボックスがあると決してそのプログラムを使いません。どんなに手間がかかろうが、自分で解析プログラムを作ってしまいます。IT業界の用語でいうところの「NIH症候群」(Not Invented Hereの略)に相当すると思います。(解析そのものが研究対象の方の場合はそれでいいわけですが。)
いずれの場合も、貴重な時間と労力が使われているので、そればっかりやっていては研究を先に進められません。

車輪の再発明」がどうしても必要になるとき

IT業界だとライセンスの問題(その機能を取り込むことで、プログラム全体のライセンスが意図しないものになってしまうような場合)が解消できないときに「車輪の再発明」の必要性が生じるようです。研究の分野では、そのような事例は思いつきません。むしろ、ソースコードが非公開で、たとえ誰かが出来ていても自分でやらざるを得ない場合の方が多いと思います。また経験的には、別の原因で「車輪の再発明」をせざるを得なかったことがあります。実験の実施のために、他の研究機関や会社が提供しているプログラムを利用することがよくあります。たまたま利用していたプログラムの一部に致命的なバグが見つかりました。すぐに不具合を報告し、修正に関する問い合わせをしてみました。回答として、バグ修正の意向は確認したものの、修正時期の見通しが立ちませんでした。研究室内での議論の結果、そのときは別の方法でゼロからプログラムを書きなおすことになりました。投入される労力は甚大でしたが、そこで研究を止めるわけにいかなかったので、本当に苦肉の策でした。オープンソースだったら、自分たちでバグを修正して、オリジナルに組み込んでもらうこと(これをオープンソースコミュニティでは「アップストリームする」と言うそうです)ができます。しかし、アカデミアにはそのような概念はまだまだ浸透しておらず、開発者の修正を待つ傾向が強いです。

あえて「車輪の再発明」をやってみた方がいいとき

今までの考察に基づけば、「車輪の再発明」はなるべく避けた方がいいという結論になります。でも、研究の場合、あえて再発明をした方が良い場合があります。例えば若手研究者や学生が、既存の機能のメカニズムを学習する場合です。具体例として、統計解析がこれにあたります。例えば、実験でいくつかの条件やグループの測定値の平均を比較するときに「分散分析(Analysis of Variance)」という統計的な手法を用います。平均を比較したいのに、分散の分析をするという名前からして何をしているのか分かり分析です。しかし、代表的な統計パッケージソフトウエア(SPSSSASなど)をマニュアルや教科書の通りに用いれば、とりあえず結論に必要な情報を取り出せます。では、分散分析の計算過程を理解しなくてもいいでしょうか。やはりそういうわけにはいきません。分散分析は、適用にあたって、測定に関するいくつかの前提をしています。なぜそのような前提が必要なのかを理解するには、自分で一度全ての計算過程を実施してみるのが一番です。計算過程やその計算方法に潜む考え方に触れると、どのように実験を計画すべきなのかもよく理解できます。自ら再発明に挑戦することで、その発明の偉大さや活用法を深く理解できると思うんです。

まとめ「車輪の再発明」は、コストや効果をしっかり見極めてからやってみよう

以上をまとめると、科学研究では「車輪の再発明」を常に避けた方がいいわけではなく、やらざるを得ない場合やあえてやった方が良い場合もあります。ただし、再発明によって得られる効果だけでなく、再発明に必要な労力をあらかじめ予測して、費用対効果のバランスをしっかり見極めてから取り組むことが重要です。