Yet Another DLR for Silverlightの試作

  • 1,857 views
Uploaded on

LL. 名古屋の発表資料です。

LL. 名古屋の発表資料です。

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
1,857
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
3
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. Yet Anothor DLR for Silverlight の試作 terurou / YAGI.Teruo DSTokai, 大名古屋, ...
  • 2. 今から話すこと• 自己紹介• Silverlightとは• DLRとは• SilverlightでDLRを使ってきた理由• だが、DLRオワコン。• Yet Anothor DLR for Silverlight• 今後に向けて 1
  • 3. 自己紹介 2
  • 4. 自己紹介terurouです。• クラウド関係のR&Dとかやってます。• RIAとかAndroidとかやってます。 – Silverlight、DLR歴は3年以上。• 最近、Cassandra Conferenceで話しました。 3
  • 5. 自己紹介• DSTokai – 名古屋のメタコミュニティ – NGK• 大規模分散技術勉強会 in 名古屋 – 大名古屋 – 忙しすぎて開催できていない。 4
  • 6. \NGK/ 5
  • 7. 自己紹介NGKNGK• Nagoya Godo Konshinkai – 名古屋 合同 懇親会• 要は酒とか飲むだけの会 – 花見とか – 忘年会とか 6
  • 8. 自己紹介NGKNGK2011B• Nagoya Godo Konshinkai 2011 Bonenkai – 名古屋 合同 懇親会 2011 忘年会• 12/3(土) – 昼の部 LT大会 – 夜の部 普通の忘年会 7
  • 9. Silverlightとは 8
  • 10. Silverlightとは• Flashみたいなブラウザプラグイン。 – WindowsとMacで動く。 – LinuxではOSSのMoonlightが辛うじて動く。• 全般的にFlashよりも速い。• .NETのサブセットAPIが使える。• WindowsPhoneアプリもSiverlight。 9
  • 11. DLRとは 10
  • 12. DLRとは• Dynamic Language Runtime – .NETでLLを動かすためのステキな仕組み – Silverlightもサポート• 主なDLR言語 – IronPython • そもそもDLRはIronPythonからフォークされたもの – IronRuby – IronScheme 11
  • 13. DLRとはDLRが提供するもの• コンパイラフレームワーク – AST Compiler(動的バイトコード生成)• 動的型付け言語向けのランタイム – Dynamic Type System – Dynamic Dispatch – CallSite(Inline Method Cache)• 対話環境用のライブラリ – REPL、エントリーポイントなど 12
  • 14. DLRとはDLR言語の動作概要 俺様パーサ DLR AST Compiler俺様スクリプト DLR AST 実行! 俺様AST バイトコード 俺様AST to DLR DLR AST 変換 Runtime 言語固有の実装 DLR 13
  • 15. SilverlightでDLRを使ってきた理由 14
  • 16. SilverlightでDLRを使ってきた理由それ2年ぐらい前に話したわー• Microsoft Tech Fielders インタビュー – IronPython は、用途によって凄く便利な道具になる – http://bit.ly/1FNK76• Microsoft Tech Fielders セミナー LT – Dynamic Language で Silverlight 2 開発 – http://slidesha.re/v7Hitv 15
  • 17. SilverlightでDLRを使ってきた理由ちょっとしたGUIの修正がめんどくさい• 理想 – ソース保存→自動でUI再描画 • HTML/JavaScriptなら普通にやりますよね。• 現実 – ソース保存→F5押す→デバッグ起動 • ちょっと色を変えただけなのに時間がかかる。 • Twitterをやる時間ばかり増えてしまう…!!! – まぁ、Androidはもっと酷いけどね…。 16
  • 18. SilverlightでDLRを使ってきた理由 DLRを使うと理想に近づく。 手軽さ重要。 17
  • 19. だが、DLRオワコン。 18
  • 20. だが、DLRオワコン。DLRを使ったアプリ開発の問題点• DLRアプリは起動が遅すぎる – 動的バイトコード生成がボトルネック – DLRというよりも、Silverlight自体の問題 • Silverlightに限らず、.NETでも動的生成は遅い• 開発者は便利だが、ユーザには利点なし – 折角のRIAなのにUXが損なわれる!!! 19
  • 21. だが、DLRオワコン。 というか、 DLRという存在自体がオワコン 20
  • 22. だが、DLRオワコン。MicrosoftのDLR戦略ぅ1. IronPythonの開発者を雇用2. IronPythonからDLRをフォーク3. DLRを元にIronRubyの開発を開始4. DLRのおいしい部分を本体に統合5. おいしい部分を統合したら、IronPythonの 開発を放棄(ついでにIronRubyも) – IronPython/IronRubyの開発者も退職 21
  • 23. だが、DLRオワコン。DLRが提供していたもの .NET4.0• コンパイラフレームワーク ExpressionTree – AST Compiler(動的バイトコード生成)• 動的型付け言語向けのランタイム – Dynamic Type System .NET4.0 dynamic – Dynamic Dispatch – CallSite(Inline Method Cache)• 対話環境用のライブラリ 残り物! – REPL、エントリーポイントなど 22
  • 24. だが、DLRオワコン。• IronPython、IronRuby自体はコミュニティで 開発は継続しているが…。• Silverlight開発ツールとしては、今後の 発展は見込めない。 – もともとマイナーな存在だけどね…。 23
  • 25. Yet Anothor DLRfor Silverlight 24
  • 26. Yet Anothor DLR for Silverlightとりあえず以下の要件で作ってみる• 開発時はスクリプト実行できる• 配布時は事前にスクリプトをバイトコードに ビルドできる 25
  • 27. Yet Anothor DLR for Silverlight昔のDLR開発ツール(Chiron.exe)を参考に• 開発時 – Webサーバとして起動 – ブラウザから.xapなURIにアクセスすると、 ルールに従い、動的にスクリプトとランタイムを パッケージし、レスポンスとして返す• 配布パッケージ生成時 – スクリプトをDLLにビルドし、パッケージ – これはChiron.exeではできなかった 26
  • 28. Yet Anothor DLR for Silverlight動作イメージ(開発時)• ブラウザリロードだけで最新化・再実行 リクエスト Web Webブラウザ Server レスポンス スクリプトを オンデマンドで XAPパッケージ パッケージ化 実行 Runtime スクリプトのパース+ 動的バイトコード生成 27
  • 29. Yet Anothor DLR for Silverlight デモしたいけど、 たぶん時間ないよね 28
  • 30. Yet Anothor DLR for Silverlight実装のポイント1:ExpressionTree• 俺様言語を作る時に便利 – 前述のとおり、元々DLRだったヤツだし• .NET、Silverlight共にビルトインされている• ExpressionTreeから動的バイトコード生成 – 生成したバイトコードはEXE/DLLで保存可能 – ただし.NETのみ、Silverlightではできない 29
  • 31. Yet Anothor DLR for Silverlight実装のポイント2:アセンブリ互換• Silverlightと.NETのバイトコードは相互互換 – Silverlight4からサポート• .NET向けのDLLも型・メソッドが存在すれば、 Silverlightで利用可能• SilverlightでDLLを生成・保存できなくても、 .NETでDLLを生成すれば良い 30
  • 32. 今後にむけて 31
  • 33. 今後にむけて• たぶん忙しいから開発継続しないけど…• Roslynとの連携すると楽しそう – コンパイラの中間処理をゴニョれるらしい – C#が真の意味で スクリプト化? – 俺様言語の極楽浄土 – まだCTP 32
  • 34. ご清聴ありがとうございました 33