BUILD: Metro スタイル アプリ開発に関連したセッションの紹介 (1/4)


みなさん、こんにちは。Windows 開発統括部の古内です。 「予防接種したから大丈夫」 と油断していたら、インフルエンザにかかってしまいました。徐々に減少傾向にはあるようですが、まだまだ全国的に流行っています。みなさんもどうぞお気を付けください。

さて、Windows 8 (コード ネーム) では Metro スタイルのユーザー インターフェイスが採用されていますが、そのMetro スタイル用のアプリ開発について説明した BUILD イベントのセッションを、4 回にわたって取り上げていきたいと思います。

第一回目の今日は、Metro スタイル アプリの基礎について説明した 「APP-409T: Fundamentals of Metro style apps: how and when your app will run」 を紹介します。第二回目以降は、

を予定しています。いずれのセッションも、スライドの日本語翻訳版を、それぞれの Web ページからダウンロードできるようになっていますので、どうぞご利用ください。 また、Metro スタイル アプリの概要を説明した「BPS-1004: 8 traits of great Metro style apps」 (解説はこちら) も併せてご参照ください。

では、早速 APP-409Tの解説に移りましょう。このセッションは、Windows 8 での Metro スタイル アプリの起動、実行、および終了について説明したものです。Channel 9 のサイトからダウンロードできる、このセッションのスライドの日本語翻訳版には、講師が話している内容 (トランスクリプト) の翻訳も含まれていますので、ぜひご活用ください。

Metro スタイルアプリのプロセス

Windows 7 (およびそれ以前) では、起動されたアプリすべてに対してシステムリソースが費やされていました。Windows 8 では、もっとも前面にあるアプリ (ユーザーが現在使用しているアプリ) に対して、システム リソースが優先的に割り当てられ、バックグラウンドのアプリ (非アクティブなアプリ) は OS によってサスペンドされたり、状況 (メモリ不足など) によっては終了させられる場合もあります。ただし、サスペンドされたアプリはメモリ内に残っているので、アプリを切り替えた際に瞬時に戻ることができます。

デモ 1: アプリのプロセス ライフサイクル (ビデオの 05:17)

  1. Windows Task Manager (タスク マネージャー) を起動する
  2. Weather アプリ (Metro スタイル アプリ) を起動し、タスク マネージャーで CPU とメモリの使用率を確認する
  3. 他のアプリ (デスクトップ) を前面に持ってくると、Weather アプリがサスペンドされた (CPU 使用率が 0% になり、”Suspended” と表示される) ことを確認する
  4. 大量のアプリを起動し続け、勝手に Weather アプリが終了された (タスク マネージャーからエントリが消える) ことを確認する

アプリの起動

Windows 7 (およびそれ以前) では、アイコンをダブルクリックしてアプリを起動していましたが、Windows 8 ではコントラクトによってアプリが 「アクティブ化」 されます。コントラクトには様々な種類がありますが、その中でもLaunch (起動)、Search (検索)、Share (共有) コントラクトがよく使われるものです。起動コントラクトは、通常のタイルをタップ (クリック) してアクティブ化する方法です。

デモ 2: コントラクトによるアプリのアクティブ化 (ビデオの 15:10)

  • 検索コントラクトからのアクティブ化: 検索ビューから提供されたコンテキストを使って検索を実行し、該当するアプリをアクティブ化
  • 共有コントラクトからのアクティブ化: 共有チャームで別のアプリを選択してアクティブ化し、コンテキストを共有

スプラッシュ スクリーンは、アプリの起動時に Windows によって表示される画面で、ロゴと色から成ります。15秒でアクティブ化が完了しなかった場合は、そのアプリは終了されます。そのため、15秒で完了しない場合 (起動や読み込みに時間がかかる場合) は、延長スプラッシュスクリーンを使用します。延長スプラッシュ スクリーンは Windows システムが表示するのではなく、アプリが制御するもので、Splash Screen API を読んで実現します。(Splash Screen サンプルは、こちらからダウンロードできます。)

常に実行しているように見せるためのヒント

Windows 8 では、頻繁にアプリが終了されます。安定したユーザーエクスペリエンスを提供するには、

  • ユーザーのデータをこまめに保存する
  • アプリのデータ (設定 – ローミング用) をこまめに保存する

べきです。

デモ 3: 状態の保存と復元 (ビデオの 27:39)

  • 何も処理してないと、アプリが終了して再起動した際、前回のデータはなくなってしまう。
  • アプリの再起動時に、ユーザーが前回使用した状態に復元するには、suspendingHandler を呼び出し、
    • saveState 関数を定義して状態を保存する。
    • loadState 関数をアプリの初期化時に呼び出して、前回の状態を復元する。
  • App activating and suspending events サンプルはこちら
  • App activation events and session state サンプルはこちら

アプリが常に実行しているように見させるには、ライブ タイルを活用するのも手です。通知機能を使用して、ユーザーがアプリを使用していない時にも情報を提供できます。タイルの更新方法には以下の 2 つがあります。

  • ローカル更新: Local Notification API を呼び出して処理。アプリが実行中の場合のみ更新可能
  • プッシュ通知: Windows プッシュ通知サービス (WNS) を使用して、クラウドから送信された情報を表示。アプリが実行中でなくても更新可能

アプリをバックグラウンドで実行することもできます。たとえば、BGMとしてバックグラウンドでオーディオを再生したり、ダウンロードまたはアップロードをバックグラウンドで実行 (サスペンド中も続行) したりできます。ロック画面もバックグラウンドで実行可能なアプリと言えます。

まとめ

セッションの内容をまとめると、Windows 8 では、アプリはバックグラウンドに持って行かれるとサスペンドされ、最終的には終了されます 。アプリが常に実行中であるように見せるためには、常に状態を保存し、アクティブ化された際にユーザーの前回の使用状態を復元することが重要です。また、ライブタイルを活用することも有効です。

Comments (0)

Skip to main content