UWP アプリでの設定の保存と読み込みSave and load settings in a UWP app

このトピックでは、ユニバーサル Windows プラットフォーム (UWP) アプリでの設定の読み込みと保存を開始するために知っておく必要があることについて説明します。This topic covers what you need to know to get started loading, and saving, settings in a Universal Windows Platform (UWP) app. 主な API を紹介し、詳細情報を確認できるリンクを提供します。The main APIs are introduced, and links are provided to help you learn more.

設定を使用して、アプリのユーザーによるカスタマイズが可能な部分を記憶します。Use settings to remember the user-customizable aspects of your app. たとえば、ニュース リーダーでアプリの設定を使用して、表示するニュース ソースや記事を読むために使用するフォントを保存します。For example, a news reader could use app settings to save which news sources to display and what font to use for reading articles.

ローカル設定およびローミング設定を含む、アプリの設定の保存と読み込みを行うためのコードについて説明します。We’ll look at code to save and load app settings, including local and roaming settings.

理解しておく必要があることWhat do you need to know

アプリの設定を使用して、ユーザー設定やアプリの状態などの構成データを保存します。Use app settings to store configuration data such as user preferences and app state. デバイスに固有の設定は、ローカルに保存されます。Settings that are specific to the device are stored locally. アプリがインストールされているデバイスで適用される設定は、ローミング データ ストアに保存されます。Settings that apply on whichever device your app is installed on are stored in the roaming data store. 設定は、ユーザーが同じ Microsoft アカウントでサインインし、同じバージョンのアプリがインストールされているデバイス間でローミングされます。Settings are roamed between devices on which the user is signed in with the same Microsoft Account and have the same version of the app installed.

次のデータ型は、整数、倍精度浮動小数点数、浮動小数点値、文字型、文字列、Points、DateTimes などの設定と一緒に使用できます。The following data types can be used with settings: integers, doubles, floats, chars, strings, Points, DateTimes, and more. 1 つの単位として扱う必要がある複数の設定があるときに役立つ、ApplicationDataCompositeValue クラスのインスタンスも保存できます。You can also store instances of the ApplicationDataCompositeValue class which is useful when there are multiple settings that should be treated as a unit. たとえば、アプリの閲覧ウィンドウでテキストを表示するためのフォント名とポイント サイズは、1 つの単位として保存/復元する必要があります。For example, a font name and point size for displaying text in the reading pane of your app should be saved/restored as a single unit. これにより、ある設定が別の設定の前にローミングするときに遅延のために別の設定と同期されなくなることを防ぐことができます。This prevents one setting from getting out of sync with the other due to delays in roaming one setting before the other.

アプリの設定の保存または読み込みについて知っておく必要がある主な API を次に示します。Here are the main APIs you need to know about to save or load app settings:

アプリの設定の保存Save app settings

この概要では、アプリ設定のローカルでの保存と読み込み、およびデバイス間での複合フォントまたはフォント サイズの設定のローミングという 2 つの簡単なシナリオについて説明します。For this introduction, we will focus on two simple scenarios: saving and loading an app setting locally, and roaming a composite font/font size setting between devices.

// Save a setting locally on the device
ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
localSettings.Values["test setting"] = "a device specific setting";

// Save a composite setting that will be roamed between devices
ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;
Windows.Storage.ApplicationDataCompositeValue composite = new Windows.Storage.ApplicationDataCompositeValue();
composite["Font"] = "Calibri";
composite["FontSize"] = 11;
roamingSettings.Values["RoamingFontInfo"] = composite;

まず、Windows.Storage.ApplicationData.Current.LocalSettings でローカル設定データ ストアの ApplicationDataContainer を取得することで、ローカル デバイスに設定を保存します。Save a setting to the local device, by first getting an ApplicationDataContainer for the local settings data store with Windows.Storage.ApplicationData.Current.LocalSettings. このインスタンスに割り当てるキー/値ペアのディクショナリは、ローカル デバイス設定データ ストアに保存されます。Key/value dictionary pairs that you assign to this instance are saved in the local device setting data store.

同様のパターンを使用して、ローミング設定を保存します。Save a roaming setting using a similar pattern. まず、Windows.Storage.ApplicationData.Current.RoamingSettings を使用してローミング設定データ ストアの ApplicationDataContainer を取得します。First get an ApplicationDataContainer for the roaming settings data store with Windows.Storage.ApplicationData.Current.RoamingSettings. 次に、このインスタンスにキーと値のペアを割り当てます。Then assign key/value pairs to this instance. これらのキーと値のペアは、デバイス間で自動的にローミングされます。Those key/value pairs will automatically roam between devices.

