Your SlideShare is downloading. ×
0
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Metro Style AppsでMSIL
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Metro Style AppsでMSIL

1,232

Published on

後日、最新情報に更新したスライドを公開しています …

後日、最新情報に更新したスライドを公開しています
http://www.slideshare.net/terurou/metro-style-appsmsilver20120609

@biacさんに誤っている箇所(Win32APIについて)を指摘いただいたので一部修正しました。ありがとうございました。

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,232
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
2
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. Metro Style AppsでMSILterurou
  • 2. 自己紹介
  • 3. 自己紹介どうもこんにちわ、terurou です。
  • 4. DSTokaiの管理人やってます。• 東海地方のメタコミュニティ – IT系イベント情報の共有 – 複数コミュニティへの共通連絡窓口 – DSは「でら すたでぃー」らしいです – http://go.dstokai.info/• クロスコミュニティイベントの企画 – NGK:名古屋 合同 懇親会
  • 5. Web技術を広く浅くやってます。• フロントエンド – JavaScript, Android, Silverlight – 最近 Metro Style Apps始めました。• バックエンド – Cassandra, 自作KVS, AWS• フロント寄りのアーキテクチャ設計を 割と得意としてます。
  • 6. 今日のネタについて
  • 7. MSILネタを話すと宣言したものの…MSILネタって、半年程前のイベントで桜花っていう幼女っぽい人が話をしてたじゃないですか、やだー
  • 8. マジで何を話すんや…とりあえずプログラムを確認するためにML名古屋の告知ページを開いてみたら、あなたの知らない世界セッションっていうのに分類されていた。
  • 9. あなたの知らない世界誰も思いついてもやろうとは思わないやったことのないネタを話せばOKと、解釈致しました。行間を読む力、この業界では重要ですね。
  • 10. ということでMetro Style AppsでMSILをごにょってEXE(.NETアプリ)を生成します。
  • 11. Metro Style Appsとは?
  • 12. Metro Style Apps• Windows 8から導入される 新しいアプリケーションの種別 – 旧来型アプリ=Desktop Apps
  • 13. Metro Style Apps• WinRTという新たな基盤上で動作• タッチ操作や視認性を強く意識 – カクカクして大きなボタン(タイル) – 単一色塗りつぶし – 大きな余白 など• Windows Storeからインストール – Store以外からのインストールはできない• 拡張子は .appx
  • 14. WinRT• Metro Style Apps専用API – MetroでWin32 APIは叩けません。 – Win32 APIはMetro用のサブセットです。 – .NET APIもMetro用の別物を使います。• いろんなものが非同期API – File I/O APIとかDialogとか• サンドボックスモデル – ユーザの同意なしでは全てのファイルや デバイスを自由に触らせてくれません。
  • 15. WinRTいろんな言語で開発できます。• C++ – ゲーム開発ではこれ一択?• .NET(C#, VB.NET) – F#は今のところ無理だかんな。• HTML/JavaScript – 少し検証したけど、個人的にはないわー
  • 16. MSILとは?
  • 17. MSIL• CLI(.NETのVM)用の機械語 – コンパイルするとCIL用のバイトコードに• MicroSoft Intermediate Language – Intermediate Language = 中間言語• ECMA CIL(Common IL)としても 標準化されている – MSILはCIL準拠/拡張という位置づけ
  • 18. Metro Style AppsでMSIL生成
  • 19. Reflection.Emit!• .NETでMSILといえばReflection.Emit – Reflection.Emitを使うとプログラム内で 動的にMSIL/バイトコードを生成できる。• さっそくコードを書こう
  • 20. Reflection… Emit…?• AssemblyBuilder#Save()が 存在しない…だと…?
  • 21. Reflection.Emit 終了のお知らせ• AssemblyBuilder#Save()がないと EXEを動的生成できない。• ドキュメントやAPIを漁ってみたけど、 それっぽい代替APIも存在しない。• 本当にありがとうございました。 Reflection.Emit先生の次回作にg
  • 22. そんなところに颯爽とMono.Cecilが!
  • 23. Mono.Cecil• Cecil is a library written by Jb Evain to generate and inspect programs and libraries in the ECMA CIL format.• 要はCIL(MSIL)をごにょごにょする 素敵ライブラリ。
  • 24. Mono.Cecilの採用事例• Mono Debugger – Cecil自体がMonoプロジェクトだしね。• ILSpy – .NET逆アセンブリツール – SharpDevelopのグループが作ってます。• 各種weaving/AOPツール
  • 25. てか、そもそも• 1か月ぐらい前まで、今日のネタは Mono.Cecilの紹介をする予定でした。• そう、WDDに行くまではね。 – WDD:Windows Developers Days
  • 26. MetroでMono.Cecilを使う「NuGet(*)したら一発だよねー」「…?」「CecilのDLLがMetroプロジェクトで 参照できない…。」「そういえば思い当たる節が…。」(*)NuGet:.NETのパッケージマネージャ
  • 27. WinRT• Metro Style Apps専用API – MetroでWin32 APIは叩けません。 – Win32 APIはMetro用のサブセットです。 – .NET APIもMetro用の別物を使います。• いろんなものが非同期API – File I/O APIとかDialogとか• サンドボックスモデル – ユーザの同意なしでは全てのファイルや デバイスを自由に触らせてくれません。
  • 28. MetroでMono.Cecil使えないけど• OSSだし改造したらいいんじゃね? .NETだし簡単に移植できるんじゃ。• あまり簡単じゃないけど移植できた!
  • 29. Mono.Cecil for Metro 改造点• Metro Style Apps用の.csproj作成 – .NET用プロジェクトと共通化できない• Type型のAPI差異を埋める – GetTypeCode(), GetTypeInfo()• System.Security.Cryptography → Windows.Security.Cryptography• File I/Oは今回は未実装に…。 – 非同期APIへの置き換えは影響が大きい
  • 30. Mono.Cecil for Metro の注意点• あくまでBeta版SDKでの話です。• 過去の経験上、MSのBeta版SDKは 製品版と差異が結構出ます。• 今回の改造はソース公開しません。 – 製品版SDKリリースされても本家が 対応しなかったらPull Requestぐらいは 送りたい気はする。 – Beta版SDK使ってるのでお察しください。
  • 31. デモ• コンパイルが通ったしデモができる!• Metro Style AppsからDesktop用の コンソールアプリを動的生成します。 – まぁHello World的なことするだけです。
  • 32. まとめ• Mono.Cecilは強力なライブラリ• 既存.NETライブラリのMetro移植は 結構めんどくさい。 – 特にファイル回りは鬼門。 – Metroには存在しないAPIもあるし。 – C++でも同じことになるはず…。• Metro Style Apps楽しい!
  • 33. まとめ Metro Style Appsで EXE出力して何が嬉しいのかは 私にもよくわからないですね。
  • 34. ご清聴ありがとうございました

×