SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
さわってみよう!
Couchbase Lite
Vineyard Works
上津原 一利
at Couchbase Meetup #4
13年5月2日木曜日
自己紹介
★ iPhone App 開発やってます
★ どっちかというとCouchbaseファン
★ 趣味半分でCouchbase + Node.js
★ ブログ:http://ssdkfk.wordpress.com/
★ Tw:kazutoshi_u / Fb :kazutoshi.u
13年5月2日木曜日
最近のしごと
iOS Mobile BI
for JasperSoft
一昨日リリースしました!
OSSのBIに興味のある方、
お声掛け下さい!
13年5月2日木曜日
さて、本題に入って行きましょう
13年5月2日木曜日
Couchbase Lite
13年5月2日木曜日
Couchbase Liteってなにもん?
公式いわく(ざっくり)
CouchDBがMySQL
CouchbaseがOracle
Couchbase LiteはSQLiteみたいな感じ
“
”
Think of it this way: If Apache CouchDB is MySQL, and Couchbase Server is Oracle, then
Couchbase Lite is SQLite.
13年5月2日木曜日
何できるの?
★ ドキュメントベースのスマホ組み込みDB
★ LiveQueryで状態監視
★ CouchDBとのSync
★ JavaScriptのViewまで使えちゃう
(うまいことやれば)
13年5月2日木曜日
なんか良さそう
13年5月2日木曜日
あれ?でも
TouchDBってあったよね?
13年5月2日木曜日
TouchDBはCBLへ
★ TouchDBは1.0で一旦リリース完了
★ それ以降はCouchbase Liteとして開発中
★ 今はTouchDBで言うとVer.1.5
★ 今はプレアルファ。夏にはベータに。
13年5月2日木曜日
変わったところ
★ CouchCocoaが要らなくなった
★ コードがシンプルでわかりやすく
★ わかりにくかったクラス名が頭文字統一
★ JavaScriptやC#からのアダプタも準備
13年5月2日木曜日
つまり
高性能で使いやすくなりました
13年5月2日木曜日
コード比較
CouchDocument* doc = [db untitledDocument];
RESTOperation* ope = [doc putProperties: contents];
if (![ope wait]){
NSLog(@"SAVE error!!");
}else{
NSLog(@"SAVE success!!");
}
CBLDocument* doc = [database untitledDocument];
NSError* error;
if (![doc putProperties: contents error: &error]){
NSLog(@"Couldn't save the new item");
}
ドキュメントを保存する場合
TouchDB
Couchbase
Lite
13年5月2日木曜日
コード比較
Viewを使ってドキュメントを呼び出す場合
TouchDB
Couchbase
Lite
CouchDesignDocument* design = [db designDocumentWithName: @"Draft"];
CouchQuery* query = [design queryViewNamed: @"byDate"];
RESTOperation* op = [query start];
[op onCompletion: ^{
if (op.error) {
NSLog(@"erro!");
}
else{
for (CouchQueryRow* row in query.rows) {
NSDictionary *dic = row.value;
}
}
}];
CBLQuery* query = [[database viewNamed: @"byDate"] query];
for (CBLQueryRow* row in query.rows) {
NSDictionary* contents = row.value;
}
13年5月2日木曜日
コード比較
Viewを使ってドキュメントを呼び出す場合
TouchDB
Couchbase
Lite
CouchDesignDocument* design = [db designDocumentWithName: @"Draft"];
CouchQuery* query = [design queryViewNamed: @"byDate"];
RESTOperation* op = [query start];
[op onCompletion: ^{
if (op.error) {
NSLog(@"erro!");
}
else{
for (CouchQueryRow* row in query.rows) {
NSDictionary *dic = row.value;
}
}
}];
CBLQuery* query = [[database viewNamed: @"byDate"] query];
for (CBLQueryRow* row in query.rows) {
NSDictionary* contents = row.value;
}
その差9行!
13年5月2日木曜日
LiveQuery
LiveQueryは、指定したクエリの結果に
変化があった場合、通知をしてくれる機能。
ちょっと見てみましょう。
13年5月2日木曜日
LiveQuery簡単!
self.liveQuery = [[database queryAllDocuments] asLiveQuery];
[self.liveQuery addObserver:self forKeyPath:@"rows" options:0 context:NULL];
LiveQuery登録
- (void) observeValueForKeyPath: (NSString*)keyPath ofObject: (id)object
change: (NSDictionary*)change context: (void*)context
{
if (object == self.liveQuery) {
for (CBLQueryRow* row in [object rows]) {
// update the UI
[self allGet];
}
}
}
通知受け取り
13年5月2日木曜日
CouchDBとSync
NSArray *repls = [database replicateWithURL:[NSURL URLWithString:@"http://127.0.0.1:5984/testdb"] exclusively:YES];
13年5月2日木曜日
CouchDBとSync
NSArray *repls = [database replicateWithURL:[NSURL URLWithString:@"http://127.0.0.1:5984/testdb"] exclusively:YES];
まさかの1行
13年5月2日木曜日
CouchDBとSync
NSArray *repls = [database replicateWithURL:[NSURL URLWithString:@"http://127.0.0.1:5984/testdb"] exclusively:YES];
まさかの1行
しかもSync後はLiveQueryも動いてくれます
13年5月2日木曜日
13年5月2日木曜日
SQLiteと比べて Good
★ 使う手間が少ない
★ データをSQL化しなくていい
★ 動作が軽快
★ DBとのSyncがお手軽
★ LiveQueryが使える
★ NSDictionaryが返ってくる
13年5月2日木曜日
SQLiteと比べて Bad
★ コールバック式でちょっと馴染みに
くいかも
★ Viewの使い方がいまいちわからん
★ 設計の仕方もよくわからん
13年5月2日木曜日
まとめ
★ CouchbaseLiteはスマホDBの新選択肢
★ TouchDBはCouchbaseLiteへ
★ LiveQuery便利
★ Syncも簡単
★ 設計、活用法を学べば重宝しそう
13年5月2日木曜日
おまけ
13年5月2日木曜日
リアルタイムチャート
Demo
13年5月2日木曜日
Couchbaseの薄い本
この薄い本のお陰で、
サーバー初心者の僕も
リアルタイムチャート
作れました!
河村さん!どうもありがとうございました!
¥500
13年5月2日木曜日
以上
ありがとうございました
13年5月2日木曜日

