エンタープライズ領域にもRuby普及か

独SAP、自社VMでRuby処理系のサポート追加へ

Java VM、.NET Frameworkに続いて、エンタープライズアプリケーションで使われてるもう1つのメジャーなバーチャルマシン（VM）、「ABAP VM」上でもRuby言語がサポートされる可能性が出てきた。

独SAPは3月27日、同社のWebアプリケーションサーバで動くRubyの実験実装「Blue Rubyプロジェクト」について明らかにしている。ABAP（Advanced Business Application Programming）は、独SAPが提供するWebアプリケーションサーバ「SAP NetWeaver Application Server」は、J2EEと独自言語ABAPによるアプリケーション開発が可能なVMを備えている。

Blue Rubyプロジェクトは、開発効率が高くアジャイル開発に適したRubyの世界と、すでに実績があり堅牢なSAPのWebアプリケーションサーバの世界をつなぐもの、という。DSL（Domain Specific Languages）を作成する環境も、Rubyによって実現できる。

Rubyソースコードを中間言語にコンパイル

具体的にはRubyで書かれたコンパイラを使い、Rubyで書かれたソースコードをBRIL（Blue Ruby Intermediate Language）と呼ぶバイトコードに変換。これをBlue Ruby VMと呼ぶスタックマシン上で走らせる。このBlue Ruby VMは、ABAB VM上で動くプロセスの1つで、同じABAPのVM上に載ることから、Rubyアプリケーションから、ABAPのすべてのオブジェクトにアクセスできるほか、オブジェクトの生成や、それらオブジェクトへのメッセージの送信が可能という。逆に、ABAPアプリケーションからRubyのメソッドを呼ぶこともできる。Rubyのソースコードは、仮想ファイルシステムシステムを通してデータベースに保存される。また、RubyソースコードのBRILへのコンパイルは、セーブ時に毎回行われるため、起動時のオーバーヘッドはないという。

BRILはBlue Ruby向けに作られたバイトコードで、動的言語の特徴を持っている。例えば文法エラーがあっても、コンパイル時にエラーを出すのではなく、実行時に例外を上げるといった違いがあるという。

ABAPが提供するAPI（RFC）をRubyで利用する例。「1」という名称を持つビジネスパートナーを表示している

Blue Ruby VMは、既存のVM環境の中で1つのプロセスとしてサンドボックス化されて動く

RubyからABAP、ABAPからRubyの双方向の呼び出しには制限もある。Ruby側からは、ABPA側のすべてにアクセスできるできるわけではなく、とりわけ、データベースアクセスに関しては、ブリッジと呼ばれるインターフェイスを通しABAPアプリケーションからのみ可能。これは、Ruby開発者が既存のプラットフォームを破壊しないようにするための設計で、こうしたコントロールがなければ、業務目的での利用は望めないだろうとしている。

Blue Rubyは、2009年3月27日時点でRubyの互換性を検証するrubyspecテストに70％程度パスしているという。ただし、OSに依存するプロセス関連や、低レベルなネットワーク関連ライブラリはなく、I/O関連も仮想化ファイルシステムのライブラリとして実装されているなどの違いがある。

このBlue Rubyプロジェクトは、動的言語をサポートするための汎用的なアプローチであるため、Blue Rubyがうまくいけば、今後はBlue PHP、Blue Pythonなども計画しているという。

すでにマイクロソフトは.NET上のRuby実装としてIronRubyを提供しているほか、サン・マイクロシステムズはJava VM上のRuby実装としてJRubyの開発を支援している。SAPのRuby言語サポート追加が実現すれば、エンタープライズ用途へのRuby普及が加速するかもしれない。

関連リンク

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