CloudKitについて調べてみた(その1)

個人開発しているiOSアプリでデータをクラウドに保存する機能を付けたくなった。アプリを再インストールしたり端末を入れ替えた時に、データが自動的に復元されるととても嬉しい気分になる。

最近ではFirebaseを利用するケースを見かけるが、自分のアプリは他のプラットフォーム(Android)に対応する予定はなく、CloudKitを使ったことがなかったので以下の公式ドキュメントをざっくり翻訳しつつnoteに書くことにした。

CloudKit

Store your app’s data in iCloud and keep everything up to date across apps and on the web with CloudKit JS. With up to 1PB of free storage for each app, it’s never been easier to build and grow your apps using CloudKit.

iCloudがデータのストア先となり、アプリ間やJS(ウェブ)からも利用できる。アプリ単位で無料で1PB(ペタバイト)まで利用できるらしい、個人開発アプリで使い切れたらすごい。特徴が3つ挙げられている。

クライアントアプリの開発に専念しつつ、自動でスケールするサーバサイドストレージを利用することができる。認証されたプライベート、共有、パブリックなデータベースが提供される。

プライベートの他に、他人と共有するやパブリックなデータベースが利用できるのが面白そうだ。

全てのAppleプラットフォームとシームレスに連携することができきる。アプリ内での認証やパーミッションの取得は要求されない。自動でiCloudの最新データにアクセスでき、データの更新されたらプッシュ通知で知ることができる。

macOSやiOSなどのOS間、もしくはiPhoneとmacなどのデバイス間で利用ができるらしい。iOSデバイスやmacOSでAppleIDをセット(ログイン)しておけばアプリ側での認証やパーミッションの取得は要求されないという意味だと思う、これはFirebaseなどに対して多少のアドバンテージがあると思う。データ更新に対してプッシュ通知による(半)リアルタイムな同期がサポートされているところもポイントが高い。

セキュアにデータやファイルを共有できる。アプリの要求に合わせてカスタマイズやパーミッションの追加が可能であり、ユーザーは何を共有するかコントロールできる。

CloudKit Dashboard

CloudKit Dashboard が用意されている、詳細やサーバアクティビティを確認できる。データの中身や、データベーススキーマのメンテナンス、ユーザーアクティビティの計測、アプリ全体での利用帯域、トレンドのモニター、テストや新機能開発などにも利用できる。Dashboard のログインはこちら

スクリーンショット 2020-06-17 11.31.59

ユースケース

CloudKitはiOS標準アプリのPhotos, iCloud Drive, Notes, News, and Safariといったアプリで利用されている。試しに、普段は利用していないiOS標準のメモアプリを利用してみた。

画像2

iOS側でメモを追加すると自動的にmacOS側のメモアプリにも同期する。

スクリーンショット 2020-06-17 11.36.05

まとめ

自分が実現したかったのはユーザーのプライベートなデータをクラウドに保存することだったので、要件は十分に満たせそう。AppleIDに紐づいているようなので、アプリ側で認証やパーミッションの取得が不要なのはとても良い。次はアプリからCloudKitを利用する方法を調べる、長くなりそうなのでいったんここで終了。

2020/6/19追記:「その2」を書きました

この記事が気に入ったらサポートをしてみませんか?