雑記 - otherwise

最近はDQ10しかやっていないダメ技術者がちまちまと綴る雑記帳

わんくま東京勉強会 #64 アフターフォロー (15) : データ保存の考え方

ここまでで、 StateIsolatedStorageLocal Database と三種類のローカルストレージを紹介しましたが、本来、 Windows Phone アプリケーションでは基本的にローカルにはデータを保管せず Azure 等のクラウド環境に置く事が推奨されています。

Windows Phone のローカルストレージは非常に小さい

Windows Phone に限らずスマートフォンのローカルストレージは容量が限られています。
特に、 Windows Phone は OS の仕様上、外部ストレージ( SD カード等)の追加が出来ないので、アプリケーションで使用するストレージ容量は出来る限り少なくする様にする必要があります。

ローカルに保管すべきデータ

データをクラウド上に置いた場合、ネットワークに接続出来ない環境では当然ながらデータにアクセス出来ません。
この様な状況でもアプリケーションが適切に動作するために必要なデータについては、ローカルストレージに保管する必要があります。
例えば、アプリケーションの設定情報やユーザの入力データ等が挙げられるかと思います。

保管先の選択

先の記事でも一部言及していますが、データの保管先は対象データの性質によって選択します。

アプリケーションの設定情報

アプリケーションの起動や動作に必要な設定情報は IsolatedStorage に保管しておくのが良いかと思います。

マスタデータ

アプリケーション内で使用するマスタデータについては、リソースとして持つか、 cap ファイル内に DB ファイルを同梱すると良いと思います。
なお、 xap ファイル内の DB ファイルは読取専用のため、アプリケーション内でマスタデータの更新が発生する場合は、アプリケーションの初回起動時に xap ファイル内の DB ファイルを IsolatedStorage にコピーして使用すると良いです。

入力データ

入力中の情報を一時保管する場合は、 State を利用出来ます。但し、アプリケーションを終了した後も入力データを有効にする必要がある場合は IsolatedStorage を使用します。

(番外) Picture ハブから選択したイメージ

Picture ハブから選択したデータは、仕様上ストリームとして取得されるため、アプリケーション再起動時に復元するためには IsolatedStorage にファイルとしてコピーしておく必要があります。