0
Metro Style AppsでMSILver. 2012/06/09terurou
自己紹介
自己紹介どうもこんにちわ、terurou です。
DSTokaiの管理人やってます。• 東海地方のメタコミュニティ – 複数コミュニティへの共通連絡窓口 – IT系イベント情報の共有 – DSTokaiカレンダー – http://go.dstokai.info/• クロスコミュニティイベント...
Web技術を広く浅くやってます。• フロントエンド – Silverlight, JavaScript, Android – Tech Fielders Member(ページ消滅) – 最近 Metro Style Apps始めました。• バッ...
今から話すネタについて
ML名古屋の発表スライドの流用です。• ML名古屋? – 5/26に開催されたイベント – なごやこわい• 6/1のWindows8 RPのリリースに  合わせ、最新情報に更新しました。
このLTのゴール地点Metro Style AppでEXE生成するよ、デスクトップアプリ用のやつ。
過去の類似犯行• Silverlight上でScalaプログラムを実行 – Scala→MSIL + アセンブリバイナリ改変• Silverlightアプリ(XAP)を動的に  生成するWebサーバの作成 – DSL→MSIL→XAP化
Metro Style Appsとは?
Metro Style Apps• Windows 8から導入される  新しいアプリケーションの種別 – 旧来型アプリ=Desktop Apps
WinRT• Metro Style Apps専用API – Win32 API と .NET Framework 共に   Metro用のサブセットAPIとなっている。• いろんなものが非同期API – File I/O APIとかDialo...
MSILとは?
MSIL• CLI(.NETのVM)用の機械語 – コンパイルするとCIL用のバイトコードに• MicroSoft Intermediate Language – Intermediate Language = 中間言語• ECMA CIL(C...
Metro Style AppsでMSIL生成
Reflection.Emit!• .NETでMSILといえばReflection.Emit – Reflection.Emitを使うとプログラム内で   動的にMSIL/アセンブリを生成できる。• さっそくコードを書こう!
Reflection… Emit…?え、AssemblyBuilderが存在しない…?
Reflection… Emit…?がっつりAPIが削られてしまっていて、ぺんぺん草すら生えていない…!
Reflection.Emit 完全終了のお知らせ• Reflection.Emit(低レベルAPI)が  隠ぺいされ、高レベルAPIのみ利用可 – System.Linq.ExpressionTree – System.Dynamic• でも...
詰んだ?
そんなところに颯爽とMono.Cecilが!
Mono.Cecil• Cecil is a library written by Jb  Evain to generate and inspect  programs and libraries in the  ECMA CIL forma...
Mono.Cecilが使われているところ• Mono Debugger  – Cecil自体がMonoプロジェクトだしね。• ILSpy  – .NET逆アセンブリツール  – SharpDevelopのグループが作ってます。• 各種weavi...
Mono.CecilをMetroに移植しよう• Mono.CecilはMetroに対応してない。 – Metro用の.NETはサブセット版だしね。• Metro用クラスライブラリとして移植 – 既存の.NETプロジェクトではMetroを   ビ...
Mono.Cecil 移植のポイント• Reflection APIの差異を埋める – GetTypeInfo()への置き換えなど• System.Security.Cryptography  → Windows.Security.Crypto...
Mono.Cecil for Metro• ソースをGitHubに置いておいた – https://github.com/terurou/cecil – とりあえずコンパイルを通したレベル – まだテストコードを移植してない• Windows8...
デモ• Metro Style AppsからDesktop用の  コンソールアプリを動的生成します。 – Hello World的なことするだけです。
まとめ
Metro Style AppsでEXE出力して何が嬉しいのかは私にもよくわからないですね。
少し真面目に利用用途を考える• 動的生成したアセンブリをキャッシュ – 都度生成では性能問題が出るケースに• Metro用DSL/コンパイラを実装 – Metroアプリ内DSL – Desktopアプリの生成 – Silverlightアプリ(...
ご清聴ありがとうございました
Upcoming SlideShare
Loading in...5
×

Metro Style AppsでMSIL ver.2012/06/09

800

Published on

Published in: Health & Medicine
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
800
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Metro Style AppsでMSIL ver.2012/06/09"

  1. 1. Metro Style AppsでMSILver. 2012/06/09terurou
  2. 2. 自己紹介
  3. 3. 自己紹介どうもこんにちわ、terurou です。
  4. 4. DSTokaiの管理人やってます。• 東海地方のメタコミュニティ – 複数コミュニティへの共通連絡窓口 – IT系イベント情報の共有 – DSTokaiカレンダー – http://go.dstokai.info/• クロスコミュニティイベントの企画 – NGK:名古屋 合同 懇親会
  5. 5. Web技術を広く浅くやってます。• フロントエンド – Silverlight, JavaScript, Android – Tech Fielders Member(ページ消滅) – 最近 Metro Style Apps始めました。• バックエンド – Cassandra, 自作KVS, AWS• フロント寄りのアーキテクチャ設計を 割と得意としてます。
  6. 6. 今から話すネタについて
  7. 7. ML名古屋の発表スライドの流用です。• ML名古屋? – 5/26に開催されたイベント – なごやこわい• 6/1のWindows8 RPのリリースに 合わせ、最新情報に更新しました。
  8. 8. このLTのゴール地点Metro Style AppでEXE生成するよ、デスクトップアプリ用のやつ。
  9. 9. 過去の類似犯行• Silverlight上でScalaプログラムを実行 – Scala→MSIL + アセンブリバイナリ改変• Silverlightアプリ(XAP)を動的に 生成するWebサーバの作成 – DSL→MSIL→XAP化
  10. 10. Metro Style Appsとは?
  11. 11. Metro Style Apps• Windows 8から導入される 新しいアプリケーションの種別 – 旧来型アプリ=Desktop Apps
  12. 12. WinRT• Metro Style Apps専用API – Win32 API と .NET Framework 共に Metro用のサブセットAPIとなっている。• いろんなものが非同期API – File I/O APIとかDialogとか• サンドボックスモデル – ユーザの同意なしには全てのファイルや デバイスを自由に操作できません。
  13. 13. MSILとは?
  14. 14. MSIL• CLI(.NETのVM)用の機械語 – コンパイルするとCIL用のバイトコードに• MicroSoft Intermediate Language – Intermediate Language = 中間言語• ECMA CIL(Common IL)としても 標準化されている – MSILはCIL準拠/拡張という位置づけ
  15. 15. Metro Style AppsでMSIL生成
  16. 16. Reflection.Emit!• .NETでMSILといえばReflection.Emit – Reflection.Emitを使うとプログラム内で 動的にMSIL/アセンブリを生成できる。• さっそくコードを書こう!
  17. 17. Reflection… Emit…?え、AssemblyBuilderが存在しない…?
  18. 18. Reflection… Emit…?がっつりAPIが削られてしまっていて、ぺんぺん草すら生えていない…!
  19. 19. Reflection.Emit 完全終了のお知らせ• Reflection.Emit(低レベルAPI)が 隠ぺいされ、高レベルAPIのみ利用可 – System.Linq.ExpressionTree – System.Dynamic• でも、Reflection.EmitがないとEXEの 出力/保存ができないのだけど…。
  20. 20. 詰んだ?
  21. 21. そんなところに颯爽とMono.Cecilが!
  22. 22. Mono.Cecil• Cecil is a library written by Jb Evain to generate and inspect programs and libraries in the ECMA CIL format.• 要はCIL(MSIL)をごにょごにょする 素敵ライブラリ。
  23. 23. Mono.Cecilが使われているところ• Mono Debugger – Cecil自体がMonoプロジェクトだしね。• ILSpy – .NET逆アセンブリツール – SharpDevelopのグループが作ってます。• 各種weaving/AOPツール
  24. 24. Mono.CecilをMetroに移植しよう• Mono.CecilはMetroに対応してない。 – Metro用の.NETはサブセット版だしね。• Metro用クラスライブラリとして移植 – 既存の.NETプロジェクトではMetroを ビルドターゲットに指定できないので、 Metro用にプロジェクトを作り直す。 – Portable Class Libraryでは多分無理。 • Reflection APIが違いすぎる
  25. 25. Mono.Cecil 移植のポイント• Reflection APIの差異を埋める – GetTypeInfo()への置き換えなど• System.Security.Cryptography → Windows.Security.Cryptography• File I/Oはサポートしない – StreamでのI/Oに限定
  26. 26. Mono.Cecil for Metro• ソースをGitHubに置いておいた – https://github.com/terurou/cecil – とりあえずコンパイルを通したレベル – まだテストコードを移植してない• Windows8 製品版で動作しなくなる 可能性があるので注意。
  27. 27. デモ• Metro Style AppsからDesktop用の コンソールアプリを動的生成します。 – Hello World的なことするだけです。
  28. 28. まとめ
  29. 29. Metro Style AppsでEXE出力して何が嬉しいのかは私にもよくわからないですね。
  30. 30. 少し真面目に利用用途を考える• 動的生成したアセンブリをキャッシュ – 都度生成では性能問題が出るケースに• Metro用DSL/コンパイラを実装 – Metroアプリ内DSL – Desktopアプリの生成 – Silverlightアプリ(XAP)の生成 • SilverlightでXAP生成はできたので、 9割方実現できるはず
  31. 31. ご清聴ありがとうございました
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×