yet another dlr for silverlightの試作

Post on 28-May-2015

1.921 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Yet Anothor DLR for Silverlight

の試作 terurou / YAGI.Teruo

DSTokai, 大名古屋, ...

今から話すこと

• 自己紹介

• Silverlightとは

• DLRとは

• SilverlightでDLRを使ってきた理由

• だが、DLRオワコン。

• Yet Anothor DLR for Silverlight

• 今後に向けて

1

自己紹介

2

自己紹介

terurouです。

• クラウド関係のR&Dとかやってます。

• RIAとかAndroidとかやってます。

–Silverlight、DLR歴は3年以上。

• 最近、Cassandra Conferenceで話しました。

3

自己紹介

• DSTokai

–名古屋のメタコミュニティ

–NGK

• 大規模分散技術勉強会 in 名古屋

–大名古屋

–忙しすぎて開催できていない。

4

\NGK/

5

自己紹介NGK

NGK

• Nagoya Godo Konshinkai

–名古屋 合同 懇親会

• 要は酒とか飲むだけの会

–花見とか

–忘年会とか

6

自己紹介NGK

NGK2011B

• Nagoya Godo Konshinkai 2011 Bonenkai

–名古屋 合同 懇親会 2011 忘年会

• 12/3(土)

–昼の部 LT大会

–夜の部 普通の忘年会

7

Silverlightとは

8

Silverlightとは

• Flashみたいなブラウザプラグイン。

–WindowsとMacで動く。

–LinuxではOSSのMoonlightが辛うじて動く。

• 全般的にFlashよりも速い。

• .NETのサブセットAPIが使える。

• WindowsPhoneアプリもSiverlight。

9

DLRとは

10

DLRとは

• Dynamic Language Runtime

– .NETでLLを動かすためのステキな仕組み

–Silverlightもサポート

• 主なDLR言語

– IronPython

• そもそもDLRはIronPythonからフォークされたもの

– IronRuby

– IronScheme

11

DLRとは

DLRが提供するもの

• コンパイラフレームワーク –AST Compiler(動的バイトコード生成)

• 動的型付け言語向けのランタイム –Dynamic Type System

–Dynamic Dispatch

–CallSite(Inline Method Cache)

• 対話環境用のライブラリ –REPL、エントリーポイントなど

12

DLRとは

DLR言語の動作概要

俺様パーサ DLR AST Compiler

俺様AST to DLR AST 変換

実行!

俺様 スクリプト DLR AST

DLR Runtime

俺様AST バイトコード

言語固有の実装 DLR

13

SilverlightでDLRを 使ってきた理由

14

SilverlightでDLRを使ってきた理由

それ2年ぐらい前に話したわー

• Microsoft Tech Fielders インタビュー – IronPython は、用途によって凄く便利な道具になる

– http://bit.ly/1FNK76

• Microsoft Tech Fielders セミナー LT – Dynamic Language で Silverlight 2 開発

– http://slidesha.re/v7Hitv

15

SilverlightでDLRを使ってきた理由

ちょっとしたGUIの修正がめんどくさい

• 理想

–ソース保存→自動でUI再描画

• HTML/JavaScriptなら普通にやりますよね。

• 現実

–ソース保存→F5押す→デバッグ起動

• ちょっと色を変えただけなのに時間がかかる。

• Twitterをやる時間ばかり増えてしまう…!!!

–まぁ、Androidはもっと酷いけどね…。

16

SilverlightでDLRを使ってきた理由

DLRを使うと理想に近づく。 手軽さ重要。

17

だが、DLRオワコン。

18

だが、DLRオワコン。

DLRを使ったアプリ開発の問題点

• DLRアプリは起動が遅すぎる

–動的バイトコード生成がボトルネック

–DLRというよりも、Silverlight自体の問題

• Silverlightに限らず、.NETでも動的生成は遅い

• 開発者は便利だが、ユーザには利点なし

–折角のRIAなのにUXが損なわれる!!!

19

だが、DLRオワコン。

というか、

DLRという存在自体がオワコン

20

だが、DLRオワコン。

MicrosoftのDLR戦略ぅ

1. IronPythonの開発者を雇用

2. IronPythonからDLRをフォーク

3. DLRを元にIronRubyの開発を開始

4. DLRのおいしい部分を本体に統合

5.おいしい部分を統合したら、IronPythonの開発を放棄(ついでにIronRubyも)

– IronPython/IronRubyの開発者も退職

21

だが、DLRオワコン。

DLRが提供していたもの

• コンパイラフレームワーク –AST Compiler(動的バイトコード生成)

• 動的型付け言語向けのランタイム –Dynamic Type System

–Dynamic Dispatch

–CallSite(Inline Method Cache)

• 対話環境用のライブラリ –REPL、エントリーポイントなど

.NET4.0 dynamic

.NET4.0 ExpressionTree

残り物!

22

だが、DLRオワコン。

• IronPython、IronRuby自体はコミュニティで開発は継続しているが…。

• Silverlight開発ツールとしては、今後の 発展は見込めない。

–もともとマイナーな存在だけどね…。

23

Yet Anothor DLR for Silverlight

24

Yet Anothor DLR for Silverlight

とりあえず以下の要件で作ってみる

• 開発時はスクリプト実行できる

• 配布時は事前にスクリプトをバイトコードにビルドできる

25

Yet Anothor DLR for Silverlight

昔のDLR開発ツール(Chiron.exe)を参考に

• 開発時

–Webサーバとして起動

–ブラウザから.xapなURIにアクセスすると、 ルールに従い、動的にスクリプトとランタイムをパッケージし、レスポンスとして返す

• 配布パッケージ生成時

–スクリプトをDLLにビルドし、パッケージ

–これはChiron.exeではできなかった

26

Webブラウザ

Yet Anothor DLR for Silverlight

動作イメージ(開発時)

• ブラウザリロードだけで最新化・再実行

Web Server

Runtime

スクリプトのパース+ 動的バイトコード生成

リクエスト

XAPパッケージ 実行

レスポンス スクリプトを オンデマンドで パッケージ化

27

Yet Anothor DLR for Silverlight

デモしたいけど、 たぶん時間ないよね

28

Yet Anothor DLR for Silverlight

実装のポイント1:ExpressionTree

• 俺様言語を作る時に便利

–前述のとおり、元々DLRだったヤツだし

• .NET、Silverlight共にビルトインされている

• ExpressionTreeから動的バイトコード生成

–生成したバイトコードはEXE/DLLで保存可能

–ただし.NETのみ、Silverlightではできない

29

Yet Anothor DLR for Silverlight

実装のポイント2:アセンブリ互換

• Silverlightと.NETのバイトコードは相互互換

–Silverlight4からサポート

• .NET向けのDLLも型・メソッドが存在すれば、Silverlightで利用可能

• SilverlightでDLLを生成・保存できなくても、 .NETでDLLを生成すれば良い

30

今後にむけて

31

今後にむけて

• たぶん忙しいから開発継続しないけど…

• Roslynとの連携すると楽しそう

–コンパイラの中間処理をゴニョれるらしい

–C#が真の意味で スクリプト化?

–俺様言語の極楽浄土

–まだCTP

32

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

33

top related