UWP アプリでの設定の保存と読み込み

このトピックでは、ユニバーサル Windows プラットフォーム (UWP) アプリでの設定の読み込みと保存を開始するために知っておく必要があることについて説明します。 主な API を紹介し、詳細情報を確認できるリンクを提供します。

設定を使用して、アプリのユーザーによるカスタマイズが可能な部分を記憶します。 たとえば、ニュース リーダーでアプリの設定を使用して、表示するニュース ソースや記事を読むために使用するフォントを保存します。

アプリの設定を保存して読み込むためのコードについて説明します。

理解しておく必要があること

アプリの設定を使用して、ユーザー設定やアプリの状態などの構成データを保存します。

次のデータ型は、整数、倍精度浮動小数点数、浮動小数点値、文字型、文字列、Points、DateTimes などの設定と一緒に使用できます。 1 つの単位として扱う必要がある複数の設定があるときに役立つ、ApplicationDataCompositeValue クラスのインスタンスも保存できます。 たとえば、アプリの閲覧ウィンドウでテキストを表示するためのフォント名とポイント サイズは、1 つの単位として保存/復元する必要があります。 これにより、メイン プログラムとバックグラウンド タスクの間など、同時アクセスが原因で、ある設定が別の設定と同期されなくなるのを回避できます。

アプリの設定の保存または読み込みについて知っておく必要がある主な API を次に示します。

  • Windows.Storage.ApplicationData.Current.LocalSettings は、ローカル アプリ データ ストアからアプリケーションの設定コンテナーを取得します。 ここに格納される設定は、デバイスで保持されます。
  • Windows.Storage.ApplicationData.Current.RoamingSettings は、ローミング アプリ データ ストアからアプリケーションの設定コンテナーを取得します。 ここに格納されるデータは (Windows 11 時点で) 移動されなくなりましたが、設定ストアは引き続き使用できます。 RoamingSettings の代替として推奨されるのは、Azure App Service です。 Azure App Service は、広くサポートされており、ドキュメントが豊富で、信頼性が高く、iOS、Android、Web などのクロスプラットフォームやクロスエコシステムのシナリオに対応しています。
  • Windows.Storage.ApplicationDataContainer は、アプリの設定をキーと値のペアとして表すコンテナーです。 このクラスを使用して設定値を作成して取得します。
  • Windows.Storage.ApplicationDataCompositeValue は、単位としてシリアル化する必要がある複数のアプリの設定を表します。 これは、ある設定を別の設定とは別に更新するべきではない場合に役立ちます。

アプリの設定の保存

この概要では、簡単なアプリ設定の保存と読み込みと、複合フォントまたはフォント サイズの設定の保存と読み込みという 2 つの簡単なシナリオについて説明します。

ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;

// Save a setting locally on the device
localSettings.Values["test setting"] = "a device specific setting";

// Save a composite setting locally on the device
Windows.Storage.ApplicationDataCompositeValue composite = new Windows.Storage.ApplicationDataCompositeValue();
composite["Font"] = "Calibri";
composite["FontSize"] = 11;
localSettings.Values["FontInfo"] = composite;

まず、Windows.Storage.ApplicationData.Current.LocalSettings を使ってローカル設定データ ストアの ApplicationDataContainer を取得することで、設定を保存します。 このインスタンスに割り当てるキー/値ペアのディクショナリは、ローカル デバイス設定データ ストアに保存されます。

上のコード スニペットでは、ApplicationDataCompositeValue は複数のキーと値のペアを格納します。 コンポジット値は、相互に同期しなくなることがあってはならない複数の設定があるときに役立ちます。 ApplicationDataCompositeValue を保存すると、単位として、または自動的に値が保存され読み込まれます。 これにより、関連する設定は同期しなくなることがなくなります。

アプリ設定の読み込み

ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;

// load a setting that is local to the device
String localValue = localSettings.Values["test setting"] as string;

// load a composite setting
Windows.Storage.ApplicationDataCompositeValue composite = (ApplicationDataCompositeValue)localSettings.Values["FontInfo"];
if (composite != null)
{
    String fontName = composite["Font"] as string;
    int fontSize = (int)composite["FontSize"];
}

Windows.Storage.ApplicationData.Current.LocalSettings を使用してローカル設定データ ストア用に ApplicationDataContainer インスタンスをまず取得することで、設定を読み込みます。 次に、それを使用してキーと値のペアを取得します。 データが存在しない場合は、null オブジェクトが取得されます。 C# ではこれは、設定が存在しない場合、localValuenull になることを意味します。

同様のパターンに従って、コンポジット設定を読み込みます。 ローカル設定データ ストアからキーと値のペアにアクセスします。 データが存在しない場合は、null ApplicationDataContainer が取得されます。 上のコード例に if (composite != null) チェックインがあるのはこのためです。

便利な API とドキュメント

API の簡単な概要と、アプリの設定の保存と読み込みを開始するために役立つその他の便利なドキュメントを次に示します。

便利な API

API 説明
ApplicationData.LocalSettings ローカル アプリ データ ストアからアプリケーション設定コンテナーを取得します。
ApplicationData.RoamingSettings ローミング アプリ データ ストアからアプリケーション設定コンテナーを取得します。
ApplicationDataContainer コンテナー階層の作成、削除、列挙、および移動をサポートするアプリの設定のコンテナーです。
Windows.UI.ApplicationSettings 名前空間 Windows シェルの設定ウィンドウに表示されるアプリの設定を定義するために使用するクラスを指定します。

役立つドキュメント

トピック 説明
アプリ設定のガイドライン アプリ設定を作成し表示する際のベスト プラクティスについて説明します。
設定と他のアプリ データを保存して取得する 設定の保存と取得に関するチュートリアルです。

役立つコード サンプル

コード サンプル 説明
アプリケーション データ サンプル 設定に焦点を当てたシナリオ 2-4