さわってみよう couchbase lite

28
さわってみよう! Couchbase Lite Vineyard Works 上津原 一利 at Couchbase Meetup #4 1352日木曜日

Upload: ssd-kfk

Post on 28-Jun-2015

1.792 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: さわってみよう Couchbase Lite

さわってみよう!Couchbase Lite

Vineyard Works上津原 一利

at Couchbase Meetup #4

13年5月2日木曜日

Page 2: さわってみよう Couchbase Lite

自己紹介

★ iPhone App 開発やってます

★どっちかというとCouchbaseファン

★趣味半分でCouchbase + Node.js

★ブログ:http://ssdkfk.wordpress.com/

★ Tw:kazutoshi_u / Fb :kazutoshi.u

13年5月2日木曜日

Page 3: さわってみよう Couchbase Lite

最近のしごと

iOS Mobile BIfor JasperSoft

一昨日リリースしました!OSSのBIに興味のある方、お声掛け下さい!

13年5月2日木曜日

Page 4: さわってみよう Couchbase Lite

さて、本題に入って行きましょう

13年5月2日木曜日

Page 5: さわってみよう Couchbase Lite

Couchbase Lite

13年5月2日木曜日

Page 6: さわってみよう Couchbase Lite

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日木曜日

Page 7: さわってみよう Couchbase Lite

何できるの?

★ドキュメントベースのスマホ組み込みDB

★ LiveQueryで状態監視

★ CouchDBとのSync

★ JavaScriptのViewまで使えちゃう(うまいことやれば)

13年5月2日木曜日

Page 8: さわってみよう Couchbase Lite

なんか良さそう

13年5月2日木曜日

Page 9: さわってみよう Couchbase Lite

あれ?でもTouchDBってあったよね?

13年5月2日木曜日

Page 10: さわってみよう Couchbase Lite

TouchDBはCBLへ

★ TouchDBは1.0で一旦リリース完了

★それ以降はCouchbase Liteとして開発中

★今はTouchDBで言うとVer.1.5

★今はプレアルファ。夏にはベータに。

13年5月2日木曜日

Page 11: さわってみよう Couchbase Lite

変わったところ

★ CouchCocoaが要らなくなった

★コードがシンプルでわかりやすく

★わかりにくかったクラス名が頭文字統一

★ JavaScriptやC#からのアダプタも準備

13年5月2日木曜日

Page 12: さわってみよう Couchbase Lite

つまり高性能で使いやすくなりました

13年5月2日木曜日

Page 13: さわってみよう Couchbase Lite

コード比較

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

CouchbaseLite

13年5月2日木曜日

Page 14: さわってみよう Couchbase Lite

コード比較Viewを使ってドキュメントを呼び出す場合

TouchDB

CouchbaseLite

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日木曜日

Page 15: さわってみよう Couchbase Lite

コード比較Viewを使ってドキュメントを呼び出す場合

TouchDB

CouchbaseLite

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日木曜日

Page 16: さわってみよう Couchbase Lite

LiveQuery

LiveQueryは、指定したクエリの結果に変化があった場合、通知をしてくれる機能。

ちょっと見てみましょう。

13年5月2日木曜日

Page 17: さわってみよう Couchbase Lite

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日木曜日

Page 18: さわってみよう Couchbase Lite

CouchDBとSync

NSArray *repls = [database replicateWithURL:[NSURL URLWithString:@"http://127.0.0.1:5984/testdb"] exclusively:YES];

13年5月2日木曜日

Page 19: さわってみよう Couchbase Lite

CouchDBとSync

NSArray *repls = [database replicateWithURL:[NSURL URLWithString:@"http://127.0.0.1:5984/testdb"] exclusively:YES];

まさかの1行

13年5月2日木曜日

Page 20: さわってみよう Couchbase Lite

CouchDBとSync

NSArray *repls = [database replicateWithURL:[NSURL URLWithString:@"http://127.0.0.1:5984/testdb"] exclusively:YES];

まさかの1行

しかもSync後はLiveQueryも動いてくれます

13年5月2日木曜日

Page 21: さわってみよう Couchbase Lite

13年5月2日木曜日

Page 22: さわってみよう Couchbase Lite

SQLiteと比べて Good★使う手間が少ない

★データをSQL化しなくていい

★動作が軽快

★ DBとのSyncがお手軽

★ LiveQueryが使える

★ NSDictionaryが返ってくる13年5月2日木曜日

Page 23: さわってみよう Couchbase Lite

SQLiteと比べて Bad

★コールバック式でちょっと馴染みに

くいかも

★ Viewの使い方がいまいちわからん

★設計の仕方もよくわからん

13年5月2日木曜日

Page 24: さわってみよう Couchbase Lite

まとめ

★ CouchbaseLiteはスマホDBの新選択肢

★ TouchDBはCouchbaseLiteへ

★ LiveQuery便利

★ Syncも簡単

★設計、活用法を学べば重宝しそう

13年5月2日木曜日

Page 25: さわってみよう Couchbase Lite

おまけ

13年5月2日木曜日

Page 26: さわってみよう Couchbase Lite

リアルタイムチャート

Demo

13年5月2日木曜日

Page 27: さわってみよう Couchbase Lite

Couchbaseの薄い本

この薄い本のお陰で、サーバー初心者の僕もリアルタイムチャート作れました!

河村さん!どうもありがとうございました!

¥500

13年5月2日木曜日

Page 28: さわってみよう Couchbase Lite

以上ありがとうございました

13年5月2日木曜日