44

Click here to load reader

IronRuby on Silverlight っておいしいの?

  • Upload
    terurou

  • View
    2.161

  • Download
    5

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: IronRuby on Silverlight っておいしいの?

IronRuby on Silverlightっておいしいの?

⼋⽊照朗 / terurou株式会社コスモルート

DSTokai / FLOSS桜⼭ / DeLLa.JS / Python東海

Page 2: IronRuby on Silverlight っておいしいの?

はじめに。

Page 3: IronRuby on Silverlight っておいしいの?

資料作りに本気を出しすぎた。だいぶ削ったが・・・。

         ,. -‐'''''""¨¨¨ヽ         (.___,,,... -ァァフ|          本題にはいる前に⾔っておくッ!          |i i|    }! }} //|         |l、{   j} /,,ィ//|       『おれはLTの資料を作っていたと思ったら        i|:!ヾ、_ノ/ u {:}//ヘ        いつのまにか30分は話せる資料ができていた』        |リ u' }  ,ノ _,!V,ハ |       /´fト、_{ル{,ィ'eラ , タ人        な… 何を⾔ってるのか わからねーと思うが     /'   ヾ|宀| {´,)⌒`/ |<ヽトiゝ        おれも何をしたのかわからなかった    ,゙  / )ヽ iLレ  u' | | ヾlトハ〉     |/_/  ハ !ニ⊇ '/:}  V:::::ヽ        頭がどうにかなりそうだった…    // 二二二7'T'' /u' __ /:::::::/`ヽ   /'´r -―一ァ‐゙T´ '"´ /::::/-‐  \    ⾼橋メソッドとか「続きはWebで」だとか   / //   广¨´  /'   /:::::/´ ̄`ヽ ⌒ヽ    そんなチャチなもんじゃあ 断じてねえ  ノ ' /  ノ:::::`ー-、___/::::://       ヽ  }_/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::...       イ  もっと恐ろしいものの⽚鱗を味わったぜ…

Page 4: IronRuby on Silverlight っておいしいの?

では、⾃⼰紹介します。

Page 5: IronRuby on Silverlight っておいしいの?

� 株式会社コスモルート勤務のRIA屋。� JavaScript, Silverlightが得意。

� 研究開発要員(社内ニート?)� だったはずが、現在はSilverlight案件で 東京に⾶ばされている。

お仕事

Page 6: IronRuby on Silverlight っておいしいの?

� DSTokaiっていう、東海地⽅の メタコミュニティの管理⼈やってます。� いまいち登録⼈数が増えてきてないので 登録お願いします><

個⼈的な活動

Page 7: IronRuby on Silverlight っておいしいの?

� Microsoft Tech Fielders Interview #23� IronPython + Silverlightで業務アプリ

� PHP逆引きレシピ(共著)� おかげさまで増刷!

個⼈的な活動(半分仕事とも)

Page 8: IronRuby on Silverlight っておいしいの?

本題に⼊るまえにちょっと予習しましょう。

Page 9: IronRuby on Silverlight っておいしいの?

簡単に⾔えば、Microsoft版のFlash。

Silverlight?

Page 10: IronRuby on Silverlight っておいしいの?

� Flashよりもレンダリングが速い。� .NET FrameworkのサブセットAPIが ⽤意されている。Threadも使⽤できる。� クロスプラットフォームだけど、実際は Windows XP以降+Intel Mac のみ、 Opera以外のモダンブラウザで動作する。

Silverlight?

Page 11: IronRuby on Silverlight っておいしいの?

.NET Framework上で動作するRuby。Microsoftが作ってます。

IronRuby?

Page 12: IronRuby on Silverlight っておいしいの?

� 2009/10時点の最新バージョンは 0.9.1� まだ標準ライブラリが完動しない。

� Silverlight上での動作もサポート。� DLR(Dynamic Language Runtime)と いうステキな機構を利⽤している。

IronRuby?

Page 13: IronRuby on Silverlight っておいしいの?

.NET Framework上で動作する動的⾔語(オレオレ⾔語)を作るための共通基盤。

DLR(Dynamic Language Runtime)?

Page 14: IronRuby on Silverlight っておいしいの?

� コンパイラフレームワークや対話シェル などの機能を提供。� IronRubyの他にIronPython, IronScheme などがDLRを利⽤している。� Silverlight上の動作もDLRのなかの⼈が よきに計らってくれる。

DLR(Dynamic Language Runtime)?

Page 15: IronRuby on Silverlight っておいしいの?

予習ができたのでやっと本題に⼊れます。

Page 16: IronRuby on Silverlight っておいしいの?

時間もないので結論から。IronRuby on Silverlightってどうなのよ?

Page 17: IronRuby on Silverlight っておいしいの?

正直、微妙。

Page 18: IronRuby on Silverlight っておいしいの?

なんで?

Page 19: IronRuby on Silverlight っておいしいの?

微妙な理由(1)

IronRubyが⾃体こなれてない。まだ仕事で使えるレベルではない。

Page 20: IronRuby on Silverlight っておいしいの?

Silverlight配布パッケージ(.xap)のサイズが⾮常に⼤きくなる。例)Hello Worldのファイルサイズ

� C#だと50KBぐらい� IronRubyだと1MB越え

微妙な理由(2)

Page 21: IronRuby on Silverlight っておいしいの?

.xapファイルが肥⼤化する原因はパッケージ内にIronRubyのエンジンを同梱しているため。

Page 22: IronRuby on Silverlight っておいしいの?

これは解決策がありそうなんだけど、まだ調査していない…。

Page 23: IronRuby on Silverlight っておいしいの?

IronRuby(DLR⾔語)からはDataBindingすることができない。けっこう痛い。※がんばればできなくもないが…(後述)

微妙な理由(3)

Page 24: IronRuby on Silverlight っておいしいの?

DataBindingとはViewとModelを連携させるための.NET Frameworkが⽤意している機能のひとつ。

Page 25: IronRuby on Silverlight っておいしいの?

� Modelのプロパティの値が変わると ⾃動でその値がViewに反映される。� Viewで⼊⼒した値が⾃動でModelに 反映される。� 要はView-Model間のGet/Setを ⾃動でやってくれるもの。

DataBindingでできること。

Page 26: IronRuby on Silverlight っておいしいの?

� View定義<TextBox x:Name="NameTextBox"

Value="{Binding Name}" />

� Viewに結合(バインディング)NameTextBox.DataContext = person;

DataBindingのコード例。かなり省略してます。

Page 27: IronRuby on Silverlight っておいしいの?

DataBindingの内部実装はリフレクションでオブジェクトを操作しているだけ。※厳密にはリフレクションじゃないんだけど イメージとして。

Page 28: IronRuby on Silverlight っておいしいの?

リフレクションなので.NET Framework上の静的型(クラス)が必要。

Page 29: IronRuby on Silverlight っておいしいの?

ここで問題となるのが、IronRuby上のオブジェクトと.NET Framework上のオブジェクトが等価ではないこと。

Page 30: IronRuby on Silverlight っておいしいの?

IronRuby上で、Nameというプロパティを持ったPersonクラスを定義したとしても、.NET FrameworkからはIRubyObjectというラップされたオブジェクトにしか⾒えない。

Page 31: IronRuby on Silverlight っておいしいの?

なので、IronRuby上のオブジェクトはそのままBindingすることができない。

Page 32: IronRuby on Silverlight っておいしいの?

別にDataBinding使わなくても単純に代⼊できればプログラムは動くんですが…。代⼊さえできれば…。

Page 33: IronRuby on Silverlight っておいしいの?

Silverlightのけっこうな数のコントロールはDataBindingが必須。

� DataGridの場合、セルを直接操作する ことができない。� バインドしているModelの⽅を操作する 必要がある。

Page 34: IronRuby on Silverlight っておいしいの?

どうしてもIronRubyからDataGridなどを使いたい場合

� C#などでバインドするクラスを⽤意し、 それをIronRubyから参照する� 実⾏時に動的に.NET Frameworkの クラスを⽣成する。� MSIL(.NET マシンコード)の知識が 必要になる。

Page 35: IronRuby on Silverlight っておいしいの?

めんどくさいですね。

Page 36: IronRuby on Silverlight っておいしいの?

散々DISったけど、いいところもありますよ。

Page 37: IronRuby on Silverlight っておいしいの?

いいところ(1)

コンパイルしなくてもいい。

Page 38: IronRuby on Silverlight っておいしいの?

C#なんかで開発する場合だと、細かい修正をして動作確認を繰り返す場合、「F5押す→コンパイル待ち」となるのでそこらへんはムカついてくる。

Page 39: IronRuby on Silverlight っておいしいの?

以上。

Page 40: IronRuby on Silverlight っておいしいの?

今⽇のまとめ。

Page 41: IronRuby on Silverlight っておいしいの?

DLR⾔語でSilverlightをやりたいなら、素直にIronPythonにしとけ。

Page 42: IronRuby on Silverlight っておいしいの?

特別な感情(愛など)がないなら、C#で開発したほうが無難ですよ?はまらないし。

Page 43: IronRuby on Silverlight っておいしいの?

I love DLR.

Page 44: IronRuby on Silverlight っておいしいの?

ご清聴ありがとうございました。