Mais conteúdo relacionado Mais de Fujio Kojima (20) JavaScript+HTML5とC#+XAMLで作るWindows8アプリ2. 自己紹介
• 小島 富治雄
• @Fujiwo
• 福井コンピュータ株式会社
• Microsoft MVP C# (2005-2012)
2
7. Windows 8 と Windows RT
従来デスクトップ アプリ Metro スタイル アプリ
Windows 8 • 従来通り • 全画面
x86/x64 Win32 API • 新 API “WinRT”
• .NET
• Silverlight
• C#/VB+XAML
• ほとんどそのまま動作 • JavaScript+HTML5
• C++ + XAMLで
Windows RT ネイティブ アプリも可
ARM × • Market Place で配布
• 審査あり
12. Windows RT
Metro スタイル アプリのみ!
• 従来のデスクトップアプリは動作しない
• Metro アプリの多くは 「そのまま」動く
• Office は Metro 版 が提供される
タッチ用の Word、Excel、
PowerPoint、OneNote
• “Office 15” (コードネーム)
16. Metro スタイル
タッチ & マウス/キーボード
基本フルスクリーン
カスケード ウィンドウじゃない
タイトルバー、従来のメニューがない
横長
横スクロール
19. Metro アプリ ライフサイクル
実行開始
(Activate)
アクティブ
一時停止 実行再開
(Suspend) (Resume)
非アクティブ
要状態の保存 終了
(Terminate)
21. Metro スタイル アプリ
解像度
1024×768以上
1366×768以上でスナップ対応
画像は SVG か3種類のビットマップ
スナップへの対応
ランドスケープと
ポートレートのレイアウト
22. 参考: Metro スタイルアプリのガイドライン
• Metro スタイルの設計原則
http://msdn.microsoft.com/library/ja-
jp/windows/apps/hh781237
• Metro スタイル アプリのナビゲーション デザイン
http://msdn.microsoft.com/ja-
jp/library/windows/apps/hh761500.aspx
• Metro スタイル アプリの UX ガイドライン
http://msdn.microsoft.com/ja-
jp/library/windows/apps/hh465424.aspx
24. Metro スタイル – 移植性
従来デスクトップアプリからの
移植は容易?
UI が全然違うので困難
API が異なるので困難
Windows Phone 7 アプリからの
移植は容易?
XAML 部分は可能
将来は可能に?
25. Metro スタイル – 移植性
Windows RT では
CPU が異なる
x86/x64 ではなく ARM
x86/x64 ネイティブ コードは
動かない
開発言語を選ぶ必要性
26. どちらも Metro UI だが…
Windows Phone 7
Silverlight for Windows Phone
.NET 4相当
XNA (Xbox と共通)
Windows 8
WinRT + DirectX
.NET 4、4.5
28. 参考: デスクトップアプリ – 互換性
Vista/XP 以降用のアプリは
基本的に動作するはず
Windows 7 で XP モードでないと
動かないようなものは難しい
メモリ使用可能量は増加
32ビットと64ビットがあるのも同様
33. Win 32 API と WinRT の比較
Win 32 API WinRT
従来の API 新 API
C スタイル OOP スタイル
主に デスクトップ 主に Metro スタイ
アプリ用 ル アプリ用
38. C++ + XAML?
• ネイティブ コード + XAML
• C++ とは言っても、従来の C++ を
拡張したもの
C++/CX
C++/CLI ではない
C++11 ではない
40. 言語プロジェクション
C++ WinRT
(ネイティブ)
(COMベース
ネイティブ)
C#/VB CLR
(マネージ)
JavaScript Chakra WinMD
Windows MetaData
(型情報)
41. WinRT と .NET
WinRT 自体はネイティブ コード
WinRT と .NET は似ているが型が少し違う
IIterable<T> ⇔ IEnumerable<T>
参考: .NET 4.5 で Metro アプリ向けに非同
期が強化
Windows 8 は .NET 3.5 が入っていない
.NET 4.5 は Windows Vista に対応しない
45. 非同期?
• UI スレッドで重い処理を行うと
UI が固まる
同期処理 UIスレッド
イベント
イベントハンドラ
で
イベント
時間の掛かる
処理
46. 非同期
非同期処理
UIスレッド 別スレッド
イベント 1 イベントハンドラ
1
時間の掛かる
イベント 2 イベントハンドラ
処理
2
1 の続き
47. WinRT では多くの API が非同期に
• 非同期呼び出しだらけ
• タブレット等のデバイスで有効
• 50ms 以上掛かる可能性がある API は非同期版のみ
• 非同期呼び出し?
• APIの機能リクエストと結果受け取りが別
※ これまでのプログラミング方法では複雑なコードに
→ async/await が有効
var client = new SyndicationClient();
var feed = await client.RetrieveFeedAsync(new Uri(feedUri));
48. UI コードの分離
• XAML + C#/VB
• MVVM パターンが有効
• XAML + C++
• HTML5/CSS3 + JavaScript
56. Metro アプリ ライフサイクル
実行開始
(Activate)
アクティブ
一時停止 実行再開
(Suspend) (Resume)
非アクティブ
要状態の保存 終了
(Terminate)
57. 参考資料:
• Windows8 | 眠るシーラカンスと水底のプログラマー
http://coelacanth.heteml.jp/blog/category/windows8/
• Windows 8 Metro Style App samples
http://code.msdn.microsoft.com/windowsapps/
• Programming Windows®, 6th Edition By Charles Petzold
http://shop.oreilly.com/product/0790145369079.do