Microsoftがオープンソースプロジェクトとして開発しているIronRubyが初のバイナリをリリースしました。
http://rubyforge.org/projects/ironruby
まだ、アルファ版ということですし、C版のRubyや、JRubyなどに比較しても「何倍も遅い」状態ですが、標準ライブラリを添付したバイナリリリースの登場は、大きなマイルストーンだったと思います。
開発者のJohn Lam氏がブログ("IronRuby at OSCON":http://www.iunknown.com/2008/07/ironruby-at-oscon.html )で紹介していますが、OSCONで発表された中には、オープンソースのリポジトリサービスとして急速に普及しているGithubで、Microsoft以外の開発者がコントリビュートするためのプロジェクトを立ち上げていくということです。第1弾は、SilverlightをRailsアプリケーションに組み込むためのPluginだそうです。
さらに、Microsoftにとって画期的なのは、IronRubyの開発中に行った、RubySpecのコードの修正版を、RubySpecプロジェクトにコントリビュートするということです。Microsoftが自社以外のオープンソースプロジェクトにコードを提供するということは、「Microsoft的には」大変な事だったようです。
MicrosoftがSilverlight 2.0 beta 1をリリースしました。
http://www.microsoft.com/silverlight/resources/installationfiles.aspx?v=2.0
IronRuby開発者のJohn Lam氏がMIX08でIronRubyについて講演するそうですが、氏のブログでは、早速IronRubyでのSilverlightプログラミングのチュートリアルが掲載されています。
Dynamic Silverlight Part 1: Hello, World!
Silverlight 2.0は別名DSL(Dynamic Silverlight)なのだそうです。DLR(Dynamic Language Runtime)を搭載しているからでしょう。
Sun MicrosystemsでJRubyを開発しているCharles Nutterさんのブログ"Headius"に、Microsoftが主催する言語開発者のためのシンポジウム"Lang.NET"に参加したことがかいてありました。
Lang.NET 2008: Day 1 Thoughts
このシンポジウムは、Microsoftが主催していることでも分かるとおり、もちろん.NET framework上への言語実装を行っている人たちが中心のイベントですが、JavaやPHPの人たちも参加していたり、MicrosoftのSilverlightをLinux上のMonoを使って移植しているMoonlightの開発者が参加していたり、異なるプラットフォーム上の言語開発者の交流の場となっているようです。
NutterさんとJohn Roseさんは、JVM上でのJRubyの実装についての講演を行ったようですが、MicrosoftがDLRでやろうとしている言語を問わない構文木の動的な最適化手法に興味を持っているようです。もっとも、すでにJVMでは動的な最適化の機能が組み込まれているため、すぐにどうのこうのということはないようですが。
このLang.NETについては、MicrosoftでIronRubyを開発中のJohn Lamさんもブログに記事をかいていました。
Lang.net wrap-up
前回Lang.NETが開催された時には、ゲストとして参加したのだけれど、今回は主催者側での参加になった。いろいろな言語開発者が自分たちのやっていることについて話し、それについて別の開発者が意見をいうという交流が持てるのは非常にうれしいことだという趣旨の事がかいてありました。
最近のLamさんのブログには、IronRubyの進捗状況がかかれていないので、検索をしていたところ、InfoQに今年の1月に行われたインタビュー記事が目に止まりました。Lamさんのブログに短く紹介されていたものの未読だったインタビューです。
The State of IronRuby with John Lam
この記事によると、IronRuby"1.0"のリリース目標は「2008年後半」だそうですが、2008年の第1四半期はSilverlight2.0のベータ(アルファ?)とともに、リリースが予定されているそうです。非常に楽しみになってきました。ただし、開発している方は、DLRやSilverlightも並行開発中で、時々仕様が変わるので同期をとるのが大変だそうです。
また、Ruby on Railsを動作させることは目標にあるのかとインタビュアーに聞かれて、「もちろんだ。Railsは"1.0"を出すための重要な要素だ」と答えていました。一部には「Microsoftは自分たちのASP.NETと競合するRailsをサポートするつもりはなく、SilverlightのためにIronRubyを作っているだけだ」との見かたもありましたが、状況は変わっているようです。Microsoft自身もASP.NET用のMVCフレームワークをリリースしていますし。
Microsoft ASP.NET 3.5 Extensions Preview
ところで、Lamさんのインタビューで一番驚いたのは、IronRubyのコントリビュータにCharles Nutterさんの名前があるという話しが出ていたからです。Nutterさんは、JRubyをJVM上に実装する際の経験を色々と伝授してくれているのだそうです。
Lang.NETの感想をまとめたブログエントリをかいたTed Newardさんも「SunとMicrosoftの連中が、汚いホワイトペーパーの応酬なしに言語実装について議論しているのを見るのは新鮮な感じがする」といっていますが、Rubyがその仲介になっている気がします。さすが「愛があるRuby」だ。
Highlights of the Lang.NET Symposium, Day One
IronRubyのホームページができました。
http://ironruby.rubyforge.org/
John Lamさんの手作りのようです。
上記のページに、John LamさんがアップしたIronRubyのビルド方法のスクリーンキャプチャがリンクされています。
自宅ではMacで開発しているらしいJohn Lam氏ですが、このデモはVistaですね。.NET Frameworkのみでのビルド方法と、Visual C# 2005 Express Editionでのビルド方法を紹介しています。
ところで、IronRubyやDLRはMicrosoft Permissive Licenseで公開されていますが、OSIに提出したオープンソースライセンスとしての認定申請について、Office Open XMLをISOに認めさせるための政治活動があまりにひどいため、OSIのEric S. Raymondが反対しているとか。なんだかなー
Microsoftが開発中のIronRubyが、当初の予定通り、8月末にRubyForgeで公開されました。
John Lam氏のブログアナウンス
IronRuby on Rubyforge!
RubyForgeのIronRubyのページ
上記のページを見ても何もファイルリリースがありませんが、SCMからSubversionで取得できます。
私のマシンで取得して、ディレクトリで
rake compile
でコンパイルできました。
早速テストプログラムを動かそうとすると、
System.NotImplementedException: Statement transformation not implemented: IfStatement
そうか、if分もまだインプリメントされていないのですね・・・
これもIronRuby関連ですが、Scott Hanselmanさんが、ブログで公開しているIronRubyのサンプルコードの記事です。
WPF Sample in IronRuby talking via C# to Wesabe
銀行などの残高照会ができるWesabeのAPIを呼び出すC#のライブラリを使うUIをIronRubyで作っています。
ところで、この記事で知ったのですが、Windowsのメモ帳(Notepad.exe)の拡張版のようなオープンソースソフトNotepad2に、Rubyのシンタックスハイライト機能をつけたものを、Scottさんが公開していました。
New Release of Notepad2 – Updated (again) with Ruby Support
Shift-JISなどのエンコーディングはありませんが、UTF-8にして、表示フォントをMSゴシックにすれば、Rubyのエディタとして使えそうです。もっとも、WindowsのコマンドプロンプトはUTF-8をサポートしていないので、Rails専用のようになってしまいそうですが。
IronRubyの情報を探しているうちに、コミュニティサイトができているを発見しました。
rubydoes.net
まだまだポストは少ないですが、これからが楽しみです。
MicrosoftのJohn Lamさんが、IronRubyのファーストリリースを発表しました。
A first look at IronRuby
早速ソースをダウンロードして、添付のBuild.cmdを実行すると、あっけないほど簡単にコンパイル&ビルドが完了しました。私のPentium III Mの遅いノートでも1,2分でしょうか。
irbに相当するのがrbxというコマンドなのですね。
ただのインタプリタをいじっていても面白くないので、Scott Guthrieさんのブログ記事を見て、WPF(Windows Presentation Framework)をRubyで使うサンプルを実行。
First Look at IronRuby
あれ?wpfがないといって怒ってる?調べてみると、"wpfはScottさんが作ったRubyのソースで、長ったらしいWPFのライブラリのrequireをまとめたもの":http://www.scottgu.com/blogposts/ironruby/wpf.zip でした。
これを同じディレクトリにコピーしてやると、おおっ!成功。起動はちょっと遅いけど、確かにRubyらしいコードでWPFが操作できます。WPFはまったくの素人ですが、モダンなUIのアプリがRubyで作成できるのはうれしいことです。
なお、IronRubyは8月末をめどにRubyForgeで公開され、ソースのコントリビュートも受け付けるとか。最初はDLRの仕様が流動的なのでライブラリだけ受付だそうですが、やがてはIronRuby自体へのコントリビュートも可能になるそうです。
John Lamさんは今週のOSCONでセッションを予定とか。これに間に合わせるためにがんばってたんですね。お疲れ様です。
オーストラリアのクイーンズ ランド 工科大学が開発している"Gardens Point Ruby.NET":http://plas.fit.qut.edu.au/Ruby.NET/ がベータ0.8となりました。
C#などの.NET Framework上の他言語との相互呼び出しを制限つきながらサポートしたようです。
ところで、MicrosoftのIronRubyについては、JRubyの開発者であるOla Bini氏が、「Microsoftの社員はオープンソースソフトウェアのコードを見ることを禁止されているため、MRI(Matz Ruby Implementation:本家Ruby)との互換性を保つのは難しいのではないか」との意見を表明しています。
There can be only one, a tale about Ruby, IronRuby, MS and whatnot
これに対してIronRubyのJohn Lam氏は、MicrosoftがGardens Point Ruby.NETのライセンスを取得したことを明らかにし、Ruby.NETのスキャナとパーサーを使えば、IronRubyでのフル実装はそれほど難しくないと反論しています。
IronRuby and Ruby.NET
それにしても、Microsoftは著作権訴訟を避けるためだそうですが、厳しいルールですね。John Lam氏たちもフラストレーションがたまりそうですね。
RubyCLRの開発者で、今年1月にMicrosoftに加わり、MIXで正式発表されたIronRubyの開発を担当しているJohn Lam氏が、MicrosoftのRubyへのコミットメントについてブログに書いています。
Microsoft and IronRuby
Microsoftに入社する際の最終面接者で、.NET Platform全体の実質的責任者であるScott Guthrie氏も、CLR上で動作する「一級品」のRubyを本気で出そうと思っているそうです。IronRubyは7月のOSCONでファーストリリースを予定しているらしいです。
このJohn Lam氏のブログエントリは、Martin Fowler氏のブログ記事"RubyMicrosoft":http://www.martinfowler.com/bliki/RubyMicrosoft.html への回答の意味を込めているようです。
Martin Fowler氏は、「MicrosoftのRubyが、互換性のあるフルバージョンになるのかどうかが気になる」とし、「社員がオープンソースソフトをダウンロードすることを禁止するような会社で、それはむずかしいのではないか」というJRubyのOla Bini氏の意見を紹介しています。
「最近、以前にもまして、アルファギークと呼ばれる人たちのMicrosoft離れが進んでいる」「特に開発ツールの分野でのコミュニティ無視はアジャイル開発者を失望させている」と言う趣旨の感想を述べ「Rubyが、Microsoftがコミュニティとうまくやっていけるかの試金石になるだろう」としています。