yet another dlr for silverlightの試作

34
Yet Anothor DLR for Silverlight の試作 terurou / YAGI.Teruo DSTokai, 大名古屋, ...

Upload: terurou

Post on 28-May-2015

1.921 views

Category:

Technology


4 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Yet Another DLR for Silverlightの試作

Yet Anothor DLR for Silverlight

の試作 terurou / YAGI.Teruo

DSTokai, 大名古屋, ...

Page 2: Yet Another DLR for Silverlightの試作

今から話すこと

• 自己紹介

• Silverlightとは

• DLRとは

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

• だが、DLRオワコン。

• Yet Anothor DLR for Silverlight

• 今後に向けて

1

Page 3: Yet Another DLR for Silverlightの試作

自己紹介

2

Page 4: Yet Another DLR for Silverlightの試作

自己紹介

terurouです。

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

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

–Silverlight、DLR歴は3年以上。

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

3

Page 5: Yet Another DLR for Silverlightの試作

自己紹介

• DSTokai

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

–NGK

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

–大名古屋

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

4

Page 6: Yet Another DLR for Silverlightの試作

\NGK/

5

Page 7: Yet Another DLR for Silverlightの試作

自己紹介NGK

NGK

• Nagoya Godo Konshinkai

–名古屋 合同 懇親会

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

–花見とか

–忘年会とか

6

Page 8: Yet Another DLR for Silverlightの試作

自己紹介NGK

NGK2011B

• Nagoya Godo Konshinkai 2011 Bonenkai

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

• 12/3(土)

–昼の部 LT大会

–夜の部 普通の忘年会

7

Page 9: Yet Another DLR for Silverlightの試作

Silverlightとは

8

Page 10: Yet Another DLR for Silverlightの試作

Silverlightとは

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

–WindowsとMacで動く。

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

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

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

• WindowsPhoneアプリもSiverlight。

9

Page 11: Yet Another DLR for Silverlightの試作

DLRとは

10

Page 12: Yet Another DLR for Silverlightの試作

DLRとは

• Dynamic Language Runtime

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

–Silverlightもサポート

• 主なDLR言語

– IronPython

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

– IronRuby

– IronScheme

11

Page 13: Yet Another DLR for Silverlightの試作

DLRとは

DLRが提供するもの

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

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

–Dynamic Dispatch

–CallSite(Inline Method Cache)

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

12

Page 14: Yet Another DLR for Silverlightの試作

DLRとは

DLR言語の動作概要

俺様パーサ DLR AST Compiler

俺様AST to DLR AST 変換

実行!

俺様 スクリプト DLR AST

DLR Runtime

俺様AST バイトコード

言語固有の実装 DLR

13

Page 15: Yet Another DLR for Silverlightの試作

SilverlightでDLRを 使ってきた理由

14

Page 16: Yet Another DLR for Silverlightの試作

SilverlightでDLRを使ってきた理由

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

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

– http://bit.ly/1FNK76

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

– http://slidesha.re/v7Hitv

15

Page 17: Yet Another DLR for Silverlightの試作

SilverlightでDLRを使ってきた理由

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

• 理想

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

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

• 現実

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

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

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

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

16

Page 18: Yet Another DLR for Silverlightの試作

SilverlightでDLRを使ってきた理由

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

17

Page 19: Yet Another DLR for Silverlightの試作

だが、DLRオワコン。

18

Page 20: Yet Another DLR for Silverlightの試作

だが、DLRオワコン。

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

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

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

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

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

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

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

19

Page 21: Yet Another DLR for Silverlightの試作

だが、DLRオワコン。

というか、

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

20

Page 22: Yet Another DLR for Silverlightの試作

だが、DLRオワコン。

MicrosoftのDLR戦略ぅ

1. IronPythonの開発者を雇用

2. IronPythonからDLRをフォーク

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

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

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

– IronPython/IronRubyの開発者も退職

21

Page 23: Yet Another DLR for Silverlightの試作

だが、DLRオワコン。

DLRが提供していたもの

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

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

–Dynamic Dispatch

–CallSite(Inline Method Cache)

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

.NET4.0 dynamic

.NET4.0 ExpressionTree

残り物!

22

Page 24: Yet Another DLR for Silverlightの試作

だが、DLRオワコン。

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

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

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

23

Page 25: Yet Another DLR for Silverlightの試作

Yet Anothor DLR for Silverlight

24

Page 26: Yet Another DLR for Silverlightの試作

Yet Anothor DLR for Silverlight

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

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

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

25

Page 27: Yet Another DLR for Silverlightの試作

Yet Anothor DLR for Silverlight

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

• 開発時

–Webサーバとして起動

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

• 配布パッケージ生成時

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

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

26

Page 28: Yet Another DLR for Silverlightの試作

Webブラウザ

Yet Anothor DLR for Silverlight

動作イメージ(開発時)

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

Web Server

Runtime

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

リクエスト

XAPパッケージ 実行

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

27

Page 29: Yet Another DLR for Silverlightの試作

Yet Anothor DLR for Silverlight

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

28

Page 30: Yet Another DLR for Silverlightの試作

Yet Anothor DLR for Silverlight

実装のポイント1:ExpressionTree

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

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

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

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

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

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

29

Page 31: Yet Another DLR for Silverlightの試作

Yet Anothor DLR for Silverlight

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

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

–Silverlight4からサポート

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

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

30

Page 32: Yet Another DLR for Silverlightの試作

今後にむけて

31

Page 33: Yet Another DLR for Silverlightの試作

今後にむけて

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

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

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

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

–俺様言語の極楽浄土

–まだCTP

32

Page 34: Yet Another DLR for Silverlightの試作

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

33