54:45
https://developer.apple.com/videos/play/wwdc2014/208/
※WWDCセッション関係の記事は、セッション内容を要約して内容を伝えるのが目的ではない。各セッションビデオで何が話されているかの項目をテキスト化することで後で何かを調べたいときにどのビデオを見れば良いか判断する材料にするために書いている。
iOS 8から新たに導入された CloudKit に関する概要を述べるセッション。主要なクラスの使い方なども紹介する。
■CloudKitとは何か?
iCloud Drive、iCloud Core Data、iCloud Key/Value Store等の新たに導入されたiCloudの中での位置づけ。Photo LibraryなどのAppleアプリケーションでも利用している。
アップル社内のサーバーに保管されるデータ。iCloudアカウントが必要になる。PublicデータベースとPrivateデータベースが利用可能。構造化されたデータやデータの塊も保存できる。デバイスローカルに保存されずに、転送される。
■各自のアプリケーションでの使うには?
Xcodeのプロジェクト設定>CapabilitiesでiCloudをオンにする。
■API
基本となる CloudKit のオブジェクトは以下
Container
Databases
Records
Record Zones
Record Identifiers
References
Assets
・Container
クラス名:CKContainer
1アプリごとにContainer(容れ物)がある。
データを他から隔離する。
開発者が管理する。Webサイトで管理。
アプリケーション間での共有も可能。
・データベース
クラス名:CKDatabase
public(全ユーザー共有) と private(各ユーザごと独立)がある。
・レコード
クラス名:CKRecord
構造化データ
キー/値ペア
Record Type
Just-in-time schema
Metadata
NSString, NSNumber, NSData, NSDate, CLLocation, CKReference, CKAsset, 配列
・レコード領域
データベース中の保存領域
・レコードID
クラス名:CKRecrodID
recordName, zoneIDで生成
・リファレンス
クラス名:CKReference
オブジェクト間の参照関係
削除ルールなど設定可能
・アセット(資産)
クラス名:CKAssets
非構造化データ。大容量。ファイル。
■CloudKit's Convenience API
・レコードを保存する方法
サンプルコード断片:25:00〜
saveRecord:completionHandler:
サーバーへ直接保存する。
・レコードを取得する方法
・変更したレコードを保存する方法
サンプルコード断片:28:00〜
■Big Data, Tiny Phone
データはクラウドに保存して、使うデータだけクエリーでダウンロードする
・クエリー
クラス名:CKQuery
Record Type、NSPredicate、NSSortDescriptorsを使う
デメリット:電池の消耗、ネットワーク通信、ユーザー体験
・購読
クラス名:CKSubscription
変更のあったデータをプッシュで受け取る
サンプルコード断片:35:42〜
application:didReceiveRemoteNotification:
条件を予めサーバーに登録しておき、該当するデータが発生したらプッシュ通知を受け取る
■CloudKit User Accounts
Identify
サンプルコード断片:41:00〜
■When to use CloudKit
iCloud Key Value Store
iCloud Drive
Document centric apps
iCloud Core Data
CloudKit
Publlic data
Structured and bulk data
Large data set
Client dircted data transfer