Más contenido relacionado

La actualidad más candente

RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)三七男 山本
 
リブライズの裏側を見てみよう
リブライズの裏側を見てみようリブライズの裏側を見てみよう
リブライズの裏側を見てみようShinsaku Chikura
 
RubyとRailsのおいしい使い方
RubyとRailsのおいしい使い方RubyとRailsのおいしい使い方
RubyとRailsのおいしい使い方Satomi Tsujita
 
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話Yuhei Miyazato
 
Raspberry piでlチカしてみた
Raspberry piでlチカしてみたRaspberry piでlチカしてみた
Raspberry piでlチカしてみた森下 智裕
 
僕はどうしてもLibsassが使いたかったんだ!
僕はどうしてもLibsassが使いたかったんだ!僕はどうしてもLibsassが使いたかったんだ!
僕はどうしてもLibsassが使いたかったんだ!Masato Noguchi
 
RubyGemsで公開されているライブラリをモンキーパッチした話
RubyGemsで公開されているライブラリをモンキーパッチした話RubyGemsで公開されているライブラリをモンキーパッチした話
RubyGemsで公開されているライブラリをモンキーパッチした話SHOYAYAMAMOTO
 
【LT用前編】Rancherでマルチクラウド をやってみた
【LT用前編】Rancherでマルチクラウド をやってみた【LT用前編】Rancherでマルチクラウド をやってみた
【LT用前編】Rancherでマルチクラウド をやってみたShinya Mori (@mosuke5)
 
すごいぞVuetify!! 〜ポートフォリオを作ってみた〜
すごいぞVuetify!! 〜ポートフォリオを作ってみた〜すごいぞVuetify!! 〜ポートフォリオを作ってみた〜
すごいぞVuetify!! 〜ポートフォリオを作ってみた〜SHOYAYAMAMOTO
 
goroutineはどうやって動いているのか
goroutineはどうやって動いているのかgoroutineはどうやって動いているのか
goroutineはどうやって動いているのかota42y
 
Trident lt vagrant-hands-on
Trident lt vagrant-hands-onTrident lt vagrant-hands-on
Trident lt vagrant-hands-onRyouta Morita
 
