SlideShare a Scribd company logo
Framework 
Getting started with CloudKit 
What can you do using CloudKit? 
Yuichi Yoshida 
Chief engineer, DENSO IT Laboratory, Inc. 
#yidev 
@sonson_twit 
© 2014 Yuichi Yoshida, all rights reserved. Redistribution or public display not permitted without written permission from Yuichi Yoshida.
自己紹介 
2tchの中の人 
• iOS好きです 
• 2tch(2ちゃんねるビューア) 
• iOS SDK Hacksなど 
• 研究 
• コンピュータビジョン 
• 機械学習 
• 研究・開発 
• 画像検索サービス 
• 車向けのサービスやハードウェア
発表概要 
It works? 
• Overview 
• Public and Private 
• Subscription 
• CKOperation 
• Save policy 
• CloudKit Dashboard
Overview 
What is CloudKit? 
• iCloudのAPI 
• AppleのiCloudの写真共有もこれで実装してるらしい 
• iCloudのファイル共有 
• iCloudのCoreDataも? 
• Apple謹製Parse? 
• というほど使い勝手はよくない 
• iOS/OSX専用のちょっとしたクラウドAPI
何ができる? 
CKRecord 
• CKRecordクラスを使ってデータを登録 
• データはkey-value方式でセット 
• データはそのまま使わないでね by Apple 
• NSPredicateを使って検索 
• 2種類のデータ 
• データは誰からもアクセスできるPublic 
• 本人しかアクセスできないPrivate
Add&Edit 
CKDatabase *database 
= [[CKContainer defaultContainer] publicCloudDatabase]; 
CKRecord *newRecord 
= [[CKRecord alloc] initWithRecordType:@“comment"]; 
[newRecord setObject:_textField.text forKey:@"text"]; 
[newRecord setObject:@(refTime) forKey:@“time"]; 
[database saveRecord:newRecord 
completionHandler:^(CKRecord *saved, NSError *error) { 
// error handling 
}];
Fetch 
NSPredicate *predicate 
= [NSPredicate predicateWithFormat:@"time > 0"]; 
CKQuery *query 
= [[CKQuery alloc] initWithRecordType:@"comment" 
predicate:predicate]; 
[database performQuery:query 
inZoneWithID:nil 
completionHandler:^(NSArray *results, NSError *error) { 
// handling results or error 
}];
Public or Private 
• Public 
• 誰でも読める(書き込みは設定が必要) 
• 通知が使える(subscribe) 
• Private 
• アカウント本人しか読めない 
• token, policyによるconflict管理
Subscription 
Someone changes some records. 
• NSPredicateを使って該当するレコードが追加された通 
知を受けとることができる 
• 通知が来るかどうかは保障されない
Subscribe 
NSPredicate *truePredicate 
= [NSPredicate predicateWithValue:YES]; 
CKSubscription *itemSubscription 
= [[CKSubscription alloc] initWithRecordType:@"comment" 
predicate:truePredicate 
options:CKSubscriptionOptionsFiresOnRecordCreation]; 
CKNotificationInfo *notification 
= [[CKNotificationInfo alloc] init]; 
notification.alertBody 
= @"New comment has been added.”; 
itemSubscription.notificationInfo 
= notification; 
[database saveSubscription:itemSubscription 
completionHandler:^(CKSubscription *subscription, NSError 
*error) { 
// handling subscription ID or, error. 
}];
NSOperationQueue 
Use the force, Luke. 
• 一連の操作はCKOperationで実行できる 
• 追加,編集,削除,検索 
• ・・・などのCKOperationのサブクラスがある 
• 依存関係 
• 検索結果に対して・・処理みたいなことを書ける
CKOperation 
CKModifyRecordsOperation *operation 
= [[CKModifyRecordsOperation alloc] initWithRecordsToSave:records 
recordIDsToDelete:recordIDs]; 
// for confliction 
operation.savePolicy 
= CKRecordSaveIfServerRecordUnchanged; 
operation.modifyRecordsCompletionBlock 
= ^(NSArray *savedRecords, NSArray *deletedRecordIDs, NSError 
*error) { 
}; 
operation.perRecordCompletionBlock 
= ^(CKRecord *record, NSError *error) { 
}; 
operation.perRecordProgressBlock 
= ^(CKRecord *record, double progress) { 
};
課題 
Write bug reports, Luke. 
• CKRecordは,ローカルにキャッシュされない 
• キャッシュは自前で作る必要がある 
• ドキュメントにはされるって書いて合ったような 
• バグが多い,つーか多すぎる 
• subscriptionが動かない 
• 通知が来ない 
• savePolicyが効いてない
Demo 
CloudKit
CloudKit Dashboard 
Can Apple create web services? 
• CloudKit Dashboard 
• ブラウザでデータを閲覧・編集 
• Xcode,Certification centerから飛べる 
• Subscriptionの確認など 
• Privateのデータは見えない
Demo 
CloudKit Dashboard
まとめ 
• Concept 
• Apple謹製のBaaSのような・・・・ 
• CKRecord 
• Add, Edit, Fetch 
• Subscription 
• CKOperation
More Information 
Yuichi Yoshida 
http://github.com/sonsongithub/ 
@sonson_twit

More Related Content

What's hot

iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携Masahiro Murakami
 
03 salesforce mobilesdkの+(プラス)なお話
03 salesforce mobilesdkの+(プラス)なお話03 salesforce mobilesdkの+(プラス)なお話
03 salesforce mobilesdkの+(プラス)なお話TerraSky
 
AzureStorageのオブジェクトレプリケートを試してみた
AzureStorageのオブジェクトレプリケートを試してみたAzureStorageのオブジェクトレプリケートを試してみた
AzureStorageのオブジェクトレプリケートを試してみた裕之 木下
 
使ってみようAzure activedirectory
使ってみようAzure activedirectory使ってみようAzure activedirectory
使ってみようAzure activedirectoryTsukasa Kato
 
メルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えてメルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えてMasahiro Nagano
 
Mackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LTMackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LTMasahiro Nagano
 
Client Side Balzorでツールを作ってみた
Client Side Balzorでツールを作ってみたClient Side Balzorでツールを作ってみた
Client Side Balzorでツールを作ってみた裕之 木下
 
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworkerおれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworkerToshiaki Maki
 
Spring bootでweb 基本編
Spring bootでweb 基本編Spring bootでweb 基本編
Spring bootでweb 基本編なべ
 
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたいはじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたいKazumi IWANAGA
 
Azure activedirectoryの最新機能の概要紹介
Azure activedirectoryの最新機能の概要紹介Azure activedirectoryの最新機能の概要紹介
Azure activedirectoryの最新機能の概要紹介Tsukasa Kato
 
Azure Functionsを業務利用する時の勘所
Azure Functionsを業務利用する時の勘所Azure Functionsを業務利用する時の勘所
Azure Functionsを業務利用する時の勘所裕之 木下
 
Azure Cosmos DB Always Encrypted
Azure Cosmos DB Always EncryptedAzure Cosmos DB Always Encrypted
Azure Cosmos DB Always EncryptedYui Ashikaga
 
BluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノ
BluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノBluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノ
BluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノKazumi IWANAGA
 
SQL Serverでデータ連携をする
SQL Serverでデータ連携をするSQL Serverでデータ連携をする
SQL Serverでデータ連携をするssuser6a2c40
 
Microsoft Love Java & OSS
Microsoft Love Java & OSSMicrosoft Love Java & OSS
Microsoft Love Java & OSSYoshio Terada
 
窓の中の箱の世界
窓の中の箱の世界窓の中の箱の世界
窓の中の箱の世界Tsukasa Kato
 
Demystifying Identities for Azure Kubernetes Service
Demystifying Identities for Azure Kubernetes ServiceDemystifying Identities for Azure Kubernetes Service
Demystifying Identities for Azure Kubernetes ServiceToru Makabe
 
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作ったRuby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作ったtakanori suzuki
 

What's hot (20)

iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携
 
03 salesforce mobilesdkの+(プラス)なお話
03 salesforce mobilesdkの+(プラス)なお話03 salesforce mobilesdkの+(プラス)なお話
03 salesforce mobilesdkの+(プラス)なお話
 
AzureStorageのオブジェクトレプリケートを試してみた
AzureStorageのオブジェクトレプリケートを試してみたAzureStorageのオブジェクトレプリケートを試してみた
AzureStorageのオブジェクトレプリケートを試してみた
 
使ってみようAzure activedirectory
使ってみようAzure activedirectory使ってみようAzure activedirectory
使ってみようAzure activedirectory
 
メルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えてメルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えて
 
Mackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LTMackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LT
 
Client Side Balzorでツールを作ってみた
Client Side Balzorでツールを作ってみたClient Side Balzorでツールを作ってみた
Client Side Balzorでツールを作ってみた
 
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworkerおれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
 
Spring bootでweb 基本編
Spring bootでweb 基本編Spring bootでweb 基本編
Spring bootでweb 基本編
 
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたいはじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
 
Azure activedirectoryの最新機能の概要紹介
Azure activedirectoryの最新機能の概要紹介Azure activedirectoryの最新機能の概要紹介
Azure activedirectoryの最新機能の概要紹介
 
Azure Functionsを業務利用する時の勘所
Azure Functionsを業務利用する時の勘所Azure Functionsを業務利用する時の勘所
Azure Functionsを業務利用する時の勘所
 
Azure Cosmos DB Always Encrypted
Azure Cosmos DB Always EncryptedAzure Cosmos DB Always Encrypted
Azure Cosmos DB Always Encrypted
 
BluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノ
BluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノBluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノ
BluemixでサクッとIoT ! ~ IoT Foundation, Node-RED や Azure Event Hub との連携もお助けヾ(o´∀`o)ノ
 
Ansible softlayer
Ansible softlayer Ansible softlayer
Ansible softlayer
 
SQL Serverでデータ連携をする
SQL Serverでデータ連携をするSQL Serverでデータ連携をする
SQL Serverでデータ連携をする
 
Microsoft Love Java & OSS
Microsoft Love Java & OSSMicrosoft Love Java & OSS
Microsoft Love Java & OSS
 
窓の中の箱の世界
窓の中の箱の世界窓の中の箱の世界
窓の中の箱の世界
 
Demystifying Identities for Azure Kubernetes Service
Demystifying Identities for Azure Kubernetes ServiceDemystifying Identities for Azure Kubernetes Service
Demystifying Identities for Azure Kubernetes Service
 
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作ったRuby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
 

Viewers also liked

Handoffは動かない〜これから役立たないバッドノウハウ集
Handoffは動かない〜これから役立たないバッドノウハウ集Handoffは動かない〜これから役立たないバッドノウハウ集
Handoffは動かない〜これから役立たないバッドノウハウ集Yuichi Yoshida
 
UIToolbarの同時タッチを防ぐ
UIToolbarの同時タッチを防ぐUIToolbarの同時タッチを防ぐ
UIToolbarの同時タッチを防ぐYuichi Yoshida
 
The Developer Conference - CloudKit, entendendo a Cloud da Apple
The Developer Conference - CloudKit, entendendo a Cloud da AppleThe Developer Conference - CloudKit, entendendo a Cloud da Apple
The Developer Conference - CloudKit, entendendo a Cloud da AppleRodrigo Leite
 
Getting started with Handoff
Getting started with HandoffGetting started with Handoff
Getting started with HandoffYuichi Yoshida
 
Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究Yuichi Yoshida
 
Build Your Mobile App Faster with AWS Mobile Services
Build Your Mobile App Faster with AWS Mobile ServicesBuild Your Mobile App Faster with AWS Mobile Services
Build Your Mobile App Faster with AWS Mobile ServicesAmazon Web Services
 

Viewers also liked (9)

Handoffは動かない〜これから役立たないバッドノウハウ集
Handoffは動かない〜これから役立たないバッドノウハウ集Handoffは動かない〜これから役立たないバッドノウハウ集
Handoffは動かない〜これから役立たないバッドノウハウ集
 
UIToolbarの同時タッチを防ぐ
UIToolbarの同時タッチを防ぐUIToolbarの同時タッチを防ぐ
UIToolbarの同時タッチを防ぐ
 
CloudKit
CloudKitCloudKit
CloudKit
 
The Developer Conference - CloudKit, entendendo a Cloud da Apple
The Developer Conference - CloudKit, entendendo a Cloud da AppleThe Developer Conference - CloudKit, entendendo a Cloud da Apple
The Developer Conference - CloudKit, entendendo a Cloud da Apple
 
CloudKit
CloudKitCloudKit
CloudKit
 
Getting started with Handoff
Getting started with HandoffGetting started with Handoff
Getting started with Handoff
 
CloudKit as a backend
CloudKit as a backendCloudKit as a backend
CloudKit as a backend
 
Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究
 
Build Your Mobile App Faster with AWS Mobile Services
Build Your Mobile App Faster with AWS Mobile ServicesBuild Your Mobile App Faster with AWS Mobile Services
Build Your Mobile App Faster with AWS Mobile Services
 

Similar to Getting started with CloudKit

クラウド時代における分散Webシステムの構成とスケーリング #seccamp
クラウド時代における分散Webシステムの構成とスケーリング #seccamp クラウド時代における分散Webシステムの構成とスケーリング #seccamp
クラウド時代における分散Webシステムの構成とスケーリング #seccamp Masahiro NAKAYAMA
 
Azure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox EditionAzure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox EditionKazuki Takai
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 
Cloud Programing for beginner
Cloud Programing for beginnerCloud Programing for beginner
Cloud Programing for beginnerSatoru Ishikawa
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話JustSystems Corporation
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことbitbank, Inc. Tokyo, Japan
 
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説Samir Hammoudi
 
クラウドセキュリティ基礎
クラウドセキュリティ基礎クラウドセキュリティ基礎
クラウドセキュリティ基礎Masahiro NAKAYAMA
 
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演VirtualTech Japan Inc.
 
第15回JSSUG「Azure SQL Database 超入門」
第15回JSSUG「Azure SQL Database 超入門」第15回JSSUG「Azure SQL Database 超入門」
第15回JSSUG「Azure SQL Database 超入門」裕之 木下
 
Cockpit紹介
Cockpit紹介Cockpit紹介
Cockpit紹介atk1234
 
XP祭り2021LT資料(「俺のLT」完結編)
 XP祭り2021LT資料(「俺のLT」完結編) XP祭り2021LT資料(「俺のLT」完結編)
XP祭り2021LT資料(「俺のLT」完結編)Fumihiro Sunada
 
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと @ gcpug 湘南
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと  @ gcpug 湘南[External] 2021.12.15 コンテナ移行の前に知っておきたいこと  @ gcpug 湘南
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと @ gcpug 湘南Google Cloud Platform - Japan
 
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
 
[db tech showcase Tokyo 2015] A26:内部犯行による漏えいを防ぐPostgreSQLの透過的暗号化機能に関する実装と利用方法...
[db tech showcase Tokyo 2015] A26:内部犯行による漏えいを防ぐPostgreSQLの透過的暗号化機能に関する実装と利用方法...[db tech showcase Tokyo 2015] A26:内部犯行による漏えいを防ぐPostgreSQLの透過的暗号化機能に関する実装と利用方法...
[db tech showcase Tokyo 2015] A26:内部犯行による漏えいを防ぐPostgreSQLの透過的暗号化機能に関する実装と利用方法...Insight Technology, Inc.
 
GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみたKatsutoshi Nagaoka
 
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語るKubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語るPreferred Networks
 

Similar to Getting started with CloudKit (20)

クラウド時代における分散Webシステムの構成とスケーリング #seccamp
クラウド時代における分散Webシステムの構成とスケーリング #seccamp クラウド時代における分散Webシステムの構成とスケーリング #seccamp
クラウド時代における分散Webシステムの構成とスケーリング #seccamp
 
Azure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox EditionAzure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox Edition
 
NGINXでの認可について考える
NGINXでの認可について考えるNGINXでの認可について考える
NGINXでの認可について考える
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
Cloud Programing for beginner
Cloud Programing for beginnerCloud Programing for beginner
Cloud Programing for beginner
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたこと
 
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
 
クラウドセキュリティ基礎
クラウドセキュリティ基礎クラウドセキュリティ基礎
クラウドセキュリティ基礎
 
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演
 
第15回JSSUG「Azure SQL Database 超入門」
第15回JSSUG「Azure SQL Database 超入門」第15回JSSUG「Azure SQL Database 超入門」
第15回JSSUG「Azure SQL Database 超入門」
 
【de:code 2020】 Azure Kinect DK テクニカル Tips
【de:code 2020】 Azure Kinect DK テクニカル Tips【de:code 2020】 Azure Kinect DK テクニカル Tips
【de:code 2020】 Azure Kinect DK テクニカル Tips
 
Cockpit紹介
Cockpit紹介Cockpit紹介
Cockpit紹介
 
XP祭り2021LT資料(「俺のLT」完結編)
 XP祭り2021LT資料(「俺のLT」完結編) XP祭り2021LT資料(「俺のLT」完結編)
XP祭り2021LT資料(「俺のLT」完結編)
 
Azure Arc 概要
Azure Arc 概要Azure Arc 概要
Azure Arc 概要
 
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと @ gcpug 湘南
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと  @ gcpug 湘南[External] 2021.12.15 コンテナ移行の前に知っておきたいこと  @ gcpug 湘南
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと @ gcpug 湘南
 
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
 
[db tech showcase Tokyo 2015] A26:内部犯行による漏えいを防ぐPostgreSQLの透過的暗号化機能に関する実装と利用方法...
[db tech showcase Tokyo 2015] A26:内部犯行による漏えいを防ぐPostgreSQLの透過的暗号化機能に関する実装と利用方法...[db tech showcase Tokyo 2015] A26:内部犯行による漏えいを防ぐPostgreSQLの透過的暗号化機能に関する実装と利用方法...
[db tech showcase Tokyo 2015] A26:内部犯行による漏えいを防ぐPostgreSQLの透過的暗号化機能に関する実装と利用方法...
 
GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみた
 
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語るKubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
 

More from Yuichi Yoshida

Swift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムSwift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムYuichi Yoshida
 
Swift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムSwift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムYuichi Yoshida
 
Swift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムSwift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムYuichi Yoshida
 
Swiftで多層型で戻り値を返すことの是非と雑談
Swiftで多層型で戻り値を返すことの是非と雑談Swiftで多層型で戻り値を返すことの是非と雑談
Swiftで多層型で戻り値を返すことの是非と雑談Yuichi Yoshida
 
Swift - Result<t>型で結果を返すのは邪道か,王道か
Swift - Result<t>型で結果を返すのは邪道か,王道かSwift - Result<t>型で結果を返すのは邪道か,王道か
Swift - Result<t>型で結果を返すのは邪道か,王道かYuichi Yoshida
 
Machine Learning : The high interest credit card of technical debt
Machine Learning : The high interest credit card of technical debt Machine Learning : The high interest credit card of technical debt
Machine Learning : The high interest credit card of technical debt Yuichi Yoshida
 
キーボードアプリとSketchのススメ
キーボードアプリとSketchのススメキーボードアプリとSketchのススメ
キーボードアプリとSketchのススメYuichi Yoshida
 
UZTextView, UZMultilayeredPopoverControllerの解説
UZTextView, UZMultilayeredPopoverControllerの解説UZTextView, UZMultilayeredPopoverControllerの解説
UZTextView, UZMultilayeredPopoverControllerの解説Yuichi Yoshida
 
64bit化してみた話
64bit化してみた話64bit化してみた話
64bit化してみた話Yuichi Yoshida
 

More from Yuichi Yoshida (11)

Swift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムSwift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウム
 
Swift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムSwift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウム
 
Swift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウムSwift 2 (& lldb) シンポジウム
Swift 2 (& lldb) シンポジウム
 
Swiftで多層型で戻り値を返すことの是非と雑談
Swiftで多層型で戻り値を返すことの是非と雑談Swiftで多層型で戻り値を返すことの是非と雑談
Swiftで多層型で戻り値を返すことの是非と雑談
 
Swift - Result<t>型で結果を返すのは邪道か,王道か
Swift - Result<t>型で結果を返すのは邪道か,王道かSwift - Result<t>型で結果を返すのは邪道か,王道か
Swift - Result<t>型で結果を返すのは邪道か,王道か
 
Machine Learning : The high interest credit card of technical debt
Machine Learning : The high interest credit card of technical debt Machine Learning : The high interest credit card of technical debt
Machine Learning : The high interest credit card of technical debt
 
キーボードアプリとSketchのススメ
キーボードアプリとSketchのススメキーボードアプリとSketchのススメ
キーボードアプリとSketchのススメ
 
Handoff from Safari
Handoff from SafariHandoff from Safari
Handoff from Safari
 
UZTextView, UZMultilayeredPopoverControllerの解説
UZTextView, UZMultilayeredPopoverControllerの解説UZTextView, UZMultilayeredPopoverControllerの解説
UZTextView, UZMultilayeredPopoverControllerの解説
 
64bit化してみた話
64bit化してみた話64bit化してみた話
64bit化してみた話
 
Gitのすすめ
GitのすすめGitのすすめ
Gitのすすめ
 

Recently uploaded

人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例Kurata Takeshi
 
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHubCompute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHubK Kinzal
 
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料Toru Miyahara
 
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Toru Miyahara
 
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料Toru Miyahara
 
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上mizukami4
 
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題についてMasatsugu Matsushita
 
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介miyp
 

Recently uploaded (8)

人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
 
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHubCompute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
 
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
 
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
 
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
 
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
 
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
 
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
 

Getting started with CloudKit

  • 1. Framework Getting started with CloudKit What can you do using CloudKit? Yuichi Yoshida Chief engineer, DENSO IT Laboratory, Inc. #yidev @sonson_twit © 2014 Yuichi Yoshida, all rights reserved. Redistribution or public display not permitted without written permission from Yuichi Yoshida.
  • 2. 自己紹介 2tchの中の人 • iOS好きです • 2tch(2ちゃんねるビューア) • iOS SDK Hacksなど • 研究 • コンピュータビジョン • 機械学習 • 研究・開発 • 画像検索サービス • 車向けのサービスやハードウェア
  • 3. 発表概要 It works? • Overview • Public and Private • Subscription • CKOperation • Save policy • CloudKit Dashboard
  • 4. Overview What is CloudKit? • iCloudのAPI • AppleのiCloudの写真共有もこれで実装してるらしい • iCloudのファイル共有 • iCloudのCoreDataも? • Apple謹製Parse? • というほど使い勝手はよくない • iOS/OSX専用のちょっとしたクラウドAPI
  • 5. 何ができる? CKRecord • CKRecordクラスを使ってデータを登録 • データはkey-value方式でセット • データはそのまま使わないでね by Apple • NSPredicateを使って検索 • 2種類のデータ • データは誰からもアクセスできるPublic • 本人しかアクセスできないPrivate
  • 6. Add&Edit CKDatabase *database = [[CKContainer defaultContainer] publicCloudDatabase]; CKRecord *newRecord = [[CKRecord alloc] initWithRecordType:@“comment"]; [newRecord setObject:_textField.text forKey:@"text"]; [newRecord setObject:@(refTime) forKey:@“time"]; [database saveRecord:newRecord completionHandler:^(CKRecord *saved, NSError *error) { // error handling }];
  • 7. Fetch NSPredicate *predicate = [NSPredicate predicateWithFormat:@"time > 0"]; CKQuery *query = [[CKQuery alloc] initWithRecordType:@"comment" predicate:predicate]; [database performQuery:query inZoneWithID:nil completionHandler:^(NSArray *results, NSError *error) { // handling results or error }];
  • 8. Public or Private • Public • 誰でも読める(書き込みは設定が必要) • 通知が使える(subscribe) • Private • アカウント本人しか読めない • token, policyによるconflict管理
  • 9. Subscription Someone changes some records. • NSPredicateを使って該当するレコードが追加された通 知を受けとることができる • 通知が来るかどうかは保障されない
  • 10. Subscribe NSPredicate *truePredicate = [NSPredicate predicateWithValue:YES]; CKSubscription *itemSubscription = [[CKSubscription alloc] initWithRecordType:@"comment" predicate:truePredicate options:CKSubscriptionOptionsFiresOnRecordCreation]; CKNotificationInfo *notification = [[CKNotificationInfo alloc] init]; notification.alertBody = @"New comment has been added.”; itemSubscription.notificationInfo = notification; [database saveSubscription:itemSubscription completionHandler:^(CKSubscription *subscription, NSError *error) { // handling subscription ID or, error. }];
  • 11. NSOperationQueue Use the force, Luke. • 一連の操作はCKOperationで実行できる • 追加,編集,削除,検索 • ・・・などのCKOperationのサブクラスがある • 依存関係 • 検索結果に対して・・処理みたいなことを書ける
  • 12. CKOperation CKModifyRecordsOperation *operation = [[CKModifyRecordsOperation alloc] initWithRecordsToSave:records recordIDsToDelete:recordIDs]; // for confliction operation.savePolicy = CKRecordSaveIfServerRecordUnchanged; operation.modifyRecordsCompletionBlock = ^(NSArray *savedRecords, NSArray *deletedRecordIDs, NSError *error) { }; operation.perRecordCompletionBlock = ^(CKRecord *record, NSError *error) { }; operation.perRecordProgressBlock = ^(CKRecord *record, double progress) { };
  • 13. 課題 Write bug reports, Luke. • CKRecordは,ローカルにキャッシュされない • キャッシュは自前で作る必要がある • ドキュメントにはされるって書いて合ったような • バグが多い,つーか多すぎる • subscriptionが動かない • 通知が来ない • savePolicyが効いてない
  • 15. CloudKit Dashboard Can Apple create web services? • CloudKit Dashboard • ブラウザでデータを閲覧・編集 • Xcode,Certification centerから飛べる • Subscriptionの確認など • Privateのデータは見えない
  • 17. まとめ • Concept • Apple謹製のBaaSのような・・・・ • CKRecord • Add, Edit, Fetch • Subscription • CKOperation
  • 18. More Information Yuichi Yoshida http://github.com/sonsongithub/ @sonson_twit