IronRubyが最初にMicrosoftから発表されたのはMIXカンファレンス’07だった。それから2年たった今、バージョン1.0はどうなっているのかとディベロッパたちは怪訝に思っている。InfoQが2008年1月にJohn Lam My氏にインタビューした際、その年の第2半期のリリースを目指しているという話だったが、そうはならなかった。
とはいえディベロッパたちは物事には思っていたより時間がかかることが常であることを知っている。
近頃MicrosoftでIronRubyプロジェクトのプログラムマネージャを務めるJimmy Schementi氏が“IronRuby 0.9”と題する講演をOSCON 2009でおこなった。その中で氏はIronRuby 1.0に向けてのMicrosoftの進捗を概説した。IronRubyは2008年当初にJohn Lam氏と話しをした時から比べるとずっと多くのディベロッパたちに使われてきた。重要なアップデートもいくつかあったので、それをおさらいしてみよう。
IronRuby 0.6
2009年7月の始めにリリースされ、言語の発展において重要なマイルストーンとなった。Jimmy Schementi氏は自信のブログでこう説明している。
このリリースではパフォーマンスが一番の焦点でした。起動時間を短くし標準の型の最適化をおこないました。Rubyとの互換性(Cucumberも動きます!)や.NET相互運用性も向上しています。
IronRuby 0.9
氏のOSCONでの講演の焦点は、主要機能のうち最後に残っていたもの(最近の氏のブログで概要が示されている)やIronRubyのキーコンポーネントが0.9に含まれていること、そしてディベロッパにとってIronRubyが重要であるということだった。
クロスプラットフォームでクロスブラウザなRuby実装であることについてこう述べている。
.NETと聞いた時(まずはトップレベルのドメイン名のことかと思うでしょうが、“Microsoft”のそれだと判った時)すぐに“Windows”のことを考えるでしょう。しかしそれは現実でないことをMiguel(Monoの創設者)とMonoチームが示しています。彼らはLinuxでもMac OSでもWindowsでも動く.NETのオープンソース実装を作りだしました。そしてMoonlightと呼ばれるSilverlight 2のオープンソース実装も作っているところで、これによりSiliverlightアプリケーションがMozillaのプラグインアーキテクチャをサポートするLinuxブラウザでも動くようになります(Silverlight 2自体はIntel MacやWindowsをサポートしています)。IronRubyは.NETでもSilverlightでも使えるので、MonoでもMoonlightでも使えることになります。
IronRubyは.NETと直接連携するため、既存の.NETコードをIronRubyで利用することも可能です。つまり、Windows Formsであれ、Windows Presentation Foudation(WPF)であれ、GTK(#)であれ、どんなフレームワークでもIronRubyで利用できるということであり、それは.NETとMonoと(それぞれ)がそれらフレームワークに対応するCLIバインドを備えているから可能なのです。MonoにもWindows FormsをGTKに変換する形でWindows Forms実装があり、.NETでもMonoでも修正なしに同じアプリケーションが実行可能です。
動的・静的な言語相互運用性についてはこう述べている。
IronRubyは.NETフレームワークのAPIと非常によく連携するため、“相互運用性”ということを意識しないでC#やVBのコードをIronRubyから呼び出すことができます。C#からもDynamic Language Runtime(DLR) Hosting APIを通じてIronRubyを呼び出せます。しかし実際には、.NET 4.0のdynamicを使ったメソッドディスパッチはC#の一部分であるため、C#のメソッド呼び出しと同じくらい簡単にC#からのIronRubyの呼び出しがおこなえます。IronRubyはDLR上に構築されているため、他のDLR言語とも相互運用が簡単で、すでにPythonとRubyが(IronPythonとIronRubyによって)一緒に使え、これから出てくるDLR言語とも一緒に使うことができます。
パフォーマンスの向上も重要で、たとえばRuby on Railsの起動に80秒以上かかっていたのが約20秒までになった。また現在のIronRubyがRubySpecテストスイートにもきちんと対応していることにも注目すべきだろう。
互換性は今のところ非常によい出来になっています。RubySpecを(85%で)パスし、Rails、Rake、RSpec、RubyGemsといった主要なRubyフレームワークのテストスイートはチェックイン毎に走らせています。そしてかなり大規模な複数のRailsアプリケーションを動かすこともできています。互換性のバグが増えるようであれば、それは間違いなく1.0までのリリースにおいて重点となります。
またこうも述べている。
今度のバージョンの目玉はWin32OLEライブラリのサポートで、MRI(Matz' Ruby Implementation)と同じように既存のRubyアプリケーションでCOMとのやり取りができるようになります。
パフォーマンスの良さはMRIのような他の実装と比べた時にも注目に値する。
パフォーマンスも大変良好です。今回のバージョンをRubyのベンチマークスイートにかけたところ、ほとんどベンチマークにおいてMRIの2倍以上の成果をあげました。この結果はIronRuby 0.9が出るのと同時にhttp://ironruby.infoに掲載します。
IronRuby 1.0
IronRuby 1.0はいつリリースになるか?それはコミュニティ次第だろう。コミュニティがIronRuby 1.0になったというまでは、以降の改良バージョンは0.9.1や0.9.2というようにリリースされるだろう。
IronRubyの情報、ダウンロード、活動参加、必要なサポートはIronRubyのウェブサイトを参照いただきたい。