科学者や工学者は、通常、研究データの収集や処理や報告を行うために、The MathWorks社のMATLAB、Wolfram Research社のMathematica、SAS Institute社のSAS/IMLなど、独占的製品を使用しています (本稿で触れた企業の製品へのリンク先は、参考文献に示してあります)。ソフトウェアの立場から見れば、これらの製品は、より大きな「ビジネス・インテリジェンス」とか「解析学」といった範疇にひと括りにしたくなりますが、それぞれの製品は、特殊な科学研究室市場向けに丹念に制作されており、著しく高いレベルの顧客満足度を享受しています。
これらのアプリケーションは、商業的にも技術的にも成功してきています。たとえば、MathWorksは、依然として積極的にプログラマーを新規採用し続けていますし、Mathematicaは、その数式処理ソフトの新しいリリース毎に、「ドキュメント中心インターフェース」や「アルゴリズム知識ベース」といった、興味深い機能拡張を登場させています。
しかしながら、これらのアプリケーションにも、新世代の競合相手が現れつつあります。とくに、いろいろなサイトで公開されているオープン・ソース・ソフトウェアに対する信頼は、着実に高まってきています。本稿では、それがなぜなのか、その結果として、皆さんの仕事にどのように関係してくるのかを解説します。そして、オープン・ソースの製品と独占的製品とは、競争相手としてではなく、チーム仲間の関係になるであろうという結論を導きます。
図1. 数値計算用のオープン・ソース・ツールであるSciLabが描画した3-Dの表面
科学者や研究室の開発者がオープン・ソース・ソフトウェアを使い始めるようになった主な理由には、以下のようなことがあります。
- ライセンスが無料
- ライセンス料管理が簡単
- 大規模なプログラム構築の容易性
- 統合の容易性
- 性能のよさ
- 開発上の利便性
- 知的所有権
- サポートのよさ
製品が「無料」であることが魅力なのは当然ですが、おそらく考えられているほど重要ではないのではないでしょうか。かなりのユーザーが、IMLやMATLABなどの製品の費用は負担が可能だといっています。それらのソフトウェアは、問題なく仕事をしてくれますので、それらのソフトウェアによって提供される価値の何分の1でしかないライセンス料なら、喜んで支払いたいと言います。ソフトウェアの費用は、研究交付金でまかなうことができるので、大した問題ではないと言うユーザーすらいます。
ただ、ライセンスが無料であれば、柔軟性が得られるという面があります。ある研究者が同僚の研究室を訪れ、訪問先のハードウェアですぐに共同で仕事を始めたいということがあるでしょう。オープン・ソース・ベースのソフトウェアの場合、ダウンロードすれば済むだけの話です。独占的製品の場合、ドキュメントにすら制約があることがあります。Research Systems Software社のInteractive Data Language (IDL) について、Anansi SpaceworksのCTOであるTerry Hancockは、「APIの完全なドキュメントをなかなか入手できない」と語っています。
これに対して、オープン・ソースの場合、注文書を用意するとか、許可を得るとか、あるいは (オープン・ソースを使わない場合には) 会計事務が関係してくるような諸々のことに関る必要がありません。ユーザーにとって、これはありがたいことです。メーカーが独自に開発した扱いにくいライセンス・マネージャーを構成して保守するためにかかる費用は、いろいろなライセンスの料金そのものよりも高くつく、という管理者もいます。
無料のソフトウェアは、学生たちに対しても、ある程度の強みをもっています。学生たちは、費用のかからないソフトウェアを独自に利用することが多いと語っています。一方、ベンダーも、通常、学生割引を行っており、購入価格こそが、将来のユーザーの取り込みを妨げているという考えは裏付けが困難です。
図2. 翼 (airfoil) の回りの流れ。Yorickによる描画
商業製品は、箱から取り出したそのままで、その機能として謳われているデータ処理を行うことに関して素晴らしい価値を提供します。それらの製品は、各種計測機器から送られてくるデータを保存し、データ表示や並べ換えやグラフ表示を行い、レポートの形にまとめ上げるといったことを簡単に行うことができます。そのような操作の手順は簡単に習得でき、それぞれ独自のデータ処理方法を使う科学者も、計算手法に関る必要はなく、科学に集中することができます。
ただし、これらの同じ製品が、コンピューティング・オブジェクトとして、いろいろな欠点を備えていることも確かです。それらのベースになっている言語は、オブジェクト指向や関数型プログラミングなどの新しい強力な表現形式を、不完全な形でしかサポートしていません。これらのツールは、互いに力を合わせて素早く見事に計算を成し遂げますが、長期的なプロジェクトで大規模チームで使用すると、扱いにくいものとなります。コードの再利用が、なかなかうまくいかないため、多くの研究室では、カット・アンド・ペーストがワークフローの中心になっています。
当然ながら、チームワークは、いつでも難しい課題です。オープン・ソースであれば、もっとうまくできるのでしょうか。
多くの場合、そうです。たとえば、フランス、オルレアンにあるCentre de Biophysique Moleculaire (分子生物物理センター) の上級研究者であるKonrad Hinsenは、つぎのように語っています。MATLABには、「関数レベル以上のコードの構造化 (たとえば、モジュールなど) はなく、データ構造を定義する機能もまったくありません。抽象化を構築することはできませんし、... MatlabはFortranの対話型版であり、すべてがマトリックスになっています」
このようにデータ構造がないという点は、PythonやRubyなどのオープン・ソースの開発言語がオブジェクト指向やモジュール・パッケージの機能を内蔵しているのとは対照的です。
NASAのLangley Research Center (Langley研究センター) で計算手法の開発リーダーを勤めているWilliam Klebにとって、再利用可能かどうかは、とくに重要な意味をもっています。「最新の」 (マッハ5以上の) 飛行を専門とする航空宇宙関係のエンジニアとして、数年前から、コンピューターの有効な利用方法を意識的に捜し求めるようになりました。Klebは、こう言っています。「われわれは、役に立たなくなったのでコードを廃棄するということを絶えず繰り返すことにうんざりしたのです。また、1個のソフトウェアに関して、チームとしてどのように作業を進めればよいのかが、わかっていないことを実感するようにもなりました。最善のやり方があるのではないかと考え、ソフトウェア・エンジニアリング / 開発のコミュニティーに目を向けました」
結果は? Klebはこう語っています。「現在は、Rubyを使って、自動受け入れテスト (automated acceptance testing) やユニット・テストなど、いくつかのXP [eXtreme Programming] 手法をサポートするためのカスタム・ツールを作成しています。また、APIドキュメントの自動作成を行うために、Rubyの素晴らしいドキュメント作成ツールであるRdoc用に、なんとかFortran 95のインターフェースも開発できました。Fortranのコード生成や条件コンパイルにもRubyを使用していますし、いろいろなコード・エレメントを組み合わせて多くの専門分野にまたがるようなコードを作成する時の接着剤としてもRubyを使用しています。われわれは、ほとんどすべてのFortranコードをRubyでラップするという目標に向かって前進しつつあります」
これらの相違は重要です。プログラミングの容易さは、ソフトウェアについての予備知識のない科学者にとっても大きな問題です。エンジニアリング・ツールキットの開発者なら誰でも抽象化を行おうとするでしょう。問題は、そのツールキットが抽象化をどれだけうまくサポートしているかに尽きます。また、Mathematicaなど、優れた設計の言語を誇りとしている商業製品もあります。しかしながら、一般に、長期的な保守や再利用に不可欠な抽象表現能力を強調してきたのは、Sather (参考文献参照) やRやJなど内輪だけで使われていた (esoteric) 言語を含め、オープン・ソースの言語です。
図3. DomainFinderアプリケーション。たんぱく質のダイナミックな領域を調べ、その特性を示すプログラム。
オープン・ソースの中でも、科学的な問題に対する手法には、少なくともいくつかの特徴があります。Octave (参考文献参照) のようなプロジェクトは、MATLABの比較的狭い範囲を代替することを目標としています。科学的データ分析を行いますが、やるのはそれだけです。さらに専門化された無料のパッケージもたくさんあります。Image Reduction and Analysis Facility (IRAF) は、たとえば、天文学で広く利用されており (参考文献参照)、人類学や高エネルギー物理学、ゲノム解析 (genomics) のどの学問分野にも、同様のアプリケーションがあります。これらのアプリケーションには、たくさんのルーチンが詰め込まれた貴重なライブラリーが用意されていますが、コーネル大学のJoe HarringtonがIRAFを評しているように、「ひどい基本言語」であることがしばしばあります。
その他、PerlやJavaやPythonなどの汎用的な言語を使って開始し、それらの言語を基に「垂直的な」ツールキットを構築しているプロジェクトもあります。中でも、SciPyはとりわけ意欲的で (参考文献参照)、具体的な実績をつぎつぎと積み重ねています。SciPyは、MATLABのすべての機能を実現し、その性能を向上させ、他のソフトウェアと簡単に統合できるようにし、なおかつ完全に無料のままとし、少なくともMATLABと同程度の使いやすさにすることを目的とするPythonベースのプロジェクトです。SciPyの利益団体の前回の実際の会合に出席した60人の中には、Cal Tech、National Biomedical Computational Resource、Lawrence Livermoreなどの国立研究所、Lockheed-Martin、Baylor College of Medicine、Space Telescope Science Institute、Stanford Linear Accelerator Centerを代表する人々も含まれていました。完全に汎用的なプログラミング能力と、たくさんの専門化されたモジュールの集合とを統合することが、これらの参加者が目的としている理想です。
大きな捉え方をすれば、プログラミングの容易さは、何も開発だけに関係することではありません。天秤 (てんびん) の反対側、すなわちアプリケーション中の個々の文やコマンドのレベルにも影響を及ぼすことです。商業ソフトウェアの弱点の1つは、他のシステムとの統合に消極的だったことです。どの商業製品も、ネットワークからのデータの取り込みや計測機器のデバイス・ドライバーなどの「外部機能」とのインターフェースのことをマニュアルに記載していますが、それらのインターフェースは、利用するのが非常に困難であるというのが実際です。
これに対して、オープン・ソースの言語の場合、悪評が立つほど、他の言語のコードとの統合に積極的です。数多くのプログラマーが、PythonやTclやPerlなどの汎用言語向けに、何千もの拡張モジュールを開発してきました。これは、多数の組織にとって重大な意味をもっています。どれだけ多くの組織が商業製品の外観やライブラリーに好感を抱こうと、それらの組織では、特殊な外部システムを、閉鎖的なソフトウェア・パッケージに結合することに高い費用をかけることはできません。開発者は、簡単に統合できるオープン・ソースのツールキットを使うほうが快適だと考えるようになっています。
プログラミングの容易さに関係する最後の問題は性能です。数多くの研究者が、独占的ソフトウェアの場合、スクリプトしたプログラムは、低い性能しか示さないと言います。個々の操作はうまく最適化されているのですが、汎用の言語機能に関しては処理の遅い場合が多いというわけです。Perlなどの「glue」(接着剤) 言語とか「スクリプト」言語と呼ばれるものも、遅いという評判を長く受けてきていますが、優れたアルゴリズム表現能力を備えるとともに、最近のバージョンでは速度を最適化しているという点で、強力な優位性を生み出しています。
これまでのオープン・ソースに関する議論は、すべて、オープン・ソース・ソフトウェアの二次的な特性に基づくものでした。一部の開発者にとっては、公開性 (openness) そのものが最も重要な意味合いをもっています。Tom Silvaは、スペース・シャトルなどの航空宇宙関係のプロジェクトに従事している経験豊かなコンサルタントですが、「ソースがあれば、問題を発見することができる」と、簡単ながらも説得力のある言い方をしています。「仕事を楽にしてくれる機能を追加することができますし、コードを追跡することで、実際に どんなことをやっているのかを調べることができます。ドキュメントでどのように説明されているかではないのです」
これに関連して、商業ソフトウェアの信頼性の科学的妥当性が大きな問題となりつつあります。何かの結果が、所有権のあるライブラリーを使って得られたということは、何を意味するのでしょうか。ブラック・ボックスの内部が第三者所有の企業秘密となっているとき、そのブラック・ボックスを使って得られた発見や結論を、権威ある学者は、どのように論文化するのでしょうか。
オープン・ソースの場合、当然のことながら、こうしたことが問題となることはありません。オープン・ソース・プログラムについては、原理的にすべてのこと を正確に記載することができます。秘密にされることは何もありません。
研究者の中には、オープン・ソースを好む最終的な理由に、サポートが優れていることを上げる人もいます。営利企業は専門のサポート・スタッフを従事させていますが、いろいろなオープン・ソース・テクノロジーで開設されている「コミュニティー・ベースの」オンライン・フォーラムは、その強力な競争相手となっています。
Harringtonは、「われわれの使用している言語で機能の割には値段の高いもの、値段の割には機能の低すぎるものをお払い箱にできる日が待ち遠しい」、オープン・ソースのものに代替したいと語っていますが、研究者の中には、そう思う人が増えています。それだけではありません。科学者やエンジニア向けの所有権のある製品は、多大な価値を提供していますが、それは高いコストをかけてのことです。つまり、価格だけでなく、自由度の低さ、箸にも棒にも掛からないほどの性能の遅さ、開発が困難といったコストも含めてのことです。数多くのユーザーが、すでに切り換えを進めています。結果: そうしたユーザーは、現在、仕事を改善しつつあります。
こうした大きな流れの中で、いろいろと興味深い変化が局所的に現れています。ベンチャー・キャピタル資本の製品が高い価格で販売されているのが一般的な生物情報工学 (bioinformatics) 市場では、Perlで開発された無料のパッケージや、それより小さい規模ながら、JavaやTclやPythonなどの言語による無料パッケージが、うまく受け入れられ、認知されてきたことで、ドラマが広がっています。
他の学問分野では、新しいテクノロジーと古いテクノロジーを組み合わせる人々が、最も速い進歩を遂げているようです。Klebのグループは、旧来のFortranをRubyベースのパッケージでラップしています。いろいろなグループがTclを使ってMATLABなどの商業パッケージのインターフェースの改良を図っています。
使い勝手の悪いソフトウェアに縛られてきた科学チームや工学チームは、ソフトウェア・ベンダーが問題を解決するのを待つ必要はありません。数多くのプロジェクトが、無料で利用可能なあらゆる種類の製品 (solutions) を急速に開発しつつあります。そういう製品がない場合でも、所有権のある製品の優れた機能 (elements of proprietary value) を模倣するだけの経験を備えたオープン・ソースの開発者が増えつつあります。現在行われている最善のコーディングの中には、無料の部品と商用の部品とを融合させ、それぞれ単独では実現することのできない結果を実現しているものがあります。
-
MATLAB については、The MathWorksのWebサイトを参照してください。
- Wolfram ResearchのMathematica は、とくに、数学者や分析を専門とする科学者に好まれています。一方、主に実験データのレポート作成を行う多くの生物学者や化学者にとっては、少し重いソフトウェアです。
-
SAS/IML (対話型マトリックス・ライブラリー: Interactive Matrix Library) ソフトウェアについては、SASのWebサイトを訪れてください。
-
IDL (対話型データ言語: Interactive Data Language) については、Research Systems SoftwareのWebサイトを参照してください。
- GPL版のOctave は、MATLABとほとんど同等の機能を提供しようとしています。
-
IRAF は、天文学者に広く使用されています。
-
Sather は、C、Eiffel、Lisp、およびその他のよく知られている言語の最善の部分を組み合わせることを企図しています。
-
Scilab は、MATLABと競合する無料のソフトウェアで、高度なアルゴリズムを使用して、データ解析や美しいグラフィックスの作成を行います。
-
JPLの科学者たちのオープン・ソース・ソフトウェアの使い方 および本当にミッション・クリティカルなアプリケーションを開発するための厳格な開発手法を紹介したRead Cameronの記事も参考にしてください (developerWorks、2002年8月)。
-
how open source has returned to the classroom (developerWorks, June 2000) も参考にしてください。
- IBMの研究者は、化学、コンピューター・サイエンス、電気工学、材料科学、数学、物理学など、数多くの科学・技術の学問分野に従事しています。関連する情報がIBM Research サイトでも紹介されています。
-
IBM Life Sciences は、バイオテクノロジー、薬学、ゲノム解析、たんぱく質工学 (proteomics)、保健医療に関係するITのニーズに対応しています。
- 皆さんの探しているLinuxの参考文献 が、developerWorks のLinuxゾーンに見つかるかもしれません。

Cameronは、Phaseit, Inc. の常勤のコンサルタントです。オープン・ソースなどの技術的なトピックについて、数々の執筆や発言を行っています。Cameronのメール・アドレスはclaird@phaseit.net です。