SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

速習 Windowsストアアプリケーション

Windowsストアアプリのバックグラウンド処理

速習 Windowsストアアプリケーション 第9回

 Windows 8が発売され、タッチ操作向けのアプリケーションのストア「Windowsストア」がオープンしました。本記事ではその新しい「Windowsストア」向けのアプリケーションを開発するお手伝いをします。今回は、バックグラウンド処理について紹介していきます。

はじめに

 前回は、ストアアプリの起動をうながすライブタイルとトースト通知について解説しました。

 ライブタイルとトースト通知は、ストアアプリが起動していない場合にユーザーに情報を提供する手段でした。今回紹介するバックグラウンド処理は、ストアアプリが起動していない状態で、ライブタイルやトーストなどの情報の通知を含めたさまざまな処理を実行する方法です。

 例えば、ストアアプリがバックグラウンドに回った状態で音楽の再生やダウンロードを続ける、リアルタイムに情報を取得する、ネットワークの切断といったイベントに応じた処理は、バックグラウンド処理を実装することで実現可能です。

バックグラウンドタスク

 バックグラウンドタスクとは、バックグラウンドで行う処理の中でも、音楽再生やダウンロードの継続などの特定の動作ではなく、プログラミングされたコードを実行する処理を指します。

 バックグラウンドタスクを実行する場合、フォアグランドで動作するストアアプリに比べて制限があることを理解しなければなりません。制限とは利用できるリソースの制限、動作を行えるタイミングの制限、機能制限です。

リソースの制限

 バックグラウンドにはリソースの制限があります。これはバックグラウンドで重い処理を走らせることでフォアグランドのストアアプリの動作が重くなったり、バッテリーを大量に消費してしまうことを避けるためです。

 バックグラウンドのリソース制限はOSにより制御されるため、ストアアプリはこのリソース内で処理を終わらせる必要があります。また、ストアアプリがロック画面に表示されているかどうかによっても、与えられるリソースが異なります(ロック画面に表示されているストアアプリはそれ以外より多いリソースが与えられます)。

 例えば、CPUの利用について以下のような制限があります。また端末がAC電源に接続されているか否かで、ネットワークリソースの制限を受けます。

CPUの制限
ロック画面上にある場合 CPU使用率クォータ:2秒 更新時間:15分
ロック画面上にない場合 CPU使用率クォータ:1秒 更新時間:2時間

 詳しくは「バックグラウンドタスクによるアプリのサポート」ドキュメントの「バックグラウンドタスクリソースの制限」の項目を参照ください。

動作タイミングの制限

 バックグラウンドタスクは、いつでも自由なタイミングで動作できるわけではなく、特定のトリガー(引き金となるイベント)を起点として動作します。

 トリガーにはシステムイベントを引き金としたシステムトリガーや、タイマーで定期的(最短15分おき)に実行するタイマートリガーなどがあります。

主なシステムトリガー
  • InternetAvailable:インターネットが利用可能になったタイミング
  • NetworkStateChange:ネットワークの変更が行われたタイミング
  • OnlineIdConnectedStateChange:アカウントに関連付けられたオンラインIDが変更になったタイミング
  • SmsReceived:新しいSMSメッセージを受信したタイミング
  • TimeZoneChange:タイムゾーンが変更されたタイミング
それ以外のトリガー
  • ControlChannelTrigger:ネットワーク接続を維持した状態でメッセージを受信したタイミング
  • TimeTrigger:タイマー処理で定期的に実行されるタイミング
  • PushNotificationTrigger:プッシュ通知を受け取ったタイミング

 それ以外にも、ロック画面に対応したストアアプリのみ利用できるトリガーも存在します。

ロック画面対応ストアアプリ限定のトリガー
  • UserPresent:ユーザーが在席になったタイミング
  • UserAway:ユーザーが不在になったタイミング
  • ControlChannelReset:コントロールチャネルがリセットされたタイミング
  • SessionConnected:セッションが接続されたタイミング
  • LockScreenApplicationAdded:アプリのタイルがロック画面に追加されたタイミング
  • LockScreenApplicationRemoved:アプリのタイルがロック画面から削除されたタイミング

機能の制限

 バックグラウンドタスクを利用すればプログラム処理を実行できますが、ユーザーインターフェース(UI)の操作は行えません。

 バックグラウンドタスク実行時にはローカルストレージなどに情報を保存して、ストアアプリがフォアグラウンドで起動した際にその情報をもとにUIを構成することは可能です。

バックグラウンドタスクのサンプル

1. バックグラウンドタスク用のプロジェクトを作成

 まずは、ストアアプリのプロジェクトとは別のプロジェクトをバックグラウンド処理用に用意します。

 画面右の「ソリューションエクスプローラー」のソリューション名の位置でマウスを右クリック→「追加」→「新しいプロジェクト」をクリックします。

バックグラウンドタスク用のプロジェクトを作成する
バックグラウンドタスク用のプロジェクトを作成する

 プロジェクトは「Windows ランタイム コンポーネント」を選択し、任意の名前を付けて「OK」ボタンを押します。

Windows ランタイム コンポーネントを作成
Windows ランタイム コンポーネントを作成

 これでソリューションエクスプローラーに、2つのプロジェクトが存在した状態になりました。

Windows ランタイム コンポーネントが追加された
Windows ランタイム コンポーネントが追加された

次のページ

この記事は参考になりましたか?

速習 Windowsストアアプリケーション連載記事一覧

もっと読む

この記事の著者

西村 誠(ニシムラ マコト)

 Microsoft MVP Windows Platform Development。 Flash、PHPの開発経験もあり国産ECサイト構築フレームワーク「EC-CUBE」の公式エバンジェリストでもある。 ブログ:眠るシーラカンスと水底のプログラマー 著書:基礎から学ぶ Windowsストアアプリ開発

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/7329 2013/08/30 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー