RailsではなくJRuby on Railsを選ぶ理由とは?
12月2日から4日の3日間、東京ミッドタウン・ホールにおいてサン・マイクロシステムズの主催による「Sun Tech Days 2008 in Tokyo」が開催された。本稿では、2日目に行われたテクニカルセッションより、JRuby on Railsの特徴や利点を紹介した「(J)Ruby and Rails」の様子をレポートする。講演者は同社システム技術統括本部の野澤智氏だ。
なぜ「J」Ruby on Railsなのか
セッションの前半では、RubyおよびRuby on Railsに関する基本的な特徴や開発手順の紹介、実際にRailsを用いてアプリケーションを開発するデモなどが行われた。開発手順を紹介しながら実際に動作するウェブアプリケーションを作ってしまえる手軽さはRailsならではといえる。
興味深かったのは「なぜJRubyを使うのか」というテーマが中心となった後半部分だ。JRubyは言わずと知れたRuby仕様のJavaによる実装であり、野澤氏はその強みとして次の特徴を挙げている。
- 本家Ruby実装(MRI)よりも高速
- RubyとJavaの両方のライブラリが使用可能
- ネイティブスレッドに対応している
さらに、JRuby上でRailsを使う「JRuby on Rails」のメリットとしては次の項目を挙げている。
- アプリケーションをWAR化してデプロイ可能
- JPA、JTA、JMS、EJB、JDBC、JMXなど、強力なJavaライブラリを利用可能
- コンテナとしてGlassFishを利用可能(GlassFish Gem)
野澤智氏
Railsは2.2.xよりスレッドセーフになったが、グリーンスレッドであるためRubyインタプリタで動作させる場合には単一のネイティブスレッドとして扱われる。それに対してJVM上で動作するJRuby on Railsはネイティブスレッドに対応するため、スレッドを活用することでより高いパフォーマンスを得ることが可能となる。
そのほか、JDBCコネクションプールやJNDI Lookupなどを利用できる点も大きなメリットだと野澤氏は指摘している。コネクションプールなどはRubyでもサポートされているが、JDBCの方がよりセキュアだという。
デプロイメントの面では、JRuby on RailsではWarblerや前述のGlassFishが使用されることが一般的だそうだ。WarblerはRailsアプリケーションからWARファイルを自動生成するライブラリ。WAR化してしまえばどんなJavaアプリケーションサーバでも動作させられるため、デプロイできるターゲットは大幅に広がる。
GlassFishについては、GlassFish v3をコンテナとして使用するGlassFish Gemが公開されており、軽量かつ高速なGlassFish v3に対して非常に簡単にRailsアプリケーションをデプロイすることが可能だ。さらに、この方法ならばGlassFish v3上でJ2EEアプリケーションと混在させることができる。また、ホットデプロイやデータベースコネクションプーリング、クラスタリングなどの機能が利用できるなどのメリットもあると野澤氏は言う。
セッションでは実際にGlassFish Gemを利用してGlassFish v3上に作成したRailsアプリケーションをデプロイするデモも行われた。
Ruby on Railsは手軽にウェブアプリケーションを開発できるという点で非常に優れたフレームワークだが、一方で大規模アプリケーションへの適用となるとパフォーマンスやスケーラビリティ、セキュリティなどの面で不安の声が上がる。JRuby on RailsはRailsとJavaの利点をうまく融合させるための賢い選択肢と言えるだろう。
- コメント(1件)
- ホワイトペーパー

本記事は、初出時に「Railsは1.8.xよりスレッドセーフになった」と記載しておりましたが、
正しくは「Railsは2.2.xよりスレッドセーフになった」でした。そのため、該当個所を修正
させて頂きましたことをお知らせします。
ご迷惑をおかけしました読者の皆さま並びに関係各位には深くお詫び申し上げます。