『iOSのバンドルとファイルシステム』


iOSファイルシステムサンドボックス)について
iOSにはサンドボックス(wiki)という仕組みがあって、
バイスiPhoneシミュレータにアプリを初めてインストールした時に、
1つのアプリにつき1つのサンドボックスが作られます。
サンドボックスは安全にデータを保存できる領域で、
他のアプリのサンドボックスにデータを読み書きする事はできません。
※語源は子供を安全な砂場で遊ばせる事から来ているらしい



サンドボックスの狙いは?】

1.悪意のあるアプリによって、ファイルを書き換えられる事を防止する。

2.アプリの誤動作でのファイルの破損等をサンドボックス内に抑える


サンドボックス内にあるファイルは?】

iOSアプリケーションプログラミングガイドからの分かりやすい画像の引用
前述の通り、1つのアプリにつき1つのサンドボックスが作られます。



ディレクトリ構成】
iOSではホームディレクトリ(/Applications/アプリの一意の識別子GUID)以下に全てのデータを保存します。
※ホームディレクトリはサンドボックス内のルートディレクトリです。


ホームディレクトリには以下のディレクトリが存在します。
◯ アプリ名.app      アプリの実行ファイル、リソースファイルを含むアプリケーションバンドル
◯ Documents        アプリのデータを保存する場所
◯ Library/Preferences   アプリの設定ファイルを保存する場所
◯ Library/Caches          キャッシュファイルを書き込む場所
◯ tmp         一時ファイルを保存する場所

この中で『iTuens』のバックアップ対象になるのは、DocumentsとPreferencesです。
実機においては、Documents、tmp以下のみアクセスでき、
その他のディレクトリや、ホームディレクトリ直下は書き込み等のアクセスが制限される。

 参考サイト:データの保存 (2) - ホームディレクトリとファイルパス
http://bit.ly/qGsDYV



【バンドルとは何?】

Finder (wikipedia)リソースとパッケージとバンドルの項を参考にしました。
バンドルとは簡単に言うと、入れ子になったフォルダを1つの書類に見せかけるもの。
複雑なファイル構成が隠されて、ユーザーにとってシンプルに扱えるようになった。


【アプリケーションバンドル】

前述した【サンドボックス内にあるファイルは?】のMyApp.appもバンドルだからこそ、
見た目には1つのファイルとして扱える。
ちなみにアプリケーションバンドルの中身は「右クリック」> 「パッケージの内容を表示」でみられる。


iPhoneシミュレータでビルドしたファイルの保存場所】

以下のパスに保存されており、中身はiphone実機のディレクトリ構成と一緒です。
参考:Mac OS X Lionで隠しファイルを表示する
アプリケーションIDは1意の名前(アルファベットと数字の組み合わせ)からなるので、
ぱっと見分かり辛いです、更新日時等でソートすると探しやすくなります。

/Users/ユーザー名/Library/Application Support/iPhone Simulator
/ビルド時のiOS_Versionのフォルダ/Applications/アプリケーションID内