米国でWebLogic,WebSphereに次ぐ27%のシェアを持つとされるオープンソースのEJB対応 APサーバーJBoss(関連記事)。そのJBossに日本の大学の研究成果が取り込まれている。東京工業大学 大学院 情報理工学研究科 助教授の千葉滋氏が開発したJavassistである。JBoss開発コミュニティのコミッタ(ソースコード更新権限を持つメンバー)でもある千葉氏に,世界に通じるソフトウエアの開発などについて聞いた(聞き手は高橋 信頼=IT Pro)

千葉滋氏
――JBossはビジネスの現場で多くの業務システムに使用されているソフトウエアです。研究の成果が,しかも日本発の技術が取り込まれたと知って驚きました。

 私の研究テーマのひとつに,アスペクト指向プログラミング技術があります。JBossのサブプロジェクトとなったJavassistは,その産物です。Javaの中間言語であるバイトコードを,コンパイル時やロード時に変換するためのライブラリです。これにより,あらかじめ定義した変換ルールに従って,Javaのプログラムを自動的に変換するシステムを簡単に作れるようになります。

――Javassistでどのような機能を実現するのですか。

 JBossの次期版4.Xでは,わざわざEJBを書かなくても,通常のJavaクラス(Plain Old Java Object,POJO)だけでEJBと同等の効果を得られるようにする機能を実現しようとしています。JBoss 4.Xの新機能であるアスペクト指向プログラミング・システムJBoss AOP(関連記事)で実現するのですが,このJBoss AOPの実装にJavassistが使用されています。

 アスペクト指向プログラミングとは,普通のオブジェクト指向言語では,実装が複数のクラスやオブジェクトに散らばってしまう機能(横断的関心事)を,単独のモジュールとして実装できるようにするものです(関連記事)。

――なぜJBossコミュニティはJavassistを選んだのでしょうか。

 Javassistと同じ目的を持つツールには,Jakarta ProjectのBCEL(Byte Code Engineering Library)があり,標準的なツールとなっています。

 BCELがあるにもかかわらずJavassistが選ばれた理由は,使いやすさだと思います。BCELは,バイトコードについての詳細な知識がないと使えないのですが,JavassistはJavaの構文さえ知っていれば利用できます。実は,Jakarta ProjectのWebフレームワークであるTapestryもJavassistを使っています。

 JBossコミュニティは最初BCELを使って実装を進めていて,使いにくさに音を上げて別のツールを探していたところ,Javassistを見つけたと聞いています。どのようにしてJavassistを知ったのかは正直よく知らないのですが,JBossのチーフ・アーキテクトであるBill Burkeは「ドキュメントが充実していたので使ってみた」と言っています。

 私のところへは,昨年,知人の米ジョージア工科大学の研究者を通じて「JBossコミュニティに入らないか」という誘いがありました。JBossはこのところ,Hibernateなど有力なオープンソース・コミュニティを取り込もうとしています(関連記事)。何度か誘いがあり,いろいろ考えた末,昨年の4月に参加することにしました。

――JBossに参加したことで,変化はありましたか。

 Javassistが広く知られるようになりました。もともと論文などを通じて,主に海外の大学の研究者の間では,研究用のツールとして認知されていたと思いますが,JBossの傘下に入ることで,普通の開発者にも認知されるようになりました。

 また,これまで英語の資料しかなかったせいか,日本では無名に近かったのですが,おかげでだいぶ知られてきたと思います。私個人としては,JBoss関連の活動にかかわるようになりました(関連記事)。技術面の活動だけでなく,日本での普及活動なども行っています。

――日本発のソフトウエアで世界的に普及しているものは多くありません。

 よく日本人は舶来信仰があるから日本発の成果は普及しないといいます。あるいは島国根性で互いに足をひっぱり合うから,とか。

 私はそういった要因は小さくて,無名のソフトウエアを発掘して世に広める人が少ないからかと思います。誰も知らないソフトウエアを,これはよいものだと紹介するのには勇気がいりますが,そういうことをしてもあまり尊敬されません。Javassistの普及には,これはよいものだ,と周囲に熱心に紹介してくれた人達の存在が大きいと思います。Rubyが世界的に普及したのも,そういう人達がいたからだと聞きました。

 それから言葉の壁は本当に大きいと思います。国内と海外は完全に別の世界になってしまっているのではないでしょうか。技術の分野では,よく海外で知名度の高い人は国内では意外に無名で,逆に国内で専門家として名高い人は海外では意外に無名だったりする,といいます。ソフトウエアも同じで,国内向けに普及させる努力と海外向けに普及させる努力がまったく別々で,なかなか両方に手が回らないのだと思います。

――実社会で使用されるオープンソース・ソフトウエアは,考えようによっては,論文よりもダイレクトな社会貢献であり,産学連携のひとつの形であるとも言えます。しかし,日本ではそういった例はやはり多くありません。

 かつては,公的な研究資金の援助を受けた研究の成果を公開する場合,権利関係の整理が難しいこともありましたが,今はかなり簡単になりました。それでもJavassistの公開にあたっては,書類を揃え,研究資金の一部を拠出した科学技術振興機構まで出向いて説明しました。形式上,ソフトウエアの公開は,研究論文の公表と同様の扱いになっています。

 もっと研究機関から実務に使われるオープンソース・ソフトウエアが出てきていいと思いますが,実際には難しい問題もあります。研究機関ですから,好きなソフトウエアを好きに作るというわけにはいきません。現状では,学術上の先進性が高いと思われるソフトウエアしか職務としては開発できません。これは欧米でも同じでしょう。最終的に論文の書けないソフトウエアは開発できない,ということです。先進性はないけれども,あると便利なソフトウエアでは開発できないのです。これは企業の方が,自社の利益になるソフトウエアしか職務として開発できないのと同じことです。

 実はJavassistの開発を始めた本当の理由は,ある日,私がJavaのバイトコードを扱うソフトウエアを作ってみたくなったことなんです。で,それを仕事としてやるために,苦労して先進性を考え出しました(笑)。それでも他分野の先生からは,「ソフトウエアの研究者は論文が少ないですね,どう業績を評価しましょうか」と聞かれます。

 また開発体制の問題もあります。研究の過程で試作したソフトウエアを実務で使える品質にするには,相当なスキルと労力が必要です。学生にも「プログラムを作ったら公開しよう」と指導していますが,公開できる品質のソフトウエアはそう簡単には書けません。公開したいのはやまやまだが,ソースコードは恥ずかしくてとてもじゃないが人に見せられない,と言ってくる人もいます。

 背景には,現在の大学の教育で,プログラミングなどいわゆる実学があまり重視されていないことがあります。特定の言語やOSに関する表面的な知識は寿命が短いので,大学としては,より普遍的,本質的な概念を学生に教えたいからです。最近は改善されつつありますが,プログラミングのスキルは学生個人の努力に頼っているのが現状だと思います。

 しかし,欧米の大学院の学生を見ていると,日本の学生に比べてスキルが高いと思います。国際会議に出てくるようなトップレベルの学生しか見ていないからかもしれません。しかし,それを考えてもスキルの差はあると思います。このことが,全体的な競争力の差として現れているようにも思えます。欧米,特にヨーロッパでは,技術者の社会的地位が日本に比べて相対的に高いことが背景にあるのでしょう。高い技術を身につければ,キャリアの点でもっと直接的に報われるという風潮が,もう少し日本にあってもいいように思います。




ほかの「IT Proオープンソース キーパーソン」を読む

専門サイト「IT Pro オープンソース」トップへ