libro
www.tuyano.com
JavaScriptで作ろう! Windows 8 アプリ・プログラミング入門

設定の保存とバインディング (1/3)

作成:2012-12-01 14:03
更新:2012-12-01 14:03

■設定情報とApplicationData

今回は、さまざまな情報(データ)の保存について考えてみることにしましょう。まずは、アプリの設定などの情報を保管する方法についてです。

アプリの設定などは、別にファイル名を付けて保管したりするわけではありません。アプリが必要に応じて値を取り出したり書き換えたり出来ればいいわけで、一般的なファイルアクセスなどとはかなり異なります。

Windows Storeアプリの場合、設定情報などのようなアプリ固有の情報は専用の機能を使って保存するようになっています。それが「Windows.Storage.ApplicationData」というオブジェクトです。これを利用して各種の情報を保管するのですが、利用の手順などを頭に入れておかないとうまく使いこなせないでしょう。以下に整理しておきましょう。


1. 現在利用しているApplicationDataオブジェクトを修得する
変数 = Windows.Storage.ApplicationData.current;
最初にApplicationDataオブジェクトを用意します。これはnewで作成するのではなく、「current」というメソッドを呼び出して取得します。

2. ApplicationDataContainerオブジェクトを取得する
変数 =《ApplicationData》.localSettings;
データ類は、ApplicationDataに直接保管されているわけではありません。「localSettings」というプロパティに設定されたオブジェクトの中にまとめられています。このオブジェクトは「ApplicationDataContainer」というオブジェクトで、文字通り多数のアプリデータをまとめて保管するコンテナの役割をはたすものです。いわば、ファイル管理における「フォルダ」のようなものと考えてよいでしょう。

3. 保管場所のApplicationDataContainerを用意する
if (!《ApplicationDataContainer》.containers.hasKey( キー )) {
    《ApplicationDataContainer》.createContainer( キー ,
        Windows.Storage.ApplicationDataCreateDisposition.Always);
}
続いて、値を保管するコンテナとなるApplicationDataContainerを用意します。先ほど、localSettingsで取得したのは、ApplicationDataに最初から用意されている保管庫のようなものです。通常は、この中にアプリ独自のコンテナ(ApplicationDataContainer)を用意し、その中にデータを保管するのが一般的なやり方です。

そのためには、まず保管用のコンテナがあるかどうかチェックし、なければ作っておかないといけません。それを行なっているのがこの部分です。ApplicationDataContainerオブジェクトでは「containers」プロパティに、保管されている値がオブジェクトとしてまとめられています。その「hasKey」メソッドを使い、指定のキー(要するに、コンテナの名前)のコンテナがあるかどうかをチェックします。

もしキーがなければ、「createContainer」というメソッドでコンテナを作成します。このメソッドは、第1引数にキー(コンテナの名前)を、第2引数にApplicationDataDispositionというものを指定します。これは作成したコンテナのアクティベートに関するもので、常に使えるようにするために通常はWindows.Storage.ApplicationDataCreateDisposition.Alwaysを指定するのが基本、と考えてください。

4. 値を読み書きする
変数 = 《ApplicationDataContainer》.containers.lookup( キー ).values[ キー ];
《ApplicationDataContainer》.containers.lookup( キー ).values[ キー ] = 値 ;
利用する値を読み書きします。これには「values」というプロパティを使います。このプロパティには連想配列の形で値が保管されています。ですので、values[キー]というように名前となるキーを指定して値を読み書きできるのです。

ただし! このvaluesは、createContainerで作成したコンテナのcontainersプロパティにあるオブジェクトから呼び出す必要があります。ということは、まず作成しておいたコンテナのApplicationDataContainerオブジェクトを取得しないといけません。これを行なっているのが「lookup」というメソッドです。containersオブジェクトにあるこのメソッドは、引数でキーを指定すると、そのキーのコンテナであるApplicationDataContainerオブジェクトを返します。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

※関連コンテンツ

「JavaScriptで作ろう! Windows 8 アプリ・プログラミング入門」に戻る