Xamarin.iOS アプリでのデータ ストレージの概要
データベースを使用する場合
モバイル デバイスのストレージと処理能力が向上する一方で、携帯電話やタブレットはデスクトップやノート PC に比べてまだ遅れています。 このため、データベースが常に正しい答えであると思い込むのではなく、アプリのデータ ストレージ アーキテクチャの計画に時間をかける価値があります。 次のようなさまざまな要件に合うよう、さまざまなオプションが用意されています。
- ユーザー設定 – iOS には、単純なキーと値のペアのデータを格納するための組み込みのメカニズムが用意されています。 単純なユーザー設定や小さなデータ (個人向け情報など) を格納する場合は、この種の情報を格納するためのプラットフォームのネイティブ機能を使用します。 iOS の場合、複数のデバイスを使用するユーザーのバックアップと同期の両方で、このデータに iCloud 同期を利用することもできます。
- テキスト ファイル – ユーザー入力またはダウンロードしたコンテンツのキャッシュ (HTML など) は、ファイル システムに直接格納できます。 ファイルを整理し、データの検出に役立てるために、適切なファイルの名前付け規則を使用します。
- シリアル化されたデータ ファイル – オブジェクトは、ファイル システム上で XML または JSON として保持できます。 .NET Framework には、オブジェクトのシリアル化と逆シリアル化を容易にするライブラリが含まれています。 適切な名前を使用してデータ ファイルを整理します。
- データベース – SQLite データベース エンジンは iOS で使用でき、クエリ、並べ替え、またはその他の操作に必要な構造化データを格納するのに役立ちます。 データベース ストレージは、多くのプロパティを持つデータの一覧表示に適しています。
- 画像ファイル – バイナリ データをモバイル デバイス上のデータベースに格納することはできますが、ファイル システムに直接格納することをお勧めします。 必要な場合は、ファイル名をデータベースに格納して、画像を他のデータと関連付けることができます。 大きな画像や多数の画像を扱う場合は、ユーザーのすべてのストレージ領域を消費しないように、不要になったファイルを削除するキャッシュ戦略を計画することをお勧めします。
データベースがアプリに適したストレージ メカニズムである場合、このドキュメントの残りの部分では Xamarin プラットフォームで SQLite を使用する方法について説明します。
データベースを使用する利点
モバイル アプリでの SQL データベースの使用には、次のような多くの利点があります。
- SQL データベースを使用すると、構造化データを効率的に格納できます。
- 複雑なクエリを実行して特定のデータを抽出できます。
- クエリ結果を並べ替えることができます。
- クエリ結果を集約できます。
- 既存のデータベース スキルを持つ開発者は、その知識をデータベースとデータ アクセス コードの設計に活用できます。
- 接続されたアプリケーションのサーバー コンポーネントからのデータ モデルは、モバイル アプリケーション (全体または一部) で再利用できます。
SQLite データベース エンジン
SQLite は、Apple がモバイル プラットフォームに採用しているオープンソース データベース エンジンです。 SQLite データベース エンジンは iOS に組み込まれているため、開発者がそれを利用するための追加の作業はありません。 SQLite は、次の理由からクロスプラットフォーム モバイル開発に適しています。
- データベース エンジンは小さく、高速で、簡単に移植できます。
- データベースは 1 つのファイルに格納されるため、モバイル デバイスで簡単に管理できます。
- このファイル形式は、32 ビットでも 64 ビットでも、ビッグ エンディアン システムでもリトル エンディアン システムでも、プラットフォームを問わず簡単に使用できます。
- ほとんどの SQL92 の標準機能が実装されています。
SQLite は小さく高速に設計されているため、その使用には次のような注意事項があります。
- 一部の外部結合構文はサポートされていません。
- テーブルの RENAME と ADDCOLUMN のみがサポートされています。 スキーマに対して他の変更を加えることはできません。
- ビューは読み取り専用です。
SQLite の詳細については、Web サイト (SQLite.org) を参照してください。ただし、Xamarin で SQLite を使用するために必要なすべての情報は、このドキュメントと関連するサンプルに含まれています。 SQLite データベース エンジンは、すべてのバージョンの iOS に組み込まれています。 この章では取り上げませんが、SQLite は Windows Phone および Windows アプリケーションでも使用できます。
Windows および Windows Phone
SQLite は Windows プラットフォームでも使用できますが、これらのプラットフォームについてはこのドキュメントでは説明しません。 詳細については、Tasky のケース スタディを参照し、Tim Heuer のブログをご覧ください。