Wakayama.rbボードの使い方
Wakayama.rbボードの使い方Wakayama.rbボードの使い方
Wakayama.rbボードの使い方三七男 山本
 
RailsのRailから解放される始めの一歩
RailsのRailから解放される始めの一歩RailsのRailから解放される始めの一歩
RailsのRailから解放される始めの一歩Masato Noguchi
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門masayoshi takahashi
 
Rubotoを試してみた
Rubotoを試してみたRubotoを試してみた
Rubotoを試してみた豊明 尾古
 
Raspberry pi は raspbian だけのものじゃない
Raspberry pi は raspbian だけのものじゃないRaspberry pi は raspbian だけのものじゃない
Raspberry pi は raspbian だけのものじゃないKoichi Ota
 

La actualidad más candente (20)

GR-CITRUSの紹介
GR-CITRUSの紹介GR-CITRUSの紹介
GR-CITRUSの紹介
 
Rails あるある
Rails あるあるRails あるある
Rails あるある
 
RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)
 
リブライズの裏側を見てみよう
リブライズの裏側を見てみようリブライズの裏側を見てみよう
リブライズの裏側を見てみよう
 
RubyとRailsのおいしい使い方
RubyとRailsのおいしい使い方RubyとRailsのおいしい使い方
RubyとRailsのおいしい使い方
 
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
 
Raspberry piでlチカしてみた
Raspberry piでlチカしてみたRaspberry piでlチカしてみた
Raspberry piでlチカしてみた
 
Oss貢献超入門
Oss貢献超入門Oss貢献超入門
Oss貢献超入門
 
僕はどうしてもLibsassが使いたかったんだ!
僕はどうしてもLibsassが使いたかったんだ!僕はどうしてもLibsassが使いたかったんだ!
僕はどうしてもLibsassが使いたかったんだ!
 
RubyGemsで公開されているライブラリをモンキーパッチした話
RubyGemsで公開されているライブラリをモンキーパッチした話RubyGemsで公開されているライブラリをモンキーパッチした話
RubyGemsで公開されているライブラリをモンキーパッチした話
 
【LT用前編】Rancherでマルチクラウド をやってみた
【LT用前編】Rancherでマルチクラウド をやってみた【LT用前編】Rancherでマルチクラウド をやってみた
【LT用前編】Rancherでマルチクラウド をやってみた
 
すごいぞVuetify!! 〜ポートフォリオを作ってみた〜
すごいぞVuetify!! 〜ポートフォリオを作ってみた〜すごいぞVuetify!! 〜ポートフォリオを作ってみた〜
すごいぞVuetify!! 〜ポートフォリオを作ってみた〜
 
goroutineはどうやって動いているのか
goroutineはどうやって動いているのかgoroutineはどうやって動いているのか
goroutineはどうやって動いているのか
 
Kyakusaki.rb
Kyakusaki.rbKyakusaki.rb
Kyakusaki.rb
 
Trident lt vagrant-hands-on
Trident lt vagrant-hands-onTrident lt vagrant-hands-on
Trident lt vagrant-hands-on
 
Wakayama.rbボードの使い方
Wakayama.rbボードの使い方Wakayama.rbボードの使い方
Wakayama.rbボードの使い方
 
RailsのRailから解放される始めの一歩
RailsのRailから解放される始めの一歩RailsのRailから解放される始めの一歩
RailsのRailから解放される始めの一歩
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
Rubotoを試してみた
Rubotoを試してみたRubotoを試してみた
Rubotoを試してみた
 
Raspberry pi は raspbian だけのものじゃない
Raspberry pi は raspbian だけのものじゃないRaspberry pi は raspbian だけのものじゃない
Raspberry pi は raspbian だけのものじゃない
 

Similar a さわってみよう Couchbase Lite

使うっきゃない!iOS9で楽になったAuto Layout!
使うっきゃない!iOS9で楽になったAuto Layout!使うっきゃない!iOS9で楽になったAuto Layout!
使うっきゃない!iOS9で楽になったAuto Layout!SatoTakeshi
 
使うっきゃない!iOS9で楽になったAuto Layout!
使うっきゃない!iOS9で楽になったAuto Layout!使うっきゃない!iOS9で楽になったAuto Layout!
使うっきゃない!iOS9で楽になったAuto Layout!SatoTakeshi
 
