IronRuby on Silverlight っておいしいの?

2,385 views
2,306 views

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,385
On SlideShare
0
From Embeds
0
Number of Embeds
130
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

IronRuby on Silverlight っておいしいの?

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

×