Your SlideShare is downloading. ×
IronRuby on Silverlight っておいしいの?
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

IronRuby on Silverlight っておいしいの?

2,127
views

Published on

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

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,127
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
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. ご清聴ありがとうございました。

×