Nakajijapan

生きるのに必死です。

Introducing CloudKit

CloudKit Strage

WWDC2014でiOS8からの新しい機能であるCloudKitについて調べたよという話です。

次に自分がリリースするプロダクトのバックエンドを実験がてらParseでやろうとしていたのですが、 CloudKitのほうが便利そうだったのと、何かときめきを感じるものがあったのでCloudKitを選定して実装する方向 にはなったのです。しかし、情報はというとサンプルプログラムとただドキュメントがあるんだけでした ので自分なりに調べてどういう実装をしたらいいのかというのを調査して、一部まとめたお話です。

せっかくなのでpotatotips #8でも共有させていただきました。

簡単に話すと以下のような内容になっています。

  • 簡単にCloudKitの説明
  • CRUDで実装した場合、どんな実装になるのか
  • ページング処理の話
  • 要調査内容
  • 感想

補足なのですがCKSubscriptionも試してみたのでご参考までに。

CKSubscription

サーバ上での変更を追跡するのに利用されます。 例えば、何かのレコードに変更があった場合にPush通知を送信できたりします。 実際のコードは以下のようなもの。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

// #1
        let truePredicate = NSPredicate(value: true)
        let itemSubscription = CKSubscription(
            recordType: "Items",
            predicate: truePredicate,
            options: CKSubscriptionOptions.FiresOnRecordCreation
        )
// #2
        let notification = CKNotificationInfo()
        notification.alertBody = "Item Add"
        itemSubscription.notificationInfo = notification

// #3
        self.publicDatabase.saveSubscription(
            itemSubscription,
            completionHandler: { (subscription:CKSubscription!, error:NSError!) -> Void in

                if error != nil {
                    println("An error occured in \(error.description)")
                }

                // do something

            }
        )

#1

CKSubscriptionを指定されたレコードタイプに条件(NSPredicate)を指定してインスタンス化します。 CKQueryぽいですね。

#2

ここでは通知メッセージの設定を行っています。

#3

ここでSubscriptionの変更をサーバにリクエストします。 これで完了です。削除したい場合はdeleteSubscriptionWithIDを利用すれば削除が適用されます。

こんな感じで実装は完了です。

CloudKitを使ってみての感想

爆速でバックエンドが構築されるのでアプリに集中したい人にとってはかなりおすすめですね。 だいたいの機能は揃っているので簡単なアプリを作成するんであればこれでいいかもしれません。 引き続きwatchしていきます。

ちなみに、スレイドにも書いたんですが、Macで使うとMacデベロッパープログラムを契約しないと 利用できなかったので発表が終わった瞬間に購入しました。。。。

そんな夏休みの自由研究話でした。