InfoQ

News

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

作者 Robert Bazinet, 翻訳者 長部 広太 投稿日 2007年11月20日 午前2時10分

コミュニティ
.NET,
Ruby
トピック
.NETフレームワーク,
動的言語,
Silverlight
タグ
IronRuby,
RubyConf,
DLR

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

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

インタビュー: Emmanuel Bernard氏にBean Validation仕様について聞く

Bean Validationフレームワークの初期ドラフトに関する以前の記事に続き、InfoQは専門家グループが求めているコミュニティの関与と提案について理解を深めるため、Emmanuel Bernard氏と対談しました。

ポーカーに学ぶ、ソフトウェア開発のレッスン

ポーカーは他のトピックにも広く適用できるような数少ない教えを私にもたらしてくれたと信じています。実際私はソフトウェアを開発すればするほど、これら二つの仕事は非常に似ていると言う確信の度合いを深めています。

InfoQがBPEL4PEOPLEの代表と対談

恒例の「バーチャルパネルセッション」で、InfoQは新しいOASIS BPEL4People技術委員会の代表と対談をし、この作業が何故必要であるかについて彼らのフィードバックを得る機会を得ました。

CLR上でのドメイン特化言語の構築

ドメイン特化言語は最近非常に人気が高まっている話題です。これは恐らく、Rails現象に起因していると考えられます。Railsの人気と、Railsにおけるドメイン特化言語(以降、DSL)の大規模な使用は、DSLに対する広範な関心を呼び起こしました。

Rubyのデバッガを調査

Rubyには、Rubyコミュニティの内外で広く知られている誤解が一つある。Rubyにはデバッガがないという誤解だ。しかし、Rubyにデバッガが無いということは誤解なのだ。実際のところ、Rubyにはデバッガ用のツールがある。

改善、成功と失敗: 中国でのスクラム導入

InfoQ Chinaは中国でスクラム(Scrum)がどのように導入されているかに関する調査を行いました。私たちはこの記事のために5つの事例をピックアップしました。これらの事例は、異なるさまざまな会社によるもので、異なるプロセスが利用され、異なる結果が生じたものです。

洗練されたサービス契約による見事なスケーラビリティ

Udi Dahan氏のチームが、サービス契約を利用した2度の失敗を避け、複数の側面でのスケーラビリティに対処しています。

塹壕より Scrum と XP

Agileを始めるときは、とても分かりにくいです。一体どこから手をつければいいのでしょう?この物語はそんな皆様の一助になれば幸いです。本書は、スウェーデンにある、とある40人ほどの会社で、どのようにAgileとXPを実行したか、プロセス改善を行ったかを記しています。