IronRuby on Silverlight っておいしいの?

  • 2,091 views
Uploaded on

IronRuby + Silverlightの組み合わせについての私の正直な意見をまとめました。途中からDLRの話になってる気もします。

IronRuby + Silverlightの組み合わせについての私の正直な意見をまとめました。途中からDLRの話になってる気もします。

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,091
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. I ronRuby on Silverlight っておいしいの? ⼋⽊照朗 / terurou 株式会社コスモルート DSTokai / FLOSS桜⼭ / DeLLa.JS / Python東海
  • 2. はじめに。
  • 3. 資料作りに本気を出しすぎた。 だいぶ削ったが・・・。          ,. -‐'''''""¨¨¨ヽ          (.___,,,... -ァァフ|          本題にはいる前に⾔っておくッ!           |i i|    }! }} //|          |l、{   j} /,,ィ//|       『おれはLTの資料を作っていたと思ったら         i|:!ヾ、_ノ/ u {:}//ヘ        いつのまにか30分は話せる資料ができていた』         |リ u' }  ,ノ _,!V,ハ |        /´fト、_{ル{,ィ'eラ , タ人        な… 何を⾔ってるのか わからねーと思うが      /'   ヾ|宀| {´,)⌒`/ |<ヽトiゝ        おれも何をしたのかわからなかった     ,゙  / )ヽ iLレ  u' | | ヾlトハ〉      |/_/  ハ !ニ⊇ '/:}  V:::::ヽ        頭がどうにかなりそうだった…     // 二二二7'T'' /u' __ /:::::::/`ヽ    /'´r -―一ァ‐゙T´ '"´ /::::/-‐  \    ⾼橋メソッドとか「続きはWebで」だとか    / //   广¨´  /'   /:::::/´ ̄`ヽ ⌒ヽ    そんなチャチなもんじゃあ 断じてねえ   ノ ' /  ノ:::::`ー-、___/::::://       ヽ  } _/`丶 /::::::::::::::::::::::::::  ̄`ー-{:::...       イ  もっと恐ろしいものの⽚鱗を味わったぜ…
  • 4. では、⾃⼰紹介します。
  • 5. お仕事 � 株式会社コスモルート勤務のRIA屋。 � JavaScript, Silverlightが得意。 � 研究開発要員(社内ニート?) � だったはずが、現在はSilverlight案件で 東京に⾶ばされている。
  • 6. 個⼈的な活動 � DSTokaiっていう、東海地⽅の メタコミュニティの管理⼈やってます。 � いまいち登録⼈数が増えてきてないので 登録お願いします><
  • 7. 個⼈的な活動(半分仕事とも) � Microsoft Tech Fielders Interview #23 � IronPython + Silverlightで業務アプリ � PHP逆引きレシピ(共著) � おかげさまで増刷!
  • 8. 本題に⼊るまえに ちょっと予習しましょう。
  • 9. Silverlight? 簡単に⾔えば、Microsoft版のFlash。
  • 10. Silverlight? � Flashよりもレンダリングが速い。 � .NET FrameworkのサブセットAPIが ⽤意されている。Threadも使⽤できる。 � クロスプラットフォームだけど、実際は Windows XP以降+Intel Mac のみ、 Opera以外のモダンブラウザで動作する。
  • 11. I ronRuby? .NET Framework上で動作するRuby。 Microsoftが作ってます。
  • 12. I ronRuby? � 2009/10時点の最新バージョンは 0.9.1 � まだ標準ライブラリが完動しない。 � Silverlight上での動作もサポート。 � DLR(Dynamic Language Runtime)と いうステキな機構を利⽤している。
  • 13. DLR(Dynamic Language Runtime)? .NET Framework上で動作する動的⾔語 (オレオレ⾔語)を作るための共通基盤。
  • 14. DLR(Dynamic Language Runtime)? � コンパイラフレームワークや対話シェル などの機能を提供。 � IronRubyの他にIronPython, IronScheme などがDLRを利⽤している。 � Silverlight上の動作もDLRのなかの⼈が よきに計らってくれる。
  • 15. 予習ができたので やっと本題に⼊れます。
  • 16. 時間もないので結論から。 IronRuby on Silverlightってどうなのよ?
  • 17. 正直、微妙。
  • 18. なんで?
  • 19. 微妙な理由(1) IronRubyが⾃体こなれてない。 まだ仕事で使えるレベルではない。
  • 20. 微妙な理由(2) Silverlight配布パッケージ(.xap)の サイズが⾮常に⼤きくなる。 例)Hello Worldのファイルサイズ � C#だと50KBぐらい � IronRubyだと1MB越え
  • 21. .xapファイルが肥⼤化する原因は パッケージ内にIronRubyのエンジンを 同梱しているため。
  • 22. これは解決策がありそうなんだけど、 まだ調査していない…。
  • 23. 微妙な理由(3) IronRuby(DLR⾔語)からはDataBinding することができない。けっこう痛い。 ※がんばればできなくもないが…(後述)
  • 24. DataBindingとはViewとModelを 連携させるための.NET Frameworkが ⽤意している機能のひとつ。
  • 25. DataBindingでできること。 � Modelのプロパティの値が変わると ⾃動でその値がViewに反映される。 � Viewで⼊⼒した値が⾃動でModelに 反映される。 � 要はView-Model間のGet/Setを ⾃動でやってくれるもの。
  • 26. DataBindingのコード例。 かなり省略してます。 � View定義 <TextBox x:Name="NameTextBox" Value="{Binding Name}" /> � Viewに結合(バインディング) NameTextBox.DataContext = person;
  • 27. DataBindingの内部実装はリフレクションで オブジェクトを操作しているだけ。 ※厳密にはリフレクションじゃないんだけど  イメージとして。
  • 28. リフレクションなので.NET Framework上の 静的型(クラス)が必要。
  • 29. ここで問題となるのが、 IronRuby上のオブジェクトと .NET Framework上のオブジェクトが 等価ではないこと。
  • 30. IronRuby上で、Nameというプロパティを 持ったPersonクラスを定義したとしても、 .NET FrameworkからはIRubyObjectという ラップされたオブジェクトにしか⾒えない。
  • 31. なので、IronRuby上のオブジェクトは そのままBindingすることができない。
  • 32. 別にDataBinding使わなくても 単純に代⼊できればプログラムは 動くんですが…。代⼊さえできれば…。
  • 33. Silverlightのけっこうな数のコントロールは DataBindingが必須。 � DataGridの場合、セルを直接操作する ことができない。 � バインドしているModelの⽅を操作する 必要がある。
  • 34. どうしてもIronRubyからDataGridなどを 使いたい場合 � C#などでバインドするクラスを⽤意し、 それをIronRubyから参照する � 実⾏時に動的に.NET Frameworkの クラスを⽣成する。 � MSIL(.NET マシンコード)の知識が 必要になる。
  • 35. めんどくさいですね。
  • 36. 散々DISったけど、 いいところもありますよ。
  • 37. いいところ(1) コンパイルしなくてもいい。
  • 38. C#なんかで開発する場合だと、 細かい修正をして動作確認を繰り返す場合、 「F5押す→コンパイル待ち」となるので そこらへんはムカついてくる。
  • 39. 以上。
  • 40. 今⽇のまとめ。
  • 41. DLR⾔語でSilverlightをやりたいなら、 素直にI ronPythonにしとけ。
  • 42. 特別な感情(愛など)がないなら、 C#で開発したほうが無難ですよ? はまらないし。
  • 43. I love DLR.
  • 44. ご清聴ありがとうございました。