2006年2月24日,情報処理推進機構(IPA)が開いた,2005年度上期「未踏ソフトウェア創造事業」の最終成果報告会(プロジェクト・マネージャは東京工業大学の千葉滋氏)は,世界的に著名なオープンソース・ソフトウエアの開発者による講演を交えた盛りだくさんな会合となった。未踏プロジェクトの報告会としては異例の200人近い参加者が集まった。千葉氏による未踏ソフトウエアのテーマ設定は「世界を目指す基盤ソフト」である。
既に,世界的な競争力を持つソフトウエアが,日本のオープンソース開発者の間から登場しつつある。例えば,オブジェクト指向スクリプト言語「Ruby」の利用者は世界中にいる。Rubyの国際会議である「Ruby Conference」は米国で毎年開催されており,2005年は第5回を数えた。Javaのバイトコード操作ツール「Javassist」は,米JBoss Inc.のアプリケーション・サーバ製品をはじめ複数の有力ソフトウエアに採用されている。RubyもJavassistも,作者は日本在住の日本人である。
日本生まれのソフトウエアが広く使われるようになった背景の1つにはオープンソースの台頭がある。インターネットの上で国際的な協力のもとソフトウエアを開発する体制が出来上がったことで,話す言葉が何語であれ,開発者の居住地がどこであれ,良いソフトウエアが世界中で利用が広まる可能性がより高まった。特に開発者向けの基盤ソフトウエアの分野でこうした傾向が強い。例えば,Linuxは当初はフィンランド在住の大学生が開発したソフトウエアだったが,自由に利用できるUNIX互換環境を求めていた世界中の開発者に支持されて利用が広がった。
成果報告は「Ruby対Java」に
報告会では,未踏プロジェクトとして採択された開発者が1年間の成果を報告した。具体的には,Rubyに関するプロジェクト「BioRuby/ChemRuby」「YARV」の2件と,Javaに関するプロジェクト「Tuigwaa」「Mayaa」の2件である。つまり「Ruby対Java」という図式となった。それだけではない。Seasarプロジェクトのひがやすを氏,Ruby言語開発者のまつもとゆきひろ氏,それにプロジェクト・マネージャであると同時にJavassistの開発者である千葉滋氏と,著名なオープンソース開発者3人による講演があった。
こうした異なるプログラミング言語の技術者同士が議論をする「他流試合」の場合,相手の技術に対する自分野の優位性を強調する論法とってしまう場合が多い。だがこの日の報告会の議論は,互いの分野の成果に敬意を払いつつも,自らの分野の特徴は何かを示すという前向きな形で進んだ。
Rubyの特徴は素早いプログラミング,柔軟な言語仕様による扱いやすさ,DSL(後述)を含めた幅広い適用範囲にある。一方,課題は実行速度やマルチプロセサ対応だが,新たな仮想マシン(後述)の登場で改善されつつある。それに対してJavaは大規模システムでの実績がある半面,プログラミングはRubyに比べ煩雑である。そこでJava分野ではDI(後述)など複雑性を解消する技術が発達しつつあるところだ。
Seasarひが氏,「設定ファイルなしの開発」を提唱
ひがやすを氏は,同氏が中心となって開発を進めているDI(dependency injection,依存オブジェクト注入)コンテナ「Seasar2」の設計思想について「DI:Configuration Files must DIe」と題して講演した。DIとは,プログラム・モジュール相互の依存関係を,プログラム内部には記述しないで済むようにすることで,単体テストが容易になるなどのメリットを得るための手法であり,DIコンテナはその実行環境である(関連記事1)。
ひが氏の主張は,後述の「設定より規約を重視する」という言葉に集約される。従来のDIコンテナではプログラム間の依存関係を設定ファイルに記述していたが,これでは大規模プログラムで設定ファイルが肥大化する。「Javaプログラムの複雑さをXMLファイルに追い出しただけ」(ひが氏)になってしまう。
Seasar2では,Javaプログラミング言語の文法が含む「interface」の「型」と「名前」の情報に基づき,自動的にモジュール相互を接続する。そのためには,プログラムをある一定の規約(interfaceを使ってプログラムを呼び出すこと,命名規則を守ることなど)に従って書く必要があるが,ひが氏によれば,これは特に面倒を増やすことにはならない。というのも,大規模開発ではもともと規約に従ったプログラミングをすることが望ましいとされているからだ。
ひが氏はこの考え方を「設定より規約を重視する(Convention over Configuration)」という言葉を使って表現した。これは,Ruby分野で注目を集めているフレームワーク「Ruby on Rails」で提唱された概念である。この日の会合ではJava分野とRuby分野の両方の開発者が集まったことを意識したものだ(関連記事2)。基盤とするプログラミング言語が異なっていても「業務向けWebアプリケーションの構築」という共通課題に取り組むうえでの問題意識は共通することを,参加者に向けてアピールした。
さらに,Seasar2でエンタープライズJava技術のコンポーネント技術Enterprise JavaBeans3.0(EJB3)の仕様を実装する方針であると述べた。EJB3は,現在仕様策定の最終段階にある最新技術である。「標準に準拠することは,ユーザーのソフトウエア資産を守ることにつながる」。