はじめに
SilverlightとIronRubyはMicrosoftが開発した次世代Webプラットフォーム技術です。Microsoftといえば.NET環境、
しかし、
Ruby on Railsで開発したWebシステムにSilverlightの持つ機能を組み込むことで、
今回は、
SilverlightとIronRuby
Silverlightについて
Silverlightは2007年にリリースされたプラットフォームで、
Silverlightを非常にシンプルに言ってしまうと、
しかし、
これはDynamic Language Runtime

また、
制御コードはSilverlightでは
以下の図のXAMLとHTMLがそれぞれインターフェイスを定義し、
また、

gihyo.
IronRubyについて
IronRubyはSilverlight上でRubyを動かすためのインタプリタです。一般的に配布されているRubyをそのままSilverlight上で動かすことはできないため、
類似コンセプトのプロダクトとして、
IronRubyはオープンソースで開発されているので、
IronRubyを動かす
本稿ではIronRubyをSilverlight上で動かすことがメインになりますが、
- 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.
Silverlightではアプリケーションの配布形式としてxapという形式を使います
おまけ:IronRubyでRuby on Railsを動かす
実はRuby on RailsをIronRuby上で動かすことも可能です。……が、
興味のある方は荒井省三氏の記事をご覧ください。
Ruby on Rails上にSilverlight開発環境を作る
さて、
プラットフォームは何でも構いません。普段Ruby on Railsを利用している環境をご利用ください。
SilverStarプラグイン
Ruby on RailsでSilverlightアプリケーションを作るには、
- git環境
(githubにソースがあるので) - rubyzip
(gem install rubyzipでインストールできます)
> cd RAILS_ROOT > ./script/plugin install git://github.com/imasho/silverstar.git remote: Counting objects: 40, done. remote: Compressing objects: 100% (34/34), done. remote: Total 40 (delta 4), reused 0 (delta 0) Unpacking objects: 100% (40/40), done. From git://github.com/imasho/silverstar * branch HEAD -> FETCH_HEAD > ./script/generate silverlight test create app/silverlight create lib/silverlight create public/resources create lib/silverlight/silverlight.rb create app/silverlight/test.rb readme readme.txt [XAML templates] app/views/**/*.xaml.erb [Images, sounds, and movies] public/resources [IronRuby scripts] app/silverlight [IronRuby modules] lib/silverlight
これでSilverlightアプリケーションの開発準備はOKです。
ここで、
- 1. RAILS_
ROOT/ app/ views/*.xaml. erb - Silverlightのインターフェイスをxaml形式で記述します。ERBによってレンダリングされるので、
通常のviewと同様にコードを埋め込んで実行することができます。 - 2. RAILS_
ROOT/ app/ silverlight/*.rb - Silverlightのマネージコードです。このコードはSilverlightのxapパッケージの一部としてブラウザ上で実行するため、
ここに記述するRubyのコードはSilverlightライブラリを使って書きます。 - 3. RAILS_
ROOT/ public/ resources/ - 画像や動画を置くためのディレクトリです。
- 4. RAILS_
ROOT/ lib/ silverlight. rb - プラグインが自動的に生成します。2. のマネージコードを記述するのに便利な関数が定義されています。
- 5. RAILS_
ROOT/ lib/*.rb - 自分でライブラリを書きたい場合はここにファイルを作成すると、
Silverlightの実行データを作成するときに同時に取り込まれます。
Hello! Silverlight
実際に動く単純なSilverlightアプリケーションを作ってみます。
controllerを定義
アプリケーションに必要なコントローラを定義しましょう。
$ ./script/ generate controller top index $ ./ script/ generate controller silverlight
Silverlightの配布ファイルとHTMLは別々になのでコントローラを分けています。次にapp/
class SilverlightController < ApplicationController
def test
render_silverlight :script => "test"
end
end
render_
xamlを作成
次にxamlを作成します。xamlの記法についてはこちらのページをご覧ください。ここではルート要素を描画領域を表現するCanvasとして、
<Canvas
x:Class="System.Windows.Controls.Canvas"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="600" Height="460"
Background="White"
x:Name="root">
<TextBlock Text="Hello! Silverlight!!" FontSize="64" />
</Canvas>
ここで、
マネージコードを確認
次にマネージコードであるRAILS_
require "lib/silverlight"
require "mscorlib"
class App < SilverlightApplication
use_xaml(:type => Canvas, :name => "app")
def initialize
end
end
$app = App.new
HTMLタグを埋め込む
最後に呼び出し側のHTMLにSilverlightを呼び出すタグを埋め込みます。先ほど作成したRAILS_
<object data="data:application/x-silverlight," type="application/x-silverlight-2" width="600px" height="400px">
<param name="source" value="/silverlight/test/1.xap" />
</object>
これで作業完了です。すべての作業がRails上で完結しています。アクセスしてみましょう。
http://[host]/top/index
Silverlight読み込み画面の後、

次回について
Silverlightを操作するための詳しいリファレンスはこちらにあります。
ここにはRubyのサンプルコードが無く、 次回は.NET FrameworkのライブラリをRubyから利用してSilverlightアプリケーションに図形、