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