Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
terurou
1,094 views
Scala×silverlight
Technology
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 46
2
/ 46
3
/ 46
4
/ 46
5
/ 46
6
/ 46
7
/ 46
8
/ 46
9
/ 46
10
/ 46
11
/ 46
12
/ 46
13
/ 46
14
/ 46
15
/ 46
16
/ 46
17
/ 46
18
/ 46
19
/ 46
20
/ 46
21
/ 46
22
/ 46
23
/ 46
24
/ 46
25
/ 46
26
/ 46
27
/ 46
28
/ 46
29
/ 46
30
/ 46
31
/ 46
32
/ 46
33
/ 46
34
/ 46
35
/ 46
36
/ 46
37
/ 46
38
/ 46
39
/ 46
40
/ 46
41
/ 46
42
/ 46
43
/ 46
44
/ 46
45
/ 46
46
/ 46
More Related Content
PDF
頑張りすぎないScala
by
takezoe
PDF
Scala警察のすすめ
by
takezoe
PDF
Scalaと過ごした5ヶ月間
by
Haruki Okada
PDF
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
by
Kazuhiro Sera
PDF
Overview of Scala ~ Hacker Tackle
by
Daisuke Kasuya
KEY
Scalaはじめました!
by
Asami Abe
PPTX
Developing an Akka Edge4-5
by
saaaaaaki
PDF
Developing an Akka Edge6
by
saaaaaaki
頑張りすぎないScala
by
takezoe
Scala警察のすすめ
by
takezoe
Scalaと過ごした5ヶ月間
by
Haruki Okada
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
by
Kazuhiro Sera
Overview of Scala ~ Hacker Tackle
by
Daisuke Kasuya
Scalaはじめました!
by
Asami Abe
Developing an Akka Edge4-5
by
saaaaaaki
Developing an Akka Edge6
by
saaaaaaki
Viewers also liked
PDF
FIRST STEP to Haxe/JavaScript
by
terurou
PDF
Yet Another DLR for Silverlightの試作
by
terurou
PDF
Metro Style AppsでMSIL
by
terurou
PDF
Tech Fielders 2009/9/18 LT
by
terurou
PDF
Iron Python / Iron Ruby で .NET Programming
by
terurou
PDF
Metro Style AppsでMSILver.2012/06/09
by
terurou
PDF
Silverlight 4 のはなし
by
terurou
PDF
Önemli Olan, Nelere Değer Verdiğin ve Neleri Önemsediğindir..
by
Kref.net
FIRST STEP to Haxe/JavaScript
by
terurou
Yet Another DLR for Silverlightの試作
by
terurou
Metro Style AppsでMSIL
by
terurou
Tech Fielders 2009/9/18 LT
by
terurou
Iron Python / Iron Ruby で .NET Programming
by
terurou
Metro Style AppsでMSILver.2012/06/09
by
terurou
Silverlight 4 のはなし
by
terurou
Önemli Olan, Nelere Değer Verdiğin ve Neleri Önemsediğindir..
by
Kref.net
Similar to Scala×silverlight
PDF
DLR言語によるSilverlightプログラミング
by
terurou
PPTX
Net fringejp2016
by
Yusuke Fujiwara
PDF
VSUG LT Silverlight&Arduino
by
c-mitsuba
PPTX
110709 silverlight square_tanaka_pub
by
Takayoshi Tanaka
PPTX
120331 silverlight5新機能早めぐり
by
Takayoshi Tanaka
PPTX
Silverlightの今
by
信之 岩永
PPTX
Sl18
by
c-mitsuba
DLR言語によるSilverlightプログラミング
by
terurou
Net fringejp2016
by
Yusuke Fujiwara
VSUG LT Silverlight&Arduino
by
c-mitsuba
110709 silverlight square_tanaka_pub
by
Takayoshi Tanaka
120331 silverlight5新機能早めぐり
by
Takayoshi Tanaka
Silverlightの今
by
信之 岩永
Sl18
by
c-mitsuba
More from terurou
PDF
動的なILの生成と編集
by
terurou
PDF
大規模なJavaScript開発の話
by
terurou
PDF
大規模なギョームシステムにHaxeを採用してみた話
by
terurou
PDF
altJSの選び方
by
terurou
PDF
Webブラウザ上で動作する帳票エンジンを作る話
by
terurou
PDF
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
by
terurou
PDF
デンキヤギの採用の考え方
by
terurou
PDF
Computation Expressions for Haxe
by
terurou
PDF
MQTTとAMQPと.NET
by
terurou
PDF
DataGridを自前実装する話
by
terurou
PDF
Dynamic Language による Silverlight2 アプリケーション開発
by
terurou
PDF
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
by
terurou
PDF
自社サービスでDurable Functionsを採用した話
by
terurou
PDF
Vue.jsをhaxeで
by
terurou
PDF
IronRuby on Silverlight っておいしいの?
by
terurou
PDF
クラウドGPS(仮)
by
terurou
PDF
CommonJSの話
by
terurou
動的なILの生成と編集
by
terurou
大規模なJavaScript開発の話
by
terurou
大規模なギョームシステムにHaxeを採用してみた話
by
terurou
altJSの選び方
by
terurou
Webブラウザ上で動作する帳票エンジンを作る話
by
terurou
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
by
terurou
デンキヤギの採用の考え方
by
terurou
Computation Expressions for Haxe
by
terurou
MQTTとAMQPと.NET
by
terurou
DataGridを自前実装する話
by
terurou
Dynamic Language による Silverlight2 アプリケーション開発
by
terurou
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
by
terurou
自社サービスでDurable Functionsを採用した話
by
terurou
Vue.jsをhaxeで
by
terurou
IronRuby on Silverlight っておいしいの?
by
terurou
クラウドGPS(仮)
by
terurou
CommonJSの話
by
terurou
Scala×silverlight
1.
Scala×Silverlight Scala×
terurou (YAGI.Teruo) YAGI.Teruo) 大名古屋, DSTokai FLOSS桜山, DeLLa.JS, Python東海, ...
2.
Agenda
3.
Agenda • 本題に入る前の予習 • Scala×Silverlight •
まとめなど
4.
本題に入る前の予習
5.
本題に入る前の予習 Question1 • Scalaって何だっけ?
6.
本題に入る前の予習 Question1 • Scalaって何だっけ? Answer • JavaVM上で動作するこれからの時代の言語。
JavaVMって言いたっかったんだ。。。
7.
本題に入る前の予習 Question2 • Silverlightって何だっけ?
8.
本題に入る前の予習 Question2 • Silverlightって何だっけ? Answer • 超簡単に言うと、Microsoft版Flash。 •
マルチプラットフォームなブラウザPlugin。 • .NET Frameworkのサブセット(mini-CLR)を 実行エンジンとして搭載
9.
本題に入る前の予習 Question3 • LTタイトルの「Scala×Silverlight」って
ScalaをSilverlight上で動かすって意味?
10.
本題に入る前の予習 Question3 • LTタイトルの「Scala×Silverlight」って
ScalaをSilverlight上で動かすって意味? Answer • Yes、それ以外にないだろ。
11.
本題に入る前の予習 Question4 • SilverlightでScalaは動かねーだろw • そもそも.NETとJavaってVMがちがうwww
12.
本題に入る前の予習 Question4 • SilverlightでScalaは動かねーだろw • そもそも.NETとJavaってVMがちがうwww Answer •
scala-msilを使うと.NETでも動くよ(キリッ
13.
本題に入る前の予習 Question5 • えっ、scala-msilって何?
14.
本題に入る前の予習 Question5 • えっ、scala-msilって何? Answer • Scalaプログラムを.NETプログラム(MSIL)に
変換してくれる。 • というか、はじめからscalacのオプションに target:msilってオプションあるんだけど、 それをもうちょっと使いやすくしてくれる。
15.
本題に入る前の予習 Question6 • MSILとか言われても。。。何それ?
16.
本題に入る前の予習 Question6 • MSILとか言われても。。。何それ? Answer • MicroSoft
Intermediate Language、 実行可能コードを記述するための中間言語。 • 要はCLR(.NETのVM)用のアセンブリ言語。 • 次のページでもう少し詳しく説明するます。
17.
本題に入る前の予習 MSILとCLR(.NET Framework) MSILと CLR(
Framework) だいたいこんな感じ。
18.
本題に入る前の予習 Question7 • つまり、、、どういうことだってばよ!?
19.
本題に入る前の予習 Question7 • つまり、、、どういうことだってばよ!? Answer • scala-msil→ilasmで.NETバイナリができる。 •
Silverlightの実行エンジンはmini-CLR。 • .NETとSilverlightの実行バイナリ(PE)は 同一フォーマット。 • つまり動作する見込みあり!
20.
Scala×Silverlight
21.
Scala×Silverlight scala-msilのインストールと使い方 scala-msilのインストールと使い方 • インストール
$ sbaz install scala-net • .scalaをMSILに変換 .scalaをMSILに変換 $ scalac-net hoge.scala • MSILを実行バイナリ(DLL)にアセンブル MSILを実行バイナリ( DLL)にアセンブル を実行バイナリ(DLL $ ilasm /dll hoge.msil • scala-msilで作ったバイナリの依存性 scala-msilで作ったバイナリの依存性 scalaruntime.dllとpredef.dllに依存。 scala/libからコピーすること。
22.
Scala×Silverlight scala-msil 使用上の注意 • どうやらscala2.8.0のscalacはバグ持ち。
target:msilオプションをつけると落ちる。 • trunkやnightly buildやらを色々試したが、 マトモに動きそうなのはscala 2.7.7。 scala-msilを試したい人はscala 2.7.7を 使うと良い。 • DLLだけでなくEXEも作れるはずだが、そこも 微妙にバグってたりとか。対策は簡単だが、 今回のテーマから外れるので割愛。
23.
Scala×Silverlight とりあえず安直に試してみる • .NETとSilverlightの実行バイナリ(PE)は
同じファイルフォーマットなんだから、 意外とそのまま動いたりするかも? • 適当なソースをビルドしてDLLを作成して、 VisualStudio/Silverlightプロジェクトから 参照させてみる。
24.
Scala×Silverlight 生贄となるコード(Hoge.scala) 生贄となるコード(Hoge.scala
Hoge.scala) このコードをDLLにビルドして参照させる。 class Hoge() { def add(x:Int, y:Int) = { x + y } }
25.
Scala×Silverlight 試してみたが、考えが安直すぎた。。。 • ビルド自体は問題なくできた。 • ビルドしたDLL以前に、scalaruntime.dllが
参照できねーじゃん!
26.
Scala×Silverlight Silverlight用の依存DLLが必要。。。 Silverlight用の依存 DLLが必要。。。
用の依存DLL • やっぱりSilverlightで.NET用のバイナリは 使えませんよねー。 • scala-msilにはSilverlight用のバイナリは 付属してない。 • どうすんの。。。
27.
Scala×Silverlight ふと、私の中の天使が囁いた。
28.
Scala×Silverlight ふと、私の中の天使が囁いた。
バイナリ弄ったらいいじゃない。 天使ちゃんマジ天使
29.
Scala×Silverlight まずはバイナリの調査から • ildasmでも良いが、.NETの逆アセンブラと
いえば.NET Reflector。 http://www.red-gate.com/products/reflector/ • バイナリからMSIL、C#、VB.NET、F#、Delphiなどに 逆アセンブリ可能! • 今回は簡単なバイナリの解析に利用。
30.
Scala×Silverlight .NET Reflectorでscalaruntime.dllを調査
Reflectorでscalaruntime.dllを調査 • scalaruntime.dllから参照されているのは、 .NET 2.0のmscorlib.dllのみ。 • IntRefなどの基本的な型クラスのみが存在。
31.
Scala×Silverlight 同様にpredef.dellも調査 同様にpredef.dell
predef.dellも調査 • こちらもmscorlib.dll(あれ、.NET 1.1用?)と scalaruntime.dllの2つしか参照していない。 • TuppleやCollectionなどの基本的なクラスが存在。
32.
Scala×Silverlight mscorlibって何? mscorlibって何? • .NET Frameworkの根幹をなすライブラリ。
– IntegerやCharなどの基本的な型クラス – ArrayListやHashtableなどのCollection – ファイルI/O – Thread – Console、Debug – Reflection • 当然、Silverlightにもサブセットが存在。
33.
Scala×Silverlight 見えてきた勝算 • 両DLLともmscorlibしか参照していない。 • バイナリを流し見たところ、特殊なクラスや
メソッドは使用していないようだ。 • Silverlightのmscorlibを参照するように バイナリを改変したら動作しそうな感じ。
34.
Scala×Silverlight 依存バイナリを改変してみる(1) 依存バイナリを改変してみる(1 • DLLをMSILに逆アセンブリ
$ ildasm /out=scalaruntime.msil > /utf8 scalaruntime.dll $ ildasm /out=predef.msil /utf8 > predef.dll
35.
Scala×Silverlight 依存バイナリを改変してみる(2) 依存バイナリを改変してみる(2 • Silverlightのmscorlibを参照するように
MSILの「.assembly extern mscorlib」を 書き換える。 .assembly extern mscorlib { .publickeytoken = (7C EC 85 D7 BE A7 79 8E ) .ver 2:0:5:0 }
36.
Scala×Silverlight 依存バイナリを改変してみる(3) 依存バイナリを改変してみる(3 • 修正したMSILからDLLを再作成する。
$ ilasm /resource=scalaruntime.res > /dll scalaruntime.msil $ ilasm /dll predef.msil
37.
Scala×Silverlight 実行プログラムのMSILも修正する 実行プログラムのMSIL
MSILも修正する • scala-msilの出力するMSILも、当然.NET用の mscorlib.dllを参照しているので修正する。 • 修正方法は全く同じなので手順省略。 • 修正したらilasm。
38.
Scala×Silverlight さあ、リベンジだ! • ちゃんと参照できて動いたよ!
39.
まとめなど
40.
まとめなど ScalaプログラムをSilverlightで動かす手順 Scalaプログラムを Silverlightで動かす手順
プログラムをSilverlight • scalaruntime.dll、predef.dllのバイナリの .assembly extern mscorlibの部分を改変し、 Silverlightに対応させる。 • scalac-netで生成したMSILもSilverlightで 動作するよう.assembly extern mscorlibの 箇所を修正してからアセンブリする。
41.
Scala×Silverlight scala-msilを触って気がついた問題点 scala-msilを触って気がついた問題点 • Actorがない。。。たぶん他にも色々無い。 • コンパイラがたまに不可解なエラーを吐く。 •
そもそもコンパイラが中途半端。 (mscorlib|scalaruntime|predef).dllに 存在しないパッケージやクラスを参照しよう とすると、「そんなもんねーよ」って怒る。
42.
まとめなど 今後の展開
え、今後も続けるの・・・?
43.
まとめなど 今後の展開 • とりあえずDLLをビルドしてみただけなので、
簡単なアプリまでは作ってみたい気はする。 • SilverlightアプリのEntryPoint(起動時に キックされる部分)だけを橋渡しするように ごにょってしまえば、だいたいPure-Scalaで Silverlightを書けるようになるはず。 • Scala製Silverlightプレゼンツールぐらいは 作れるんじゃね?技術的な目処はついてる。
44.
Scala×Silverlight 本セッションの総括
45.
Scala×Silverlight 本セッションの総括
MSILたのしいです。
46.
ご清聴ありがとうございました。
Download