Windows ランタイムを使ったアプリ データへのアクセス (Windows ストア アプリ)
アプリケーション データとは、特定のアプリに固有の実行可能データです。ランタイム状態、ユーザー設定、その他の設定が含まれます。アプリケーション データは、アプリの実行時に作成、読み取り、更新、削除が行われます。
デスクトップ アプリでは、レジストリに設定を保存し、Program Files フォルダーにファイルを保存することをお勧めします。Windows ストア アプリでは、アプリのデータ ストアに、各アプリとユーザーに固有の設定とファイルを保存することをお勧めします。アプリのデータ ストアはシステムに管理され、他のアプリや他のユーザーから確実に分離されます。また、アプリに更新プログラムをインストールするときはデータ ストアの内容が保持され、アプリのアンインストール時にはデータ ストアの内容が完全に削除されます。
アプリケーション データ サンプルに関するページに、Windows ランタイム アプリケーション データ API を使って、ユーザーと Windows ストア アプリごとに特有のデータを保存および取得する方法を示します。
アプリケーション データに関する重要な注意: アプリケーション データの有効期間はアプリの有効期間に依存します。アプリが削除されると、すべてのアプリケーション データが失われます。ユーザー データなど、ユーザーにとって欠かすことができない重要なデータの保存には、Application Data を使わないでください。そのような情報の保存には、ユーザーのライブラリや SkyDrive を使います。Application Data は、アプリ固有のユーザー設定、設定、お気に入りを保存するのに適しています。
アプリケーション データ記憶域
アプリのインストール時には、設定やファイルなどのアプリケーション データ用に、ユーザーごとに固有のデータ ストアが設定されます。物理的記憶域はシステムによって管理されるため、このデータの場所や形式を開発者が意識する必要はありません。アプリケーション データの操作を簡単にするアプリケーション データ API を使うだけでよいのです。
データ ストアは次のとおりです。
- ローカル
-
現在のデバイス上にのみ存在する永続的なデータ。
- ローミング
-
ユーザーがアプリをインストールしたすべてのデバイス上に存在するデータ。
- 一時
-
システムによって任意の時点で削除されるデータ。
アプリが削除されると、これらのデータ ストアも削除されます。
必要に応じて、アプリのアプリケーション データをバージョン管理することもできます。そうすれば、将来作成するアプリのバージョンでアプリケーション データの形式を変更しても、以前のバージョンとの互換性に問題が起こりません。データ ストア内のアプリケーション データのバージョンをアプリが確認し、以前のバージョンであった場合、アプリケーション データを新しい形式に更新してバージョンも更新します。詳しくは、Application.Version プロパティと ApplicationData.SetVersionAsync メソッドに関するトピックを参照してください。
アプリの設定
アプリのデータ ストア内の設定は、レジストリに格納されます。アプリケーション データ API を使う場合、レジストリのアクセスは透過的です。アプリのデータ ストア内には、アプリごとに設定用のルート コンテナーがあります。アプリで、ルート コンテナーに設定や新しいコンテナーを追加できます。新しいコンテナーを作成すると、設定の整理に役立ちます。コンテナーは 32 階層まで入れ子にできます。ツリーの幅に制限はありません。
コンポジット設定を使うと、相互に依存する設定のアトミックな更新が簡単になります。同時アクセスとローミング時は、システムによってコンポジット設定の整合性が保たれます。コンポジット設定は少量のデータに適しており、大きなデータ セットに使うとパフォーマンスが低下する場合があります。
アプリの設定はローカルまたはローミングです。アプリがローカル データ ストアに追加する設定は、ローカル デバイス上にのみ存在します。アプリがローミング データ ストアに追加する設定は、ユーザーがそのアプリをインストールしたすべてのデバイス上に自動的に同期されます。
アプリの設定には、Windows ランタイム データ型を使うことができます。
バイナリ型はありません。バイナリ データを保存する必要がある場合は、アプリケーション ファイルを使ってください。
書き込まれるデータのサイズがデータ型のサイズと一致するかどうかが、システムによって確認されます。データの検証はシステムによって行われないため、書き込んでから読み取るまでの間にデータが変更されたかどうかを確認する必要があります。
アプリ ファイル
アプリのデータ ストア内のファイルは、ファイル システムに格納されます。アプリのデータ ストア内のファイルは、Windows 7 のユーザー プロファイルの AppData 部分にあるファイルと同じようにアプリで使うことができます。各アプリのデータ ストア内には、ローカル ファイル用、ローミング ファイル用、一時ファイル用に 1 つずつ、システム定義のルート ディレクトリがあります。アプリで、ルート ディレクトリに新しいファイルや新しいディレクトリを追加できます。新しいディレクトリを作成すると、ファイルの整理に役立ちます。アプリのデータ ストア内のディレクトリは 32 階層まで入れ子にできます。ツリーの幅に制限はありません。
アプリのファイルはローカルまたはローミングです。アプリがローカル データ ストアに追加するファイルは、ローカル デバイス上にのみ存在します。アプリがローミング データ ストアに追加するファイルは、ユーザーがそのアプリをインストールしたすべてのデバイス上に自動的に同期されます。
ローカル アプリケーション データ
ローカル アプリケーション データは、アプリケーション セッション間で保持する必要がある情報のうち、種類やサイズがローミング アプリケーション データには適さないものに使います。また、他のデバイスには適用されないデータもここに格納します。ローカルに格納されるデータには、一般的なサイズの制限はありません。 この場所には、 localFolder プロパティでアクセスできます。 アプリのローカル データ ストアは、ローミングに適さないデータや、大きなデータ セットに使ってください。
コード例については、次のトピックをご覧ください。
ローミング アプリケーション データ
アプリでローミング データを使うと、複数のデバイス間でアプリケーション データを簡単に同期できるようになります。アプリを複数のデバイス上にインストールすると、Windows によってアプリケーション データの同期が保たれるため、2 つ目のデバイス上でユーザーが行うアプリのセットアップ作業が軽減されます。またローミングを使うと、異なるデバイス上でも、一覧の作成などの作業を中断したときの状態から再開することができます。ローミング データが更新されると、Windows によってクラウドにレプリケートされ、アプリがインストールされている別のデバイスに同期されます。
Windows では、各アプリでローミング可能なアプリケーション データのサイズに制限があります。 「ApplicationData.RoamingStorageQuota | roamingStorageQuota」をご覧ください。この制限に達した場合、アプリでローミングされたアプリケーション データの合計が制限値未満に戻るまで、そのアプリのアプリケーション データはクラウドにまったくレプリケートされません。このため、ローミング データは、ユーザー設定、リンク、小さなデータ ファイルのみに使うことをお勧めします。
通常、アプリのデータは変化しません。しかし、ローミング アプリ データはいつでも変化する可能性があります。アプリに、ローミング アプリ データの変更時に発生する DataChanged | datachanged イベントの処理を登録する必要があります。
新しいバージョンのアプリをインストールしたために、デバイス上のアプリケーション データが新しいバージョンに更新されると、そのアプリケーション データがクラウドにコピーされます。アプリが既にインストールされている別のデバイスでは、そのデバイス上のアプリが更新されるまで、アプリケーション データが更新されることはありません。
アプリのローミング データは、一定の時間間隔内にユーザーがいずれかのデバイスからアクセスしている限り、クラウドに保持されます。この時間間隔内にアプリが実行されないと、そのローミング データはクラウドから削除されます。ユーザーがアプリをアンインストールしても、そのローミング データがクラウドから自動的に削除されることはなく、保持されます。時間間隔内にユーザーがアプリを再インストールすると、ローミング データがクラウドから同期されます。現在のポリシーでは、この時間間隔は 30 日です。 この場所には、roamingFolder プロパティでアクセスできます。
Windows は機会があるときにアプリ データをローミングするため、瞬間的な同期は保証されません。ユーザーがオフラインであったり、待ち時間の長いネットワークを使ったりしている場合、ローミングはかなり遅れる可能性があります。タイム クリティカルな重要な設定に対しては、優先度が高い特殊な設定単位を使って、より頻繁に更新することができます。これは 1 つの特定の設定単位に制限され、"HighPriority" という名前にする必要があります。コンポジットにすることもできますが、合計サイズは 8 KB に制限されます。この制限は強制的なものではなく、制限を超えた場合は、通常の設定単位または設定コンポジットと同様に扱われます。
コード例については、次のトピックをご覧ください。
ガイドラインについては、「アプリのデータのローミングのガイドライン」をご覧ください。
一時アプリケーション データ
アプリの一時データ ストアは、キャッシュのような働きをします。ファイルはローミングされず、任意の時点で削除されます。システム メンテナンス タスクを使うと、この場所に格納されているデータをいつでも自動的に削除できます。ディスク クリーンアップを使って、一時データ ストアからファイルを削除することもできます。 一時アプリケーション データは、アプリケーション セッションの一時的な情報の格納に使うことができます。このデータは、アプリケーション セッションの終了後に保持されるという保証はありません。必要に応じて使用領域が再利用されます。 この場所には、temporaryFolder プロパティでアクセスできます。
コード例については、次のトピックをご覧ください。
アプリケーション データ プログラミング インターフェイス
- Windows.Storage.ApplicationData 名前空間
- Windows.Storage.ApplicationDataCompositeValue 名前空間
- Windows.Storage.ApplicationDataContainer 名前空間
- Windows.Storage.ApplicationDataContainerSettings 名前空間
- WinJS.Application 名前空間
関連トピック
