Ruby Freaks Lounge

第17回 Ruby on Railsで開発するSilverlightアプリケーション

この記事を読むのに必要な時間:およそ 3 分

はじめに

SilverlightIronRubyは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アプリケーションをさまざまな言語で記述されたコードで動かすことができます。

図1 Dynamic Language Runtime

図1 Dynamic Language Runtime

また,SilverlightではUIに関する情報とUIを制御するコードが分離されています。 UIに関する情報はXAMLというXMLフォーマットで記述されます。

制御コードはSilverlightでは「マネージコード」と呼ばれ,先述したようにさまざまな言語で記述することが可能です。XAMLとマネージコードの関係はちょうどHTMLとJavaScriptと同じような関係と考えればわかりやすいでしょう。

以下の図のXAMLとHTMLがそれぞれインターフェイスを定義し,JavaScriptとマネージコードがそれぞれのインターフェイスを制御します。

また,SilverlightのマネージコードはHTMLの要素を直接操作したり,JavaScriptの関数を叩くような処理もできます。これは点線で表現しています。

図2 UI情報と制御コードの分離

図2 UI情報と制御コードの分離

gihyo.jp上にSilverlightを紹介する記事が掲載されているので,そちらも参考にしてください。

IronRubyについて

IronRubyはSilverlight上でRubyを動かすためのインタプリタです。一般的に配布されているRubyをそのままSilverlight上で動かすことはできないため,別のRuby処理系として開発されています。

類似コンセプトのプロダクトとして,JRubyをイメージするとわかりやすいかもしれません。

IronRubyはオープンソースで開発されているので,コードを参照することも可能です。

IronRubyを動かす

本稿ではIronRubyをSilverlight上で動かすことがメインになりますが,IronRubyはRubyの処理系なので単独で動かすこともできます。まず動作確認をしてみましょう。

Note:
この部分だけはWindowsでの動作を前提としていますのでご注意ください。

インストールと動作確認

インストールは,以下の手順で実行してください。

  1. IronRubyのダウンロードページからダウンロードする
  2. zipファイルを展開(なるべくわかりやすいディレクトリがいいでしょう)
  3. コマンドプロンプトを開く
    • [スタート]⇒[プログラム]⇒[アクセサリ]⇒[コマンドプロンプト]
    • [スタート]⇒[ファイル名を指定して実行]⇒cmdと入力
  4. IronRubyを展開したディレクトリに移動
    > cd [IronRuby Directory]\bin
    
  5. 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上で動かすことも可能です。……が,これは今回の記事の趣旨からは外れるので省略します。

興味のある方は荒井省三氏の記事をご覧ください。

著者プロフィール

今村庄一(いまむらしょういち)

株式会社ドリコム所属。メイン業務は自社Webサービスの開発だが,プログラミングコンテストの運営,全文検索エンジンの研究やSilverlightでの開発などいろいろ手を出している。

コメント

コメントの記入