SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
I ronRuby on Silverlight
        っておいしいの?

                  ⼋⽊照朗 / terurou
                     株式会社コスモルート
DSTokai / FLOSS桜⼭ / DeLLa.JS / Python東海
はじめに。
資料作りに本気を出しすぎた。
          だいぶ削ったが・・・。
         ,. -‐'''''""¨¨¨ヽ
         (.___,,,... -ァァフ|          本題にはいる前に⾔っておくッ!
          |i i|    }! }} //|
         |l、{   j} /,,ィ//|       『おれはLTの資料を作っていたと思ったら
        i|:!ヾ、_ノ/ u {:}//ヘ        いつのまにか30分は話せる資料ができていた』
        |リ u' }  ,ノ _,!V,ハ |
       /´fト、_{ル{,ィ'eラ , タ人        な… 何を⾔ってるのか わからねーと思うが
     /'   ヾ|宀| {´,)⌒`/ |<ヽトiゝ        おれも何をしたのかわからなかった
    ,゙  / )ヽ iLレ  u' | | ヾlトハ〉
     |/_/  ハ !ニ⊇ '/:}  V:::::ヽ        頭がどうにかなりそうだった…
    // 二二二7'T'' /u' __ /:::::::/`ヽ
   /'´r -―一ァ‐゙T´ '"´ /::::/-‐  \    ⾼橋メソッドとか「続きはWebで」だとか
   / //   广¨´  /'   /:::::/´ ̄`ヽ ⌒ヽ    そんなチャチなもんじゃあ 断じてねえ
  ノ ' /  ノ:::::`ー-、___/::::://       ヽ  }
_/`丶 /::::::::::::::::::::::::::  ̄`ー-{:::...       イ  もっと恐ろしいものの⽚鱗を味わったぜ…
では、⾃⼰紹介します。
お仕事
� 株式会社コスモルート勤務のRIA屋。
 � JavaScript, Silverlightが得意。
� 研究開発要員(社内ニート?)
� だったはずが、現在はSilverlight案件で
東京に⾶ばされている。
個⼈的な活動
� DSTokaiっていう、東海地⽅の
メタコミュニティの管理⼈やってます。
 � いまいち登録⼈数が増えてきてないので
  登録お願いします><
個⼈的な活動(半分仕事とも)
� Microsoft Tech Fielders Interview #23
  � IronPython + Silverlightで業務アプリ
� PHP逆引きレシピ(共著)
  � おかげさまで増刷!
本題に⼊るまえに
ちょっと予習しましょう。
Silverlight?




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

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




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

� 2009/10時点の最新バージョンは 0.9.1
 � まだ標準ライブラリが完動しない。
� Silverlight上での動作もサポート。
� DLR(Dynamic Language Runtime)と
 いうステキな機構を利⽤している。
DLR(Dynamic Language Runtime)?




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

� コンパイラフレームワークや対話シェル
 などの機能を提供。
� IronRubyの他にIronPython, IronScheme
 などがDLRを利⽤している。
� Silverlight上の動作もDLRのなかの⼈が
 よきに計らってくれる。
予習ができたので
やっと本題に⼊れます。
時間もないので結論から。
IronRuby on Silverlightってどうなのよ?
正直、微妙。
なんで?
微妙な理由(1)




 IronRubyが⾃体こなれてない。
 まだ仕事で使えるレベルではない。
微妙な理由(2)

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

  � C#だと50KBぐらい
  � IronRubyだと1MB越え
.xapファイルが肥⼤化する原因は
パッケージ内にIronRubyのエンジンを
同梱しているため。
これは解決策がありそうなんだけど、
まだ調査していない…。
微妙な理由(3)



IronRuby(DLR⾔語)からはDataBinding
することができない。けっこう痛い。
※がんばればできなくもないが…(後述)
DataBindingとはViewとModelを
連携させるための.NET Frameworkが
⽤意している機能のひとつ。
DataBindingでできること。

� Modelのプロパティの値が変わると
 ⾃動でその値がViewに反映される。
� Viewで⼊⼒した値が⾃動でModelに
 反映される。
� 要はView-Model間のGet/Setを
 ⾃動でやってくれるもの。
DataBindingのコード例。
かなり省略してます。
� View定義
<TextBox x:Name="NameTextBox"
        Value="{Binding Name}" />


� Viewに結合(バインディング)
NameTextBox.DataContext = person;
DataBindingの内部実装はリフレクションで
オブジェクトを操作しているだけ。
※厳密にはリフレクションじゃないんだけど
 イメージとして。
リフレクションなので.NET Framework上の
静的型(クラス)が必要。
ここで問題となるのが、
IronRuby上のオブジェクトと
.NET Framework上のオブジェクトが
等価ではないこと。
IronRuby上で、Nameというプロパティを
持ったPersonクラスを定義したとしても、
.NET FrameworkからはIRubyObjectという
ラップされたオブジェクトにしか⾒えない。
なので、IronRuby上のオブジェクトは
そのままBindingすることができない。
別にDataBinding使わなくても
単純に代⼊できればプログラムは
動くんですが…。代⼊さえできれば…。
Silverlightのけっこうな数のコントロールは
DataBindingが必須。

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

� C#などでバインドするクラスを⽤意し、
 それをIronRubyから参照する
� 実⾏時に動的に.NET Frameworkの
 クラスを⽣成する。
 � MSIL(.NET マシンコード)の知識が
  必要になる。
めんどくさいですね。
散々DISったけど、
いいところもありますよ。
いいところ(1)




   コンパイルしなくてもいい。
C#なんかで開発する場合だと、
細かい修正をして動作確認を繰り返す場合、
「F5押す→コンパイル待ち」となるので
そこらへんはムカついてくる。
以上。
今⽇のまとめ。
DLR⾔語でSilverlightをやりたいなら、
素直にI ronPythonにしとけ。
特別な感情(愛など)がないなら、
C#で開発したほうが無難ですよ?
はまらないし。
I love DLR.
ご清聴ありがとうございました。

Mais conteúdo relacionado

Semelhante a IronRuby on Silverlight っておいしいの?

Java script testing framework for around html5 studies-
Java script testing framework for  around html5 studies-Java script testing framework for  around html5 studies-
Java script testing framework for around html5 studies-
Jun Saeki
 
20130714 eucalyptus habuka036
20130714 eucalyptus habuka03620130714 eucalyptus habuka036
20130714 eucalyptus habuka036
Osamu Habuka
 
Dodai projectの紹介
Dodai projectの紹介Dodai projectの紹介
Dodai projectの紹介
Osamu Habuka
 
LDD13is 先行告知
LDD13is 先行告知LDD13is 先行告知
LDD13is 先行告知
Panda Yamaki
 
ネットワークトラブルシューティング ~自端末編~
ネットワークトラブルシューティング ~自端末編~ネットワークトラブルシューティング ~自端末編~
ネットワークトラブルシューティング ~自端末編~
creaism
 

Semelhante a IronRuby on Silverlight っておいしいの? (20)

20141115グンマーのヤボー
20141115グンマーのヤボー20141115グンマーのヤボー
20141115グンマーのヤボー
 
Trailheadでサクサク!新人研修
Trailheadでサクサク!新人研修Trailheadでサクサク!新人研修
Trailheadでサクサク!新人研修
 
Java script testing framework for around html5 studies-
Java script testing framework for  around html5 studies-Java script testing framework for  around html5 studies-
Java script testing framework for around html5 studies-
 
Gitのすすめ
GitのすすめGitのすすめ
Gitのすすめ
 
tnct.Seminar9.03#1
tnct.Seminar9.03#1tnct.Seminar9.03#1
tnct.Seminar9.03#1
 
20130714 eucalyptus habuka036
20130714 eucalyptus habuka03620130714 eucalyptus habuka036
20130714 eucalyptus habuka036
 
Llでゆるふわプログラミングのすすめ
LlでゆるふわプログラミングのすすめLlでゆるふわプログラミングのすすめ
Llでゆるふわプログラミングのすすめ
 
202012 Volt開発をiPhoneで_tektech volt_develop_iphone
202012 Volt開発をiPhoneで_tektech volt_develop_iphone202012 Volt開発をiPhoneで_tektech volt_develop_iphone
202012 Volt開発をiPhoneで_tektech volt_develop_iphone
 
私がMuninに恋する理由 - インフラエンジニアでも監視がしたい! -
私がMuninに恋する理由 - インフラエンジニアでも監視がしたい! -私がMuninに恋する理由 - インフラエンジニアでも監視がしたい! -
私がMuninに恋する理由 - インフラエンジニアでも監視がしたい! -
 
音声合成ライブラリ「AquesTalk」の紹介
音声合成ライブラリ「AquesTalk」の紹介音声合成ライブラリ「AquesTalk」の紹介
音声合成ライブラリ「AquesTalk」の紹介
 
Conversation as a Platform 大全
Conversation as a Platform 大全Conversation as a Platform 大全
Conversation as a Platform 大全
 
What is ahiruyaki?
What is ahiruyaki?What is ahiruyaki?
What is ahiruyaki?
 
JavaScript初心者が紹介するデバイスやアプリで楽しむIoT: #jsfes
JavaScript初心者が紹介するデバイスやアプリで楽しむIoT: #jsfesJavaScript初心者が紹介するデバイスやアプリで楽しむIoT: #jsfes
JavaScript初心者が紹介するデバイスやアプリで楽しむIoT: #jsfes
 
OLにもわかるRDF(トリプル編)
OLにもわかるRDF(トリプル編)OLにもわかるRDF(トリプル編)
OLにもわかるRDF(トリプル編)
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
 
Dodai projectの紹介
Dodai projectの紹介Dodai projectの紹介
Dodai projectの紹介
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
Nodeにしましょう
 
LDD13is 先行告知
LDD13is 先行告知LDD13is 先行告知
LDD13is 先行告知
 
ネットワークトラブルシューティング ~自端末編~
ネットワークトラブルシューティング ~自端末編~ネットワークトラブルシューティング ~自端末編~
ネットワークトラブルシューティング ~自端末編~
 
「自動化...か、かっこいいタル」(憧れ)から始める自動化
「自動化...か、かっこいいタル」(憧れ)から始める自動化「自動化...か、かっこいいタル」(憧れ)から始める自動化
「自動化...か、かっこいいタル」(憧れ)から始める自動化
 

Mais de terurou

FIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScriptFIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScript
terurou
 
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話
terurou
 
Metro Style AppsでMSIL ver.2012/06/09
Metro Style AppsでMSILver.2012/06/09Metro Style AppsでMSILver.2012/06/09
Metro Style AppsでMSIL ver.2012/06/09
terurou
 
Scala×silverlight
Scala×silverlightScala×silverlight
Scala×silverlight
terurou
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
terurou
 

Mais de terurou (20)

Webブラウザ上で動作する帳票エンジンを作る話
Webブラウザ上で動作する帳票エンジンを作る話Webブラウザ上で動作する帳票エンジンを作る話
Webブラウザ上で動作する帳票エンジンを作る話
 
自社サービスでDurable Functionsを採用した話
自社サービスでDurable Functionsを採用した話自社サービスでDurable Functionsを採用した話
自社サービスでDurable Functionsを採用した話
 
Computation Expressions for Haxe
Computation Expressions for HaxeComputation Expressions for Haxe
Computation Expressions for Haxe
 
デンキヤギの採用の考え方
デンキヤギの採用の考え方デンキヤギの採用の考え方
デンキヤギの採用の考え方
 
Vue.jsをhaxeで
Vue.jsをhaxeでVue.jsをhaxeで
Vue.jsをhaxeで
 
MQTTとAMQPと.NET
MQTTとAMQPと.NETMQTTとAMQPと.NET
MQTTとAMQPと.NET
 
altJSの選び方
altJSの選び方altJSの選び方
altJSの選び方
 
DataGridを自前実装する話
DataGridを自前実装する話DataGridを自前実装する話
DataGridを自前実装する話
 
動的なILの生成と編集
動的なILの生成と編集動的なILの生成と編集
動的なILの生成と編集
 
FIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScriptFIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScript
 
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話
 
大規模なJavaScript開発の話
大規模なJavaScript開発の話大規模なJavaScript開発の話
大規模なJavaScript開発の話
 
Metro Style AppsでMSIL ver.2012/06/09
Metro Style AppsでMSILver.2012/06/09Metro Style AppsでMSILver.2012/06/09
Metro Style AppsでMSIL ver.2012/06/09
 
Metro Style AppsでMSIL
Metro Style AppsでMSILMetro Style AppsでMSIL
Metro Style AppsでMSIL
 
Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作
 
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
 
CommonJSの話
CommonJSの話CommonJSの話
CommonJSの話
 
Scala×silverlight
Scala×silverlightScala×silverlight
Scala×silverlight
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
Iron Python / Iron Ruby で .NET Programming
Iron Python / Iron Ruby で .NET ProgrammingIron Python / Iron Ruby で .NET Programming
Iron Python / Iron Ruby で .NET Programming
 

Último

Último (11)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

IronRuby on Silverlight っておいしいの?