はじめに
SilverlightとIronRubyはMicrosoftが開発した次世代Webプラットフォーム技術です。Microsoftといえば.NET環境,というイメージが強いので普段Ruby on Railsで開発している方にとってはなじみが薄いかもしれません。
しかし,SilverlightとIronRubyを使った開発では.NET環境に依存せずに開発することも可能で,より多様なインターフェイスを持ったWebアプリケーション(RIA)を作りやすくなっています。
Ruby on Railsで開発したWebシステムにSilverlightの持つ機能を組み込むことで,より進んだWebアプリケーションを開発できるのではないかと期待しています。
今回は,SilverlightとIronRubyについて簡単に紹介を行ったあと,Ruby on Rails上にSilverlightの開発環境を構築し,簡単なアプリケーションの作成を行います。
SilverlightとIronRuby
Silverlightについて
Silverlightは2007年にリリースされたプラットフォームで,現時点での最新版は2009年7月20日にリリースされたバージョン3.0です。
Silverlightを非常にシンプルに言ってしまうと,Flashの対抗技術です。Silverlightアプリケーションを動かすためにはSilverlightを含むページにアクセスして,ブラウザにアドオンをインストールします。この手順はflashとほとんど同じです。また,提供される機能も複雑な図形やアニメーションなどFlashとの共通項は多いです。動画サポートなどSilverlightが得意としている機能もあるのですが,完成したアプリケーションの多くはFlashアプリケーションに近いといえるでしょう。
しかし,基盤となる技術やアプリケーションの開発スタイルという点ではかなり異なります。技術面で最も特徴的なのはSilverlightが多くの言語での開発を可能にしている点です。Flashでは基本的にActionScriptで開発を行うのに対して,SilverlightではMicrosoftが提供しているVisualBasicの他,今回紹介するRubyやPythonでの開発もサポートしています。
これはDynamic Language Runtime(DLR)技術を基盤として実現しています。以下の図のようにSilverlightアプリケーションをさまざまな言語で記述されたコードで動かすことができます。
また,SilverlightではUIに関する情報とUIを制御するコードが分離されています。 UIに関する情報はXAMLというXMLフォーマットで記述されます。
制御コードはSilverlightでは「マネージコード」と呼ばれ,先述したようにさまざまな言語で記述することが可能です。XAMLとマネージコードの関係はちょうどHTMLとJavaScriptと同じような関係と考えればわかりやすいでしょう。
以下の図のXAMLとHTMLがそれぞれインターフェイスを定義し,JavaScriptとマネージコードがそれぞれのインターフェイスを制御します。
また,SilverlightのマネージコードはHTMLの要素を直接操作したり,JavaScriptの関数を叩くような処理もできます。これは点線で表現しています。
gihyo.jp上にSilverlightを紹介する記事が掲載されているので,そちらも参考にしてください。
IronRubyについて
IronRubyはSilverlight上でRubyを動かすためのインタプリタです。一般的に配布されているRubyをそのままSilverlight上で動かすことはできないため,別のRuby処理系として開発されています。
類似コンセプトのプロダクトとして,JRubyをイメージするとわかりやすいかもしれません。
IronRubyはオープンソースで開発されているので,コードを参照することも可能です。
IronRubyを動かす
本稿ではIronRubyをSilverlight上で動かすことがメインになりますが,IronRubyはRubyの処理系なので単独で動かすこともできます。まず動作確認をしてみましょう。
- Note:
- この部分だけはWindowsでの動作を前提としていますのでご注意ください。
インストールと動作確認
インストールは,以下の手順で実行してください。
- IronRubyのダウンロードページからダウンロードする
- zipファイルを展開(なるべくわかりやすいディレクトリがいいでしょう)
- コマンドプロンプトを開く
- [スタート]⇒[プログラム]⇒[アクセサリ]⇒[コマンドプロンプト]
- [スタート]⇒[ファイル名を指定して実行]⇒cmdと入力
- IronRubyを展開したディレクトリに移動
> cd [IronRuby Directory]\bin
- IronRubyを実行
> ir IronRuby 0.6.0.0 on .NET 2.0.50727.3082 Copyright (c) Microsoft Corporation. All rights reserved.
これでIronRubyの実行準備は完了です。
Rubyが実行できるか確認してみましょう。
>>> 1+1
=> 2
>>> Time.now.strftime("%Y-%m-%d")
=> "2009-07-28"
>>> [1, 2, 3].map {|i| i+1}
=> [2, 3, 4]
IronRubyでSilverlightを動かす
次にSilverlight上でIronRubyを動かす実験をしてみましょう。
> cd [IronRuby Directory]\silverlight\bin > Chiron.exe /b /d:..\samples
Chiron.exeを実行するとWebサーバとブラウザが立ち上がります。samplesのディレクトリをたどって,samples\***\ruby\index.htmlを開くとサンプルが表示されます。
Silverlightではアプリケーションの配布形式としてxapという形式を使います(flashでいうところのswfに相当します)。Chiron.exeはxapファイルを動的に生成してブラウザに表示しています。xapパッケージの中にはxaml,Rubyのマネージコード,IronRubyを処理するためのライブラリなどが含まれています。app以下でソースコードを見ることができるので,いろいろ値を変えてみて動作を確認することもできます。
おまけ:IronRubyでRuby on Railsを動かす
実はRuby on RailsをIronRuby上で動かすことも可能です。……が,これは今回の記事の趣旨からは外れるので省略します。
興味のある方は荒井省三氏の記事をご覧ください。