上のコード スニペットでは、ApplicationDataCompositeValue は複数のキーと値のペアを格納します。In the code snippet above, a ApplicationDataCompositeValue stores multiple key/value pairs. コンポジット値は、相互に同期しなくなることがあってはならない複数の設定があるときに役立ちます。Composite values are useful when you have multiple settings that shouldn't get out of sync with each other. ApplicationDataCompositeValue を保存すると、単位として、または自動的に値が保存され読み込まれます。When you save a ApplicationDataCompositeValue, the values are saved and loaded as a unit, or atomically. これにより、関連する設定は個別ではなく単位としてローミングされるため、同期しなくなることはありません。This way settings that are related won't get out of sync because they are roamed as a unit instead of individually.

アプリ設定の読み込みLoad app settings

// load a setting that is local to the device
ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
String localValue = localSettings.Values["test setting"] as string;

// load a composite setting that roams between devices
ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;
Windows.Storage.ApplicationDataCompositeValue composite = (ApplicationDataCompositeValue)roamingSettings.Values["RoamingFontInfo"];
if (composite != null)
{
    String fontName = composite["Font"] as string;
    int fontSize = (int)composite["FontSize"];
}

Windows.Storage.ApplicationData.Current.LocalSettings を使用してローカル設定データ ストアの ApplicationDataContainer インスタンスをまず取得することで、ローカル デバイスから設定を読み込みます。Load a setting from the local device, by first getting an ApplicationDataContainer instance for the local settings data store with Windows.Storage.ApplicationData.Current.LocalSettings. 次に、それを使用してキーと値のペアを取得します。Then use it to retrieve key/value pairs.

同様のパターンに従って、ローミング設定を読み込みます。Load a roaming setting by following a similar pattern. まず、Windows.Storage.ApplicationData.Current.RoamingSettings を使用してローミング設定データ ストアから ApplicationDataContainer インスタンスを取得します。First get an ApplicationDataContainer instance from the roaming settings data store with Windows.Storage.ApplicationData.Current.RoamingSettings. そのインスタンスからキーと値のペアにアクセスします。Access key/value pairs from that instance. 設定にアクセスしているデバイスにデータがまだローミングされていない場合は、null の ApplicationDataContainer を取得します。If the data hasn't roamed yet to the device that you are accessing the settings from, you'll get a null ApplicationDataContainer. 上のコード例に if (composite != null) チェックインがあるのはこのためです。That's why there is a if (composite != null) check in the example code above.

便利な API とドキュメントUseful APIs and docs

API の簡単な概要と、アプリの設定の保存と読み込みを開始するために役立つその他の便利なドキュメントを次に示します。Here is a quick summary of APIs, and other useful documentation, to help get you started saving and loading app settings.

便利な APIUseful APIs

APIAPI 説明Description
ApplicationData.LocalSettingsApplicationData.LocalSettings ローカル アプリ データ ストアからアプリケーション設定コンテナーを取得します。Gets the application settings container from the local app data store.
ApplicationData.RoamingSettingsApplicationData.RoamingSettings ローミング アプリ データ ストアからアプリケーション設定コンテナーを取得します。Gets the application settings container from the roaming app data store.
ApplicationDataContainerApplicationDataContainer コンテナー階層の作成、削除、列挙、および移動をサポートするアプリの設定のコンテナーです。A container for app settings that supports creating, deleting, enumerating, and traversing the container hierarchy.
Windows.UI.ApplicationSettings 名前空間Windows.UI.ApplicationSettings Namespace Windows シェルの設定ウィンドウに表示されるアプリの設定を定義するために使用するクラスを指定します。Provides classes that you'll use to define the app settings that appear in the settings pane of the Windows shell.

役立つドキュメントUseful docs

トピックTopic 説明Description
アプリ設定のガイドラインGuidelines for app settings アプリ設定を作成し表示する際のベスト プラクティスについて説明します。Describes best practices for creating and displaying app settings.
設定と他のアプリ データを保存して取得するStore and retrieve settings and other app data ローミング設定など、設定の保存と取得に関するチュートリアルです。Walk-through for saving and retrieving settings, including roaming settings.

役立つコード サンプルUseful code samples

コード サンプルCode sample 説明Description
アプリケーション データ サンプルApplication data sample 設定に焦点を当てたシナリオ 2-4Scenarios 2-4 focus on settings