アプリのデータのローミングのガイドライン

Applies to Windows and Windows Phone

ローミング ApplicationData API を使ってアプリのデータを保存すると、Windows によって、このデータはクラウドにレプリケートされ、アプリがインストールされているその他のすべてのユーザー デバイスに同期されます。ローミング アプリ データが含まれるように Windows ストア アプリを設計するときは、次のガイドラインに従ってください。

アプリケーション データのサンプル ページに、ApplicationData API を使って、ユーザーと Windows ストア アプリごとに特有のデータを保存、取得する方法が示されています。

アプリでローミング データを使うかどうか

ローミング データを使ってユーザーの設定、基本設定、セッション情報を保存し、複数のデバイス間で統一感のあるアプリのエクスペリエンスを提供します。ローミング データがユーザーの Microsoft アカウントに関連付けられていることに注意してください。ローミング データが同期されるのは、ユーザーが同じ Microsoft アカウントを使ってデバイスにログインし、複数のデバイスにアプリをインストールしている場合のみです。

たとえば、ユーザーがデバイスにアプリをインストールした後に別のデバイスにそのアプリをインストールした場合、最初のデバイスで設定されたすべての基本設定が 2 台目のデバイスのアプリに自動的に適用されます (ユーザーが同じ Microsoft アカウントを使って両方のデバイスにログインすることを前提にしています)。それらの設定や基本設定に対する以降の変更もすべて自動的に移行されるため、デバイスに関係なく一貫したエクスペリエンスを得ることができます。セッション情報をローミング データとして保存すると、ユーザーは、あるデバイスで閉じたり中止したりしたアプリ セッションを、別のデバイスに切り替えた後に引き続き使うことができます。

  RoamingSettingsRoamingFolderRoamingStorageQuota の各プロパティは、Windows Phone 用には実装されていません。

  このようなファイルは、RoamingFolder に配置されていてもローミングされません。

  • フォルダーのように動作するファイルの種類 (拡張子が .zip や .cab のファイルなど)
  • 名前の先頭に空白のあるファイル
  • 名前に次の Unicode 文字を含むファイル

    e794、e795、e796、e7c7、e816、e817、e818、e81e、e826、e82b、e82c、e831、e832、e83b、e843、e854、e855、e864、e7e2、e7e3、e7f3

  • ファイル パス (ファイル名 + 拡張子) が 256 文字を超えるファイル
  • 空のフォルダー
  • 開いているハンドルがあるファイル

