IronRubyでSilverlightに挑戦してみた


Visual Web Developer SP1 + Silverlight Tools RC0でSilverlight開発ができるようになった、というのであれこれ試している。コンパイルが面倒なのでC#をすっとばしてDLR。

クライアント(Webだけど)からCLRを直接たたけるというので夢が広がりまくるわけだが、なかなか敷居が高い。


Javascriptならそこそこ知識があるので楽なんだけど、なんとなく新しいものにチャレンジしたいということでRubyに挑戦しているが、いろいろ面倒な点がある。どうもDLRはManaged JScriptを前提に作られている節があって、SDKドキュメントにもRubyPythonでの作り方は書かれていない。

Dynamic Languages SDKのサイトにも特に注意書きがない。おかげで迷うこと甚だしい。


現時点で引っかかった点のまとめ。

  • VWDでXAMLGUI編集ができない>ソースをいじるとGUIプレビュー画面には反映されるけど、GUI側に部品を配置することができない。そういうものか?
  • SilverlightAPIRubyで呼ぶときはAPI名が変わる
    • FindName→find_name、GetValue→get_value、GetPosition→get_position等
  • Rubyの変数をHtmlPage.Window.Alertに渡すとき、いちいちto_sしないとエラーになる。自動で型変換してほしい。
  • XAML要素の色を変えるとき、JScriptならxxxx.Fill = "色名"で変えられるのだが、Rubyだと色名が受け入れられない。Brushオブジェクトを直接代入する必要がある。
    • xxxx.Fill = SolidColorBrush.new(Colors.Green)
  • ドラッグアンドドロップを実装しようとしたが、サンプルではXAML要素の座標をxxxx.Canvas.Top/Leftで操作している。しかしRubyでは「Canvasメソッドがない」がないと言われて呼べない。
  • GetValueメソッドを使えば読むことはできた。→xxxx.get_value(Canvas.TopProperty)
    • しかしSetValueメソッドがMethodAccessExceptionで止まる


座標を読めても書けないということがわかって、もうお手上げ。テキストの修正とかはRubyでもよくサンプルを見かけるけど、そのくらいしかできないということなのか。


UI操作はあきらめてロジック記述に集中するか……