BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース RubyConfのSilverlightのデモで紹介されたIronRuby

RubyConfのSilverlightのデモで紹介されたIronRuby

John Lam氏(source)はRubyConf(source)に出席した開発者仲間に、MicrosoftがRubyをDLRやSilverligtht(サイト・英語)上で動かそうと全力を注いでいることによって、今後の行方がどうなるかをちらっと漏らした。

デモンストレーションは他のSilverlightデモンストレーションとは異なった。そのデモンストレーションでは、SilverlightエンジンにレンダリングさせるXAMLマークアップを書く代わりに、コードはRubyで書かれていた。John Lamの言葉を引用してみよう。

これは、私の知る限りでは、コードファーストなSilverlight 1.1アプリケーションの最初の例の一つです。UIを生成するほとんどのSilverlightアプリケーションは、XAML stringを作ることによってUIを生成します。またUIはXAMLのstringをXAMLパーサーに渡しパースしてもらいます。Rubyのような美しい言語を使っているのに、stringでツリーを作るなんてもったいないことです。

XAMLマークアップは、デモでこのように見える。

<Storyboard x:Name="Timeline1" TargetName="ScaleTransform1">
  <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
      Storyboard.TargetProperty="ScaleX">
    <SplineDoubleKeyFrame KeyTime="00:00:00.0" Value="0.200"/>
    <SplineDoubleKeyFrame KeyTime="00:00:00.2" Value="0.935"/>
    <SplineDoubleKeyFrame KeyTime="00:00:00.3" Value="0.852"/>
    <SplineDoubleKeyFrame KeyTime="00:00:00.4" Value="0.935"/>
  </DoubleAnimationUsingKeyFrames>
  <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
      Storyboard.TargetProperty="ScaleY">
    <SplineDoubleKeyFrame KeyTime="00:00:00.0" Value="0.200"/>
    <SplineDoubleKeyFrame KeyTime="00:00:00.2" Value="0.935"/>
    <SplineDoubleKeyFrame KeyTime="00:00:00.3" Value="0.852"/>
    <SplineDoubleKeyFrame KeyTime="00:00:00.4" Value="0.935"/>
  </DoubleAnimationUsingKeyFrames>
</Storyboard>

Microsoftは、動的言語をDLR上で動かすことに全力を傾けた。そして、DLRを使用して、彼ら(Microsoft)は、.NET CLR上で動くIronRuby(サイト・英語)を開発している。IronRubyは、Rubyをフル実装(source)したものである。

DLR用のコードを書く上で目指すべき事は、ネーティブなコードを書けようになることであって、XAMLをハンドコーディングする必要がないように出来ることである。このことによって、開発者は、上の例で出てきたようなXAMLを書く事はやめて、以下のようなRubyのコードを書くようになるであろう。

class BounceAnimation < AnimationBase
  def initialize(scale_transform_element)
    @obj = Wpf.build(Storyboard, :name => random_name,
        :target_name => scale_transform_element) {

      add(DoubleAnimationUsingKeyFrames, :begin_time=>'00:00:00',
        :target_property => "ScaleX") {

        add(SplineDoubleKeyFrame, :key_time => '00:00:00.0', :value => 0.200)
        add(SplineDoubleKeyFrame, :key_time => '00:00:00.2', :value => 0.935)
        add(SplineDoubleKeyFrame, :key_time => '00:00:00.3', :value => 0.852)
        add(SplineDoubleKeyFrame, :key_time => '00:00:00.4', :value => 0.935)
      }

      add(DoubleAnimationUsingKeyFrames, :begin_time=>'00:00:00',
        :target_property => "ScaleY") {

        add(SplineDoubleKeyFrame, :key_time => '00:00:00.0', :value => 0.200)
        add(SplineDoubleKeyFrame, :key_time => '00:00:00.2', :value => 0.935)
        add(SplineDoubleKeyFrame, :key_time => '00:00:00.3', :value => 0.852)
        add(SplineDoubleKeyFrame, :key_time => '00:00:00.4', :value => 0.935)
      }
    }
  end
end

Rubyでの表現能力、XAMLを書く事と比較して、より簡単且つ直感的で分かりやすい。また目的を表現することはより簡単である。ここにあげた機能は、デモで紹介されたが、一部の機能はまだ利用出来ず、それが使えるようになるのは、Silverlight1.1の次のCTPがリリースされてからだろう。またSilverlight1.1で、開発者はIronRubyをブラウザ上で実行する事が出来るようになるであろう。

IronRubyに関する詳細な情報はIronRubyのWebサイト(source)に掲載されている。そして、デモで紹介されたソースコードは、John Lam氏のブログ(source)で入手可能だ。

 原文はこちらです:http://www.infoq.com/news/2007/11/ironruby-silverlight

この記事に星をつける

おすすめ度
スタイル

BT