Introducing Windows Runtime Hokuriku.NET vol /8/30 Sat 遥佐保(はるか・さお)
はじめに
@hr_sao Room metro Osaka C++ テンプレート読書会 Microsoft MVP for Client App Dev[Jan,2010-Dec,2013] Microsoft MVP for Client Development [Jan,2014-Jun,2014] Microsoft MVP for Windows Platform Development [Jul,2014-Dec,2014]
Windows Runtime のファンを増やす! もっと一緒に勉強してくれる人が増えたらいいな … 本日の目的
1. Windows Runtime architecture 2. Process 3. Features 4. Visual Studio Template 5. Universal windows apps 6. Windows store 7. Add deployment Topics
1. Windows Runtime architecture
Windows Runtime Technology Stacks Windows SDKs WinRT (native) XAML -Windows8.1 DirectX / XAML -DirectX11.2 C/C++ -C++11 CRT HTML / CSS -Trident C# / VB FCL JavaScript -Chakra WinJS 描画 言語 VM CLR (native) Internet Explorer -WWAHost.exe Win32 / COM Core Controls Data and content Devices Files and Folders Globalization Graphics Helpers Media Networking Printing Presentation Remote Desktop Security Social UI Automation User interaction API (公開さ れてい る機能) Desktop Windows Store Apps
Windows Store Apps から Win32/COM へは、原則呼び出し禁止 Windows Store Apps から呼び出しを許可されている COM はある Win32 and COM for Windows Store apps Windows SDKs Windows Runtime Win32 / COM Desktop AppsWindows Store Apps
Windows SDKs Windows Runtime Use Language Windows Store Apps C/C++ -C++11 C# / VB JavaScript -Chakra
全ての言語から利用できるための API とは? WinMD ファイル – metadata (ECMA-335) C:\Windows\System32\WinMetadata にある.winmd 拡張子 型やメンバが 記述されている Windows MetaData
メタデータを記載している Windows Runtime の実体は EXE や DLL HKLM\Software\Microsoft\WindowsRuntime\ActivatableClassId WinMD DLL
Windows SDKs Windows Runtime Application Binary Interface Windows Store Apps C/C++ C# / VB JavaScript Application Binary Interface Windows Runtime は全て、 ABI を通じて API 提供を行う
Windows SDKs Windows Runtime WinRT API projection - C#/VB Windows Store Apps Windows Runtime WinMD C# / VB 1 2 CLR
Windows SDKs Windows Runtime WinRT API projection - C++/CX Windows Store Apps C/C++ Windows Runtime WinMD 1 2
Windows SDKs Windows Runtime WinRT API projection - JavaScript Windows Store Apps Windows Runtime WinMD JavaScript Internet Explorer -WWAHost.exe
Windows SDKs Windows Runtime Windows Store Apps C/C++ C# / VB JavaScript Application Binary Interface Windows Runtime と ABI のおかげで、各言語の相互利用が可能
2. Process
プロセスが Active 化するのは 2 パターン メインビューのアクティブ化 Activation (1)
Activation (2) ホステッドビューのアクティブ化
アクティブ化の方法は 2 つある Windows ストアアプリのインスタンスは 1 つ - App オブジェクトはシングルトン Initialization
Process life time アプリに終了の概念はなし 待機時、バックグラウンドタスクを実行できる Background task
3. Features
パッケージデータ ストレージ ストリーム ネットワーク 通知 バックグラウンドタスク Windows Runtime Features 共有 広告 アプリ内課金
Package Data
Windows::Storage::ApplicationData::Current いわゆるセーブ領域 テンポラリ保存 ローカル保存 ローミング C:\Users\[ ユーザ名 ]\AppData\Local\Packages \[ パッケージファミリ名 ]\LocalState\_sessionState.dat ApplicationData
Notification ?
Push Notification Windows Push Notification Services (1) ストアアプリの初回起動で PushNotificationChannelManager.CreatePushNotificationCahnellForApplicationAsync() を実行 (1) (2) (2) Web サービスにチャネル URI (さっき (1) で取得したもの)を 送信する ※ 30 日で期限は切れる URI (例)
Push Notification Windows Push Notification Services (3) 取得した URI(2) に、通知したいメッセージを付けて WNS に送信する ※アプリ開発者だけが知っているクライアントシークレットを 付けて OAuth トークンを発行してもらう (1) (3) (4) タイルの更新やトースト通知が実施される (2) (4)
Sharing data between apps
クリップボードはシステムで 1 つだけ static 実装されている Windows.ApplicationModel.DataTransfer.Clipboard Sharing data - Clipboard
例 ← ← IE のリンクを受け取 る FB アプリ Shareing 共有ソースアプリ (共有するデータを持っている) ターゲットアプリ (共有されたデータを受け取る)
ソースアプリ( IE )で共有したいものを DataPackage に入れておく ※ターゲットアプリ( FB )と共有できる Windows.ApplicationModel.DataTransfer.DataPackage Sharing data - DataPackage
Advertisement
* Windows ストア アプリで収益を上げるには -
Microsoft Advertising SDK のインストール - Microsoft pubCenter に登録 - Ad Control の貼り付け Advertisement
テスト用のコードが簡単に利用できる 自分のやつは pubCenter で Get! Ad control
アプリ内課金 Windows.ApplicationModel.Store アプリケーションのライセンスの状態を確認 (評価版またはアクティブなライセンスなど) アプリ内機能の確認 アプリ内購入
4. Visual Studio Template
IPropertySet^ vals = ApplicationData::Current->LocalSettings->Values; if( vals->HasKey( "my_data” )){ vals->Remove( “my_data"); } vals->Insert( "my_data", “Hokuriku" ); if( pageState->HasKey( "my_data” )){ pageState->Remove( “my_data" ); } pageState->Insert( "my_data", “Hokuriku" ); Ex) ApplicationData ApplicationData を直接使う VS テンプレートの NavigationHelper クラスの pageState を使う
VS 付随のプロジェクトテンプレートがある テンプレート固有話なのか? WinRT の話なのか? Visual studio Template
5. Universal windows apps
1 つのソースで Windows ストアアプリと Windows Phone アプリの開発が出来る - ただし、 XAML は別 どちらかのストアで購入すると、もう片方でも 購入済みになる データが同期される * めとべや東京 #4 の資料公開。「ユニバーサル Windows アプリ入門」 # めとべや東京 -
これからプロジェクトを作るなら、ユニバーサル がおススメ Windows Phone → Universal apps いばらの道 Windows store apps → Universal apps まぁ出来る Universal apps → Windows store apps WP 版を使わなけ ればよい Universal apps → Windows Phone ストア版を使わ なければよい
6. Windows store
Windows Developer Center
ストアへの お布施 (年単位)
とにかく名前を登録する プッシュ通知などに必要 な情報はここでしか得ら れない (※企業用は別) app for certification
Live Services site
7. App deployment
「アプリをデプロイする」「配布する」とは? → 開発者が Windows ストアに 自分のアプリを登録すること ※その後、ユーザはアプリをクライアント PC に インストールする Deployment …?
(1) Visual Studio で開発し Visual Studio から実行 開発者ライセンスを使って実行 - 無料ライセンス( 30 ~ 90 日程度で更新かな ? ) もちろん VS 持ってないとダメ How to Install (1/4)
(2) Add-AppxPackage PowerShell コマンドを用いて インストールする 開発者ライセンスを使って実行 パッケージの証明書入れる必要あり ( CertUtil.exe ) Add-AppxPackage でインストール * # めとべや 東京 2 で Sideloading Windows Store apps with PowerShell について発表して きました 資料公開 How to Install (2/4)
(3) 企業内でサイドローディングして配布する ActiveDirectory 参加必須 - なので無印 WindowsRT はだめ(企業向け) エンタープライズサイドローディングキーを別 途購入する必要がある * WINDOWS ストア アプリのサイドローディングについて _blog/archive/2014/03/12/ windows.aspx _blog/archive/2014/03/12/ windows.aspx How to Install (3/4) Open License, Select Plus で購入可能 Windows 8.1 Enterprise Sideloading (10 Pack) と Windows 8.1 Enterprise Sideloading (100 Pack) がある
(4) Windows ストアに出す! マイクロソフトがアプリを事前にチェック 合格したものだけをストアに出展 ストアに出すためにアプリ開発契約者(有料) になる必要がある Windows ストアから Download & Instatll How to Install (4/4)
Fun…
クライアントで動作する Windows Runtime の 仕組みを知る Windows Runtime の固有機能を知る その次に Visual Studio Template/Universal windows apps Windows ストアの登録、配布、インストール も忘れずに Let’s Windows Runtime
プログラミング WindowsRuntime 参考