windowストアアプリ コントラクトとライフサイクル
DESCRIPTION
TRANSCRIPT
Windows Store AppsContract and Application Lifecycle森 博之 (Microsoft MVP for Silverlight)
極東IT-Engineers 代表/RIAアーキテクチャ研究会
Windowsストアアプリ
コントラクトと
アプリケーションライフサイクル
Community Open Day 2013
自己紹介Self-introduction
• 森 博之(もり ひろゆき)• フリーランスエンジニア/テクニカルライター• 極東IT-Engineers 代表• RIA Architecture研究会• Microsoft MVP for Silverlight• 著書
• 「.NET開発者」のためのSilverlight入門• Windows 8 [入門+実用] Windowsストアアプリ開発入門
Community Open Day 2013
アジェンダAgenda
• 開発者視点から見たWindows 8
• コントラクトと機能拡張
• アプリケーションライフサイクル
Community Open Day 2013
開発者視点から見たWindows 8Community Open Day 2013
Windows8を取り巻く環境Around the Windows 8
• スマートフォン/タブレットの普及
⇒タッチエクスペリエンスの普及
• 高繊細・高性能ディスプレイ/ビデオカードの登場
⇒表現力の向上
• ハードウェア/パーツの小型化
⇒GPS・電子コンパス・NFC・カメラなど
Community Open Day 2013
OSの役割とはAbout Operating System
• ハードウェアの制御(ハードウェアの抽象化)
• アプリケーションからの制御(APIの提供)
• ユーザーインターフェースの提供(ユーザーエクスペリエンス)
これらが協調・統合する方向に進化している
Community Open Day 2013
Windows 8では…Windows 8 is ...
• 新しいスタートメニュー
⇒タッチインタラクションに 適化/アプリ情報の表示
• チャームによるアプリ連携
⇒OS機能とアプリとの連携
• Windowsストア
⇒インストールエクスペリエンスの向上
Community Open Day 2013
開発者視点で見ると...Developer’s eyes
• 新しいスタートメニュー
⇒アプリからOSへ情報を通知しなければ…
• チャームによるアプリ連携
⇒OSとアプリ間で相互連携しなければ…
• Windowsストア
⇒アプリからストアに対して情報を公開しなければ…
Community Open Day 2013
コントラクト!Contract !
• OSや他のアプリとの連携を支える仕組み
• アプリ視点では外部との連携を行うための取り決め
Community Open Day 2013
コントラクトと拡張機能Community Open Day 2013
コントラクトはどのように行うかHow to contract
• 利用する機能をマニフェストに宣言
• 決められたロジックを追記する
Community Open Day 2013
デモDemonstration
• サンプル
• アプリへの検索の追加• http://msdn.microsoft.com/ja-jp/library/windows/apps/xaml/JJ130767(v=win.10).aspx
• http://msdn.microsoft.com/ja-JP/windows/apps/jj674832
Community Open Day 2013
検索コントラクトSearch ContractCommunity Open Day 2013
アプリマニフェストで検索コントラクトを宣言
アプリの検索ページを作成
メインアプリの時、検索クエリに応答する
メインアプリじゃない時、検索クエリに応答する
フィルターや検索結果の表示を行う
空の検索クエリに対するアクティブ化の処理
コントラクトと拡張機能Contract and Extensions
コントラクト• キャッシュファイルアップデーターコントラ
クト
• ファイルオープンピッカーコントラクト
• ファイル保存ピッカーコントラクト
• リモート再生コントラクト
• 検索コントラクト
• 設定コントラクト
• 共有コントラクト
拡張機能• アカウントの画像プロバイダー
• 自動再生
• バックグラウンドタスク
• カメラの設定
• 連絡先ピッカー
• ファイルのアクティブ化
• ゲームエクスプローラー
• 印刷タスク設定
• プロトコルのアクティブ化
• SSL/証明書
Community Open Day 2013
1つ以上のアプリ間とのコントラクト アプリとOSのコントラクト
アプリケーションのライフサイクルCommunity Open Day 2013
アプリのライフサイクルは…App Lifecycle is...
• デスクトップアプリではアプリが起動してから終了するまでに必要となる処理や発生するイベントに対応するロジックを記述すればよい
⇒Windowsストアアプリのライフサイクルは異なる
⇒スマートフォンのようなライフサイクルの管理が必要
Community Open Day 2013
スマホのライフサイクル?What’s a smartphone lifecycle?
• スマートフォンでは…
• 多くのスマホではUI上シングル起動
• バックグラウンド動作する場合もある
• 必要に応じてアプリが復元・終了する
Community Open Day 2013
アプリのライフサイクルWindows Store Apps Lifecycle.
• Windowsストアアプリのライフサイクル
• アプリの展開
• Windowsストアからアプリパッケージを展開する
• アプリの実行
• のちほど…
• アプリの削除
• 削除時にはアプリのローカルデータと共に削除される
Community Open Day 2013
アプリの実行Execute ApplicationCommunity Open Day 2013
• アプリの状態• Running(実行中)
• NotRunning(実行されていない)
• Suspended(中断)
• アプリの振る舞い• Activated
• Suspending
• Resuming
アクティブ化~実行中Activated~Running
• アクティブ化• アプリの起動時
• コントラクトからの起動(検索や他アプリ)
• Activatedイベントにより通知される• OnLaunchedメソッドのイベント引数にあるPreviousExecutionStateにより前回どのように終了していたかを取得できる。
⇒初回起動なのか、前回を復元するのかを選択する
Community Open Day 2013
デモDemonstration
• サンプル
• Windowsストア : Gridアプリケーション
Community Open Day 2013
アプリの一時停止Suspending Apps
• 一時停止• アプリを切り替えた場合、Windowsが低電力状態となった場
合にアプリを一時停止する⇒ユーザーがすぐ復帰する場合もあるため、数秒待機して一時停止する⇒Suspendingイベントが登録されていたら、一時停止前にイベントに通知される⇒アプリデータのメモリ状況を保持するメモリがない場合、アプリは終了する⇒必要に応じたデータ保存を行う仕組みが必要になる
Community Open Day 2013
デモDemonstration
• サンプル
• Windowsストア : Gridアプリケーション
Community Open Day 2013
アプリの復元方法Resuming Apps
• アプリの復元
• システムにより可能な限りの復元が行われる
• ただし、ニュースアプリのような時間経過によって内容が変化するアプリは更新が必要になる
• ⇒Resumingイベント
• 復元できない場合はアクティブ化時にデータを復元する必要がある
• ⇒Suspending時に適切にデータ保存しておく必要がある
Community Open Day 2013
デモDemonstration
• サンプル
• Windowsストア : Gridアプリケーション
Community Open Day 2013
まとめIn conclusion
• Windowsやアプリの進化⇒コントラクト
• コントラクトと拡張機能• コントラクト:1つ以上のアプリ間とのコントラクト
• 拡張機能:アプリとOSのコントラクト
• ライフサイクル• スマートフォンのようなライフサイクルの管理が必要
Community Open Day 2013
ご清聴ありがとうございましたThank youCommunity Open Day 2013