Getting started raspberry pi osc hamamatsu
Getting started raspberry pi osc hamamatsuGetting started raspberry pi osc hamamatsu
Getting started raspberry pi osc hamamatsuMasafumi Ohta
 
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分についてiOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分についてFumiya Sakai
 
マイクロサービスとOSSのおいしい関係
マイクロサービスとOSSのおいしい関係マイクロサービスとOSSのおいしい関係
マイクロサービスとOSSのおいしい関係Fumiya Shinozuka
 
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!Yasuyuki Ogawa
 
CouchDB+OpenSocial - OSC 2009/Fall Tokyo
CouchDB+OpenSocial - OSC 2009/Fall TokyoCouchDB+OpenSocial - OSC 2009/Fall Tokyo
CouchDB+OpenSocial - OSC 2009/Fall TokyoYohei Sasaki
 
南東京I phone勉強会(stidev) 20101030
南東京I phone勉強会(stidev) 20101030南東京I phone勉強会(stidev) 20101030
南東京I phone勉強会(stidev) 20101030Kaz Watanabe
 
JSFとJAX-RSで作る Thin Server Architecture #glassfishjp
JSFとJAX-RSで作る Thin Server Architecture #glassfishjpJSFとJAX-RSで作る Thin Server Architecture #glassfishjp
JSFとJAX-RSで作る Thin Server Architecture #glassfishjpToshiaki Maki
 
The Way of Fun Development - たのしい開発への道 / Sapporo RubyKaigi2012
The Way of Fun Development - たのしい開発への道 / Sapporo RubyKaigi2012The Way of Fun Development - たのしい開発への道 / Sapporo RubyKaigi2012
The Way of Fun Development - たのしい開発への道 / Sapporo RubyKaigi2012tatsuo sakurai
 
Raspberry PiのUSB OTGを試す
Raspberry PiのUSB OTGを試すRaspberry PiのUSB OTGを試す
Raspberry PiのUSB OTGを試すKenichiro MATOHARA
 

Similar a さわってみよう Couchbase Lite (11)

使うっきゃない!iOS9で楽になったAuto Layout!
使うっきゃない!iOS9で楽になったAuto Layout!使うっきゃない!iOS9で楽になったAuto Layout!
使うっきゃない!iOS9で楽になったAuto Layout!
 
使うっきゃない!iOS9で楽になったAuto Layout!
使うっきゃない!iOS9で楽になったAuto Layout!使うっきゃない!iOS9で楽になったAuto Layout!
使うっきゃない!iOS9で楽になったAuto Layout!
 
Getting started raspberry pi osc hamamatsu
Getting started raspberry pi osc hamamatsuGetting started raspberry pi osc hamamatsu
Getting started raspberry pi osc hamamatsu
 
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分についてiOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
 
マイクロサービスとOSSのおいしい関係
マイクロサービスとOSSのおいしい関係マイクロサービスとOSSのおいしい関係
マイクロサービスとOSSのおいしい関係
 
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
 
CouchDB+OpenSocial - OSC 2009/Fall Tokyo
CouchDB+OpenSocial - OSC 2009/Fall TokyoCouchDB+OpenSocial - OSC 2009/Fall Tokyo
CouchDB+OpenSocial - OSC 2009/Fall Tokyo
 
南東京I phone勉強会(stidev) 20101030
南東京I phone勉強会(stidev) 20101030南東京I phone勉強会(stidev) 20101030
南東京I phone勉強会(stidev) 20101030
 
JSFとJAX-RSで作る Thin Server Architecture #glassfishjp
JSFとJAX-RSで作る Thin Server Architecture #glassfishjpJSFとJAX-RSで作る Thin Server Architecture #glassfishjp
JSFとJAX-RSで作る Thin Server Architecture #glassfishjp
 
The Way of Fun Development - たのしい開発への道 / Sapporo RubyKaigi2012
The Way of Fun Development - たのしい開発への道 / Sapporo RubyKaigi2012The Way of Fun Development - たのしい開発への道 / Sapporo RubyKaigi2012
The Way of Fun Development - たのしい開発への道 / Sapporo RubyKaigi2012
 
Raspberry PiのUSB OTGを試す
Raspberry PiのUSB OTGを試すRaspberry PiのUSB OTGを試す
Raspberry PiのUSB OTGを試す
 

さわってみよう Couchbase Lite