特集:builder的Lionのみどころ--開発環境:API周りの変更点(前編)

小池邦人 (有限会社オッティモ)
2011-08-01 20:37:00
  • このエントリーをはてなブックマークに追加

iCloudに関連したAPI

 今回のバージョンアップで追加されたAPIの中で開発者が最も注目しているのは、やはりiCloudに関連したAPIだろう。

 Lionではクラウド(データセンター)側へデータを保存する方法が2種類用意されている。1つは一般的なファイル(ドキュメント)保存、もうひとつはキーバリュー(key-value)タイプのデータ保存である。

 前者は、既存のNSDocumentやNSFileManagerクラスに属するメソッドの拡張で実現される。クラウド(データセンター)へのドキュメント保存とその同期は、NSDocumentのサブクラスを用いたCocoaドキュメントベース・アプリケーションならほぼ自動である。別途対応するには、NSFileManagerクラスのURLForUbiquityContainerIdentifier:や、setUbiquitous:itemAtURL:destinationURL:error:メソッドを使う。こうしたiCloud用メソッドは、ヘッダファイル(NSFileManager.h)のNS_AVAILABLE(10_7, 5_0)の記述を検索すれば参照できる。

  • - (NSURL *)URLForUbiquityContainerIdentifier:(NSString *)containerIdentifier NS_AVAILABLE(10_7, 5_0);
  • - (BOOL)setUbiquitous:(BOOL)flag itemAtURL:(NSURL *)url destinationURL:(NSURL *)destinationURL error:(NSError **)error NS_AVAILABLE(10_7, 5_0);

 また、クラウド側に保存されているドキュメントのURLやメタデータの一覧を入手するには、NSMetadataQueryオブジェクトを利用する。一覧の検索を開始するには、適切な検索スコープ(どこを検索するか)を設定し、受け取り通知(Notification)用のハンドラを用意してからstartQueryメソッドを実行する。

 後者のキーバリュータイプとは、キー(文字列)にオブジェクト(データ)を関連づけてクラウドへのデータ保存と、そこからの読み込みを行う仕組みである。こうした作業にはNSUbiquitousKeyValueStoreクラスのメソッドを利用する。

  • - (void)setData:(NSData *)aData forKey:(NSString *)aKey;
  • - (NSData *)dataForKey:(NSString *)aKey;

 こちらは、Cocoaでお馴染みのNSUserDefaultsクラスのクラウド拡張版だと考えれば理解しやすい。アプリケーションから「環境設定」などで使う小規模データをクラウド側へ保存するわけである。ただし転送データ量は、キーの文字列が4Kbyte以内に、データが64Kbyte以内に制限されている。

 既存ファイルシステムには不足している機能を補う仕組みも追加されている。例えば同期を考えると、あるプロセスがファイル書き込み中に、別プロセスがそのファイルを読み込むことを阻止(ロック)する必要が出てくる。そうした調停には、NSFilePresenterクラスとNSFileCoordinatorプロトコルが使われる。この両者で、プロセスがアクセスしているファイルを保護し、同期での内容不一致が起こらないように管理する。また複数デバイスから送られたドキュメント内容に不一致が発生した場合には、その内容を確認し、最新バージョンを決定する用途としてNSFileVersionクラスが用意されている。

OS Xにもサンドボックス(Sandboxing)

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]