A Day In The Life

とあるプログラマの備忘録

iOS データ設計入門

iOS アプリの画面開発の基礎を理解する」でアプリの画面と画面遷移について説明しました。アプリの見た目はとても大切ですが同じぐらい大切なこととして、データの活用方法があります。
ユーザに必要なデータは何か、そのデータに価値を持たせて情報にするにはどうすればよいか、データをどこに記憶すればよいかについて説明していきます。

そもそもデータって何?

データとはコンピュータが記憶することのできる文字や符号、数値などの集まりです。データはコンピュータ上で0と1の固まり(バイナリ)としてあつかわれます。バイナリが集まって意味を持ったものがデータであり、そのデータがさらに集まって意味を持ったものが情報です。図にすると以下のような感じになります。
データって何
バイナリは CPU、データはプログラム(アプリ)、情報はユーザがあつかいます。それぞれ解釈できる単位が違います。

データと情報の違い

データそのものはユーザにとって価値がありません。データを情報として活用できてはじめてユーザは価値を感じるのです。辞書アプリを例にするとユーザが調べようとしている単語はデータであり単語そのものには価値がありません。単語を入力して単語の意味や単語の使用例という情報が表示されて初めて価値が生まれるのです。
アプリはデータを情報としてユーザに見せたり、データを記憶するための道具であり、その目的はユーザがデータを情報として活用できるようにすることです。

アプリ開発の3大要素とデータ設計

アプリの画面や画面遷移を決めるだけではアプリを開発することはできません。アプリに必要なデータを洗い出してどのように記憶するかを決めたりデータに必要な処理を決めたりする必要があります。
アプリで使用するデータを洗い出してどこに保存するか、どのような処理が必要か決めることを本記事では「データ設計」と呼びます。
データ設計は「iOS アプリの画面開発の基礎を理解する」で説明したアプリ開発の3大要素のうち「機能を実現する」ための手段です。

データをどこに記憶するのか

データを情報として活用するためにはデータをどこかに記憶しなければいけません。
iOS ではデータをメモリ、フラッシュドライブ(FD)、iCloud*1の3つの領域に記憶することが出来ます。iOS でデータを記憶できる領域を図にすると以下のようになります。
データを記憶できる場所
それでは3つの領域について詳しく説明していきます。

メモリ

メモリとは主記憶装置のことで正確にはメインメモリといいます。メモリ上のデータはアプリが起動してから終了するまで記憶することが可能です。iOS 4 でマルチタスキングが導入されてからアプリの終了条件がだいぶ曖昧になりましたが、メモリ不足で OS から強制的に終了されたり、ユーザの操作で簡単にアプリを終了できるのでメモリにあるデータはいつ消されてもよい一時的なデータを記憶するようにしましょう。
ただしメモリは記憶容量が少なく(iPhone 4S で 512MB、新しい iPad で 1GB)使いすぎるとアプリがクラッシュする可能性があるため慎重にデータを取りあつかわないといけません。

フラッシュドライブ(FD)

フラッシュドライブは従来の PC でいうところのハードディスクや SSD にあたるものです。iPhoneiPad はデータの記憶にハードディスクを使わずにフラッシュドライブを使います。フラッシュドライブにデータを保存すると、アプリ終了後もデータを記憶することができます。iOS ではフラッシュドライブに保存されたデータはアプリごとに管理されています。一部の共有データを除いてフラッシュドライブに保存されたデータはアプリを削除すると一緒に削除されてしまいます。
フラッシュドライブには機種にもよりますが、データを最大 64GB まで保存することができます。写真や連絡先など共有のデータや音楽、アプリ自体をフラッシュドライブに保存するので 64GB すべて使えるわけではありませんがメモリに比べると遥かに多くのデータを記憶することができます。

iCloud

iOS 5 から導入された iCloudApple 社が提供するクラウドサービスです。iCloud を使うとネットワーク越しにある Apple 社が管理するサーバにデータを保存することができます。iCloud にあるデータは Apple ID に紐づいて管理されていて、ユーザが Apple ID を削除しない限り保存することができます。また iCloud のデータは同一ユーザ(同じ Apple ID)であれば iPhoneiPad のように別の端末で共有することもできます。
iCloud は、無料で 5GB までデータを記憶することが出来ます。追加料金を払うと最大 55GB まで使うことが可能です。フォトストリームの写真や音楽、アプリはこの容量に換算されませんので、純粋にデータを保存する箱として考えるとフラッシュドライブよりも沢山のデータを記憶することができます。

メモリ、FD、iCloud の特徴を比較

メモリ、FD、iCloud の特徴を比較するときに重要な視点として以下の3つがあります。

  • 生存期間
    データの生存期間。データを記録しておくことができる期間
  • アクセス時間
    データアクセスにかかる時間。CPU が処理に必要なデータを取得するために必要な時間
  • 容量
    保存できるデータの容量

データをユーザが必要としている時に表示出来るようにするためには、3つの領域の特徴を理解してデータをどこに記憶すればよいか決める必要があります。
生存期間とアクセス時間、容量の関係を図にすると以下のようになります。

生存期間 アクセス時間 容量
メモリ アプリが開始してから終了するまで CPU が直接アクセスできるので速い 少ない(最小128MB、最大1GB)
FD アプリインストールからアプリを削除するまで メモリ読み込みが発生するため遅い 多い(最小8GB、最大64GB)
iCloud ユーザが明示的にデータを消すまで サーバに通信が必要なためFDよりもさらに遅い 多い(最小5GB、最大55GB)
音楽やフォトストリームは容量にカウントされないため FD よりも沢山のデータを保存することが出来る

可搬性とアクセス時間と容量

データの管理方法

ここからはメモリ、フラッシュドライブ、iCloud におけるデータの管理方法を説明していきます(長くなるので別記事にしています)。

*1:もちろん iCloud を使わずに自前のサーバや他社のクラウドサービスにデータを保存することもできますが記事の趣旨から離れてしまうので割愛します