今月末にバージョン1.0リリース

「本家Rubyより速い」、JRuby開発者に聞く

PythonやRubyといった動的言語が人気だが、サン・マイクロシステムズは、そうした動きをJavaテクノロジに採り入れつつある。もともとのPythonやRubyはCで実装されているが、Javaによる実装である「Jython」や「JRuby」といった処理系が存在する。Ruby向けに書かれたコードはJVM上で稼働するJRubyでも動作する。同様に、Rubyブームの火付け役となった感もある「Ruby on Rails」（RoR）で構築されたサイトであっても、かなり高い互換性でJRuby上で動作するという。米国サンフランシスコで開催中のJavaOneで、JRubyプロジェクトの中心人物に話を聞いた。

Ruby on RailsもJVM上で稼働

サン・マイクロシステムズでJRubyの開発に携わるチャールズ・ナッター氏（左）とトーマス・エネボー（右）氏

現在、JRubyは6人のコア・コミッターと30〜35人のコミュニティメンバーによって開発が進められている。6人のコア・コミッターのうちの2人、チャールズ・ナッター（Charles Nutter）氏とトーマス・エネボー（Thomas Eebo）氏は、2006年9月にサン・マイクロシステムズに社員として迎え入れ、現在はフルタイムでJRubyの開発に取り組んでいるという。

「2004年のRubyConfに参加してRubyがおもしろそうだなと思ったのがRubyとの最初の関わりです。ただ、Rubyに興味があったのに、Javaで実装するということになって、今ではJavaばかり使っています（笑）。 サンに入る前は、JRubyは週末だけのプロジェクトだったのが、平日も週末もフルタイムでJRubyに関わることになると、もしかして自分は興味を失うんじゃないかとも思っていましたが、ますます仕事が楽しくなっています」（トーマス・エネボー氏）

今月末にバージョン1.0を正式にリリースするというJRubyだが、本家のRuby1.8との互換性は高い。「互換性には気を遣っています。自分たちで作成したテストツールで互換性の検証をしています」（エネボー氏）といい、RoRで書かれたコードも、サンのJavaアプリケーションサーバ「GlassFish」上で稼働するという。

Rubyには、本家のRubyとJRuby以外にも、高速処理を売りにしたYARV（Yet Another Ruby VM）という実装もある。Rubyは言語仕様が明確にドキュメント化されていないため、こうしたRuby仮想マシン間の互換性を懸念する声も出ていたが、「サンで作成したテストツールは、Rubyコミュニティに提供するつもり」（エネボー氏）といい、互換性に関する心配は杞憂となりそうだ。サンはこれまでにも、Rubyコミュニティに対してソースコード保存用のサーバや、開発ツールなどを提供しており、RoRで注目を集めたRubyが、サンによるJRubyへのコミットメントによってさらに広範囲の注目を集めそうだ。特に商用利用に関して言えば、「Java EEのライブラリやJavaクラスを、Rubyの文法で自然に使えるように作業を進めている」（エネボー氏）というのはJava開発者にとっても、Rubyの文法に慣れ親しんだ開発者にとっても朗報だろう。

処理速度のチューニングも進んでいる。JRubyは高速実行を目指したYARVと、「ほぼ同等か、テスト項目によってはやや遅い程度の速度」（エネボー氏）といい、本家のRubyよりは確実に速いとしている。

「動的言語はヘルメットを付けずに走るバイクのようなもの」

JRubyやJythonといった人気の言語がJavaプラットフォーム上で動くとなると、Java言語の位置付けにも影響を受けるのではないかという疑問が出てくる。この疑問に対して、Javaの生みの親であるジェームス・ゴスリン（James Gosling）氏は、「RubyやPythonといった動的言語はHTMLを生成するのに適した言語だが、それがコンピューティングのすべてではない」とコメントしており、例えば、NASDAQの電子取引では1秒間に約15万のトランザクションをJava EEで処理しており、そうした用途ではJavaのスケーラビリティや柔軟性、セキュリティが勝ると指摘する。

「動的言語を使うのは、ヘルメットを付けずにバイクで走るようなものだ。そのほうがヘルメットを付けてから走り出すよりずっと速いが、コードの安全性や保守性といった面では問題を抱えることになる」（ゴスリング氏）

用途や開発規模によって使い分けられる言語の選択肢が増えるのは、開発者には朗報だ。いずれにしても、Javaプラットフォームは、もはやJava言語だけが動く環境ではない。

関連リンク JRuby

（＠IT 西村賢） 情報をお寄せください：