推奨と非推奨

  • ユーザーの基本設定やカスタマイズ、リンク、小さなデータ ファイルにローミングを使います。たとえば、ローミングを使って、ユーザーの背景色の基本設定をすべてのデバイスで保持します。
  • ユーザーがデバイス間で作業を続けられるようにローミングを使います。たとえば、下書きしたメールの内容やリーダー アプリで最近表示したページなどのアプリ データをローミングします。
  • アプリ データを更新して、DataChanged イベントを処理します。このイベントは、クラウドからのアプリ データの同期が完了したときに発生します。
  • 生データではなくコンテンツへの参照をローミングします。たとえば、オンライン記事のコンテンツではなく URL をローミングします。
  • タイム クリティカルな重要な設定に対しては、RoamingSettings に関連付けられた HighPriority 設定を使います。詳しくは、アプリ データの概要をご覧ください。コード例については、「Quickstart: Roaming app data (Windows Store apps using JavaScript and HTML)」、「Quickstart: Roaming app data (Windows Store apps using C#/VB/C++ and XAML)」、またはアプリケーション データ サンプルに関するページをご覧ください。
  • デバイス固有のアプリ データをローミングしないでください。ローカルにあるファイル リソースのパス名など、ローカルのみに関連した情報もあります。ローカル情報をローミングする場合は、その情報が別のデバイスで無効なときにアプリを回復できることを確認してください。
  • 大量のアプリ データをローミングしないでください。アプリでローミングできるアプリ データの量には制限があります。この最大値を取得するには、RoamingStorageQuota プロパティを使ってください。 この制限に達した場合、アプリ データのサイズが制限を下回るまで、データはローミングできません。アプリを設計する際は、この制限を超えないようにサイズの大きいデータをどのように制限するかを検討してください。たとえば、ゲームの状態を保存するのにそれぞれ 10 KB 必要になる場合は、ユーザーによる保存を 10 ゲームまでに制限したりすると効果的です。
  • 即時同期に依存するデータにローミングを使わないでください。Windows では即時同期が保証されません。ユーザーがオフラインであったり、待ち時間の長いネットワークを使っている場合、ローミングはかなり遅れる可能性があります。UI が即時同期に依存しないことを確認してください。
  • 頻繁に変更されるデータにローミングを使わないでください。たとえば、再生中の曲の秒刻みの位置など、頻繁に変更される情報を追跡する場合は、この情報をローミング アプリ データとして保存しないでください。代わりに、現在再生中の曲など、変更の頻度が少なく、ユーザー エクスペリエンスも損なわないような情報を利用します。

その他の使い方のガイダンス

ローミングの前提条件

アプリ データのローミングは、Microsoft アカウントを使ってデバイスにログインするすべてのユーザーに利点をもたらします。ただし、いつでもデバイスでアプリ データのローミングを切り替えることができるのは、ユーザーとグループ ポリシーの管理者です。 ユーザーが Microsoft アカウントを使わない場合やデータのローミング機能を無効にする場合、ユーザーは引き続きアプリを使用できますが、アプリ データは各デバイスに対してローカルのままになります。

PasswordVault に格納されているデータは、ユーザーが "信頼" しているデバイスにしか移行されません。デバイスが信頼されていない場合、この資格情報コンテナーのセキュリティで確保されているデータはローミングされません。

競合の解決

アプリ データのローミングは、複数のデバイスでの同時使用を想定していません。 2 台のデバイスで特定のデータ単位が変更されたことが原因で同期中に競合が発生した場合、最後に書き込まれた値が常に優先されます。これにより、アプリで最新の情報が利用されます。 データ単位が設定コンポジットの場合、競合の解決は設定の単位で行われ、最新の変更を含むコンポジットが同期されます。

データを書き込むタイミング

想定される設定の有効期間に応じて、データを書き込むタイミングを変える必要があります。変更の頻度が低いアプリ データや変更間隔の長いアプリ データは、変更されたらすぐに書き込むようにします。 ただし、頻繁に変更されるアプリ データは、アプリが中断されたとき以外は、一定の間隔 (5 分に 1 回など) でのみ書き込むようにします。 たとえば、音楽アプリでは、"現在の曲" の設定は新しい曲の再生が始まるたびに書き込みますが、曲の途中の実際の位置は中断したときにのみ書き込みます。

使いすぎに対する保護

リソースの不適切な使用を防止するために、システムにはさまざまな保護メカニズムが備わっています。アプリ データが想定どおりに移行されない場合は、デバイスが一時的に制限されていることが考えられます。通常、この状況はしばらくすると自動的に解決されるため、操作は必要ありません。

バージョン

アプリ データは、バージョンに基づいてデータ構造をアップグレードできます。バージョン番号は、アプリのバージョンとは別の番号で、自由に設定することができます。強制ではありませんが、バージョン番号は新しいデータほど大きくすることを強くお勧めします。新しいデータを表すバージョン番号が小さくなると、データ損失などの望ましくない問題が発生する可能性があります。

アプリ データのローミングは、バージョン番号が同じインストールされたアプリの間でしか行われません。たとえば、どちらもバージョン 2 のデバイスの間やどちらもバージョン 3 のデバイスの間ではデータが移行されますが、バージョン 2 を実行中のデバイスとバージョン 3 を実行中のデバイスの間ではローミングは行われません。 他のデバイスでさまざまなバージョン番号を利用していたアプリを新たにインストールする場合、新たにインストールしたアプリは、最も大きいバージョン番号と関連付けられているアプリ データを同期します。

テストとツール

開発者は、ローミング アプリ データの同期をトリガーするためにデバイスをロックできます。 一定の期間にわたってアプリ データが移行されていない場合は、次の点を確認してください。

  • ローミング データの最大サイズを超えていないこと (詳しくは、「RoamingStorageQuota」をご覧ください)。
  • ファイルが閉じていて、適切に解放されていること。
  • 同じバージョンのアプリを実行しているデバイスが 2 台以上あること。

開発者は Windows 8 Roaming Monitor を使用して、アプリのローミング状態を監視し変更することができます。

Windows ストア アプリと Windows Phone ストア アプリの間のデータのローミング

アプリの 2 つのバージョン (Windows ストア用のバージョンと Windows Phone 用のバージョン) を公開する場合、2 種類の異なるデバイスで実行されているアプリ間でアプリ データをローミングできます。異なる種類のデバイス上の異なるバージョンのアプリ間でデータをローミングするには、アプリの各バージョンに同じパッケージ ファミリ名 (PFN) を割り当ててください。

詳しくは、「Windows ストア アプリと Windows Phone ストア アプリ間でデータをローミングする方法」をご覧ください。

関連トピック

開発者向け (HTML)
アプリ データの概要
クイック スタート: アプリケーション データのローミング
Windows.Storage.ApplicationData
Windows.Storage.ApplicationData.RoamingSettings
Windows.Storage.ApplicationData.RoamingFolder
Windows.Storage.ApplicationData.RoamingStorageQuota
Windows.Storage.ApplicationDataCompositeValue
開発者向け (XAML)
アプリ データの概要
クイック スタート: アプリケーション データのローミング (C#/VB/C++)
Windows.Storage.ApplicationData
Windows.Storage.ApplicationData.RoamingSettings
Windows.Storage.ApplicationData.RoamingFolder
Windows.Storage.ApplicationData.RoamingStorageQuota
Windows.Storage.ApplicationDataCompositeValue
サンプル
アプリケーション データ サンプルに関するページ

 

 

表示:
© 2014 Microsoft