Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
kitsugi
699 views
Couchbase MeetUP Tokyo - #11 Omoidenote
Couchbase モバイルハッカソンで優勝したアプリ 「おもいでノート」 Couchbase MeetUP Tokyo - #11 の勉強会で発表した資料です。
Technology
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 42
2
/ 42
3
/ 42
4
/ 42
5
/ 42
6
/ 42
7
/ 42
8
/ 42
9
/ 42
10
/ 42
11
/ 42
12
/ 42
13
/ 42
14
/ 42
15
/ 42
16
/ 42
17
/ 42
18
/ 42
19
/ 42
20
/ 42
21
/ 42
22
/ 42
23
/ 42
24
/ 42
25
/ 42
26
/ 42
27
/ 42
28
/ 42
29
/ 42
30
/ 42
31
/ 42
32
/ 42
33
/ 42
34
/ 42
35
/ 42
36
/ 42
37
/ 42
38
/ 42
39
/ 42
40
/ 42
41
/ 42
42
/ 42
More Related Content
KEY
はじめてのCouch db
by
Eiji Kuroda
PDF
Elasticsearch入門 pyfes 201207
by
Jun Ohtani
PDF
AvailabilityZoneとHostAggregate
by
Hiroki Ishikawa
PDF
Firefox Add-on SDK 入門
by
Shoot Morii
PDF
Heroku Postgres
by
Ayumu Aizawa
PDF
Osc shimane-2016-do-postgres-dream-of-graph-database
by
Toshi Harada
PDF
Chugokudb study-20150131
by
Toshi Harada
PDF
MyNA JPUG study 20160220-postgresql-json-datatype
by
Toshi Harada
はじめてのCouch db
by
Eiji Kuroda
Elasticsearch入門 pyfes 201207
by
Jun Ohtani
AvailabilityZoneとHostAggregate
by
Hiroki Ishikawa
Firefox Add-on SDK 入門
by
Shoot Morii
Heroku Postgres
by
Ayumu Aizawa
Osc shimane-2016-do-postgres-dream-of-graph-database
by
Toshi Harada
Chugokudb study-20150131
by
Toshi Harada
MyNA JPUG study 20160220-postgresql-json-datatype
by
Toshi Harada
What's hot
PDF
勉強会force#4 Chatter Integration
by
Kazuki Nakajima
PDF
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
by
Shigeo Ueda
PDF
Apache Torqueについて
by
tako pons
PPTX
ServiceStackの紹介
by
wilfrem
PDF
NIO.2を使って簡単ファイル操作
by
Yuichi Sakuraba
PDF
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
by
y_taka_23
PDF
月間10億pvを支えるmongo db
by
Yuji Isobe
PPTX
SQLチューニング入門 入門編
by
Miki Shimogai
KEY
難しそうで難しくない少し難しいClojure並行処理
by
Naoyuki Kakuda
PPTX
Develop Web Application with Node.js + Express
by
Akinari Tsugo
PPTX
やや関数型を意識した風Elixir/Phoenixご紹介
by
fukuoka.ex
PDF
Search on AWS - IVS CTO Night and Day 2016 Spring
by
Eiji Shinohara
PDF
Tottoruby 20110903
by
Takashi SAKAGUCHI
PDF
Getting Started Japanese Search and Calculate Similarity with Apache Lucene
by
Eiji Shinohara
PPTX
20140903groonga発表資料
by
Hironobu Saitoh
PDF
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
by
博文 斉藤
PDF
はじめてのMongoDB
by
Keisuke Izumiya
PPTX
CMSとPerlで遊ぼう
by
Daiki Ichinose
PDF
Valhalla Update JJUG CCC Spring 2019
by
David Buck
勉強会force#4 Chatter Integration
by
Kazuki Nakajima
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
by
Shigeo Ueda
Apache Torqueについて
by
tako pons
ServiceStackの紹介
by
wilfrem
NIO.2を使って簡単ファイル操作
by
Yuichi Sakuraba
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
by
y_taka_23
月間10億pvを支えるmongo db
by
Yuji Isobe
SQLチューニング入門 入門編
by
Miki Shimogai
難しそうで難しくない少し難しいClojure並行処理
by
Naoyuki Kakuda
Develop Web Application with Node.js + Express
by
Akinari Tsugo
やや関数型を意識した風Elixir/Phoenixご紹介
by
fukuoka.ex
Search on AWS - IVS CTO Night and Day 2016 Spring
by
Eiji Shinohara
Tottoruby 20110903
by
Takashi SAKAGUCHI
Getting Started Japanese Search and Calculate Similarity with Apache Lucene
by
Eiji Shinohara
20140903groonga発表資料
by
Hironobu Saitoh
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
by
博文 斉藤
はじめてのMongoDB
by
Keisuke Izumiya
CMSとPerlで遊ぼう
by
Daiki Ichinose
Valhalla Update JJUG CCC Spring 2019
by
David Buck
Similar to Couchbase MeetUP Tokyo - #11 Omoidenote
PDF
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
by
Couchbase Japan KK
PDF
私の考えるドキュメント指向
by
Yohei Yamamoto
PDF
Couchbaseの紹介 2015/03/05
by
Couchbase Japan KK
PPTX
米GEのIoT基盤「Predix」を支えるNoSQL Couchbaseモバイルソリューション
by
Couchbase Japan KK
PDF
Shibuya Perl Mongers#12 No Sql Couch Db
by
Makoto Ohnami
PPT
もうひとつのNo sql couchdbとは
by
Koji Kawamura
PDF
CouchDB JP & BigCouch
by
Yohei Sasaki
PDF
CouchDBをヤラナイカ
by
Makoto Ohnami
PDF
Go と Couchbase で microservices を作るには?
by
Yusuke Komatsu
PDF
Couchbase liteハンズオン
by
ssd kfk
PDF
Couchbase MeetUP Tokyo - #16
by
kitsugi
PPTX
Couch Db勉強会0623 by yssk22
by
Yohei Sasaki
PDF
Couchbase introduction-20150611
by
Couchbase Japan KK
PDF
Couchbase meetup21040925 sfa demo
by
ktoda
PDF
カウチなやつら CouchDB in the room
by
Makoto Ohnami
PDF
Couchbase meetup20140925
by
ktoda
PDF
20150831 Couchbase Tokyo 2015 [Mobile] 端末の位置情報をフル活用でSFAはモバイルベースに!
by
Masahiro Tomisugi
PPTX
Couchbase 101 ja
by
Couchbase Japan KK
PDF
Couch DB for 197X
by
Makoto Ohnami
PDF
Fluentd Casual Talks LT #fluentd #fluentdcasual
by
Hitoshi Asai
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
by
Couchbase Japan KK
私の考えるドキュメント指向
by
Yohei Yamamoto
Couchbaseの紹介 2015/03/05
by
Couchbase Japan KK
米GEのIoT基盤「Predix」を支えるNoSQL Couchbaseモバイルソリューション
by
Couchbase Japan KK
Shibuya Perl Mongers#12 No Sql Couch Db
by
Makoto Ohnami
もうひとつのNo sql couchdbとは
by
Koji Kawamura
CouchDB JP & BigCouch
by
Yohei Sasaki
CouchDBをヤラナイカ
by
Makoto Ohnami
Go と Couchbase で microservices を作るには?
by
Yusuke Komatsu
Couchbase liteハンズオン
by
ssd kfk
Couchbase MeetUP Tokyo - #16
by
kitsugi
Couch Db勉強会0623 by yssk22
by
Yohei Sasaki
Couchbase introduction-20150611
by
Couchbase Japan KK
Couchbase meetup21040925 sfa demo
by
ktoda
カウチなやつら CouchDB in the room
by
Makoto Ohnami
Couchbase meetup20140925
by
ktoda
20150831 Couchbase Tokyo 2015 [Mobile] 端末の位置情報をフル活用でSFAはモバイルベースに!
by
Masahiro Tomisugi
Couchbase 101 ja
by
Couchbase Japan KK
Couch DB for 197X
by
Makoto Ohnami
Fluentd Casual Talks LT #fluentd #fluentdcasual
by
Hitoshi Asai
Couchbase MeetUP Tokyo - #11 Omoidenote
1.
1 Couchbase MeetUP
Tokyo - #11
2.
自己紹介 2 •木次
恭一 •Twitter: @kyoichi_kitsugi •ウイングソリューションズ(株) •仕事ではJavaがメイン •最近では Sencha Touch, ElasticSearchなど
3.
Couchbase Mobileとの出会い 3
MongoDB CouchDB TouchDB Couchbase Server Sync Gateway Couchbase Lite CouchDB NoSQL に興味 JSON 大好き モバイル 大好き
4.
Couchbase Mobile Hackathon
4 ハッカソン開催 •2014年9月7日開催 •向上心溢れる暇な人が集結 •Couchbase Liteを利用したアプリを作成 •優勝したら一人だけサンフランシスコに行ける
5.
Couchbase Mobile Hackathon
5 ROUND 1 FIGHT
6.
Couchbase Mobile Hackathon
6 TIME OVER 5時間じゃ厳しいっす!!
7.
Couchbase Mobile Hackathon
7 ヒソ( ´д)ヒソ(´д`)ヒソ(д` )ヒソ 審査中 ネェ、キイタ?( ´д)オクサン(д` )アラヤダワァ
8.
Couchbase Mobile Hackathon
8 優勝
9.
Couchbase Mobile Hackathon
9 勝因をしいてあげるなら •チームの人数が多かった •プレゼン資料が良かった •画面数が一番多かった
10.
おもいでノート 10 行ったことがある場所A
B Tom Jerry 行ったことがない場所C 行った事がある場所は 自宅で閲覧・更新が可能 その場所に行かないと 何も出来ない
11.
おもいでノート 11 デモ
https://github.com/kitsugi/omoidebase
12.
おもいでノート 12 行ったことがない場所
13.
Couchbase Connect 13
•2014年10月6日~7日開催 •サンフランシスコ •全米No1と僕が思ったNoSQLカンファレンス •スタバのコーヒーが飲み放題
14.
Couchbase Connectの様子 14
15.
Couchbase Connectの様子 15
16.
Couchbase Connectの様子 16
17.
Couchbase Connectの様子 17
18.
Couchbase Connectの様子 18
19.
Couchbase Connectの様子 19
20.
おもいでノート 20 ドキュメント
21.
Document種別 21 場所
place コメント comment プロフィール コメント コメント tom comment comment 場所 place コメント comment コメント comment プロフィール jerry
22.
場所 { "type"
: "place", "code" : "ADAA8D9E-26C4-46F8-9A39-78EFD6DDC3F5", "name" : "Westin San Francisco", "remark": "Couchbase Connect 2014 on Oct 6, 2014 in San Francisco", "location": { "latitude": 37.7876643, "longitude": -122.4090627 }, "image" : "画像 (base64文字列)" }
23.
コメント { "type"
: "comment", "place" : "ADAA8D9E-26C4-46F8-9A39-78EFD6DDC3F5", "created_at" : "2014-11-17T13:56:52+09:00", "contents" : "内容", "image": "画像 (base64文字列)" }
24.
プロフィール { "type"
: "profile", "name" : "tom", "places" : [ "ADAA8D9E-26C4-46F8-9A39-78EFD6DDC3F5", "89B038CD-84A9-442c-95D1-0E22CAF8EB9E" ] }
25.
おもいでノート 25 構築
26.
構成図 Couchbase Server
Sync Gateway おもいでノート (Couchbase Lite) cURL等 :8091 Backet omoidebase :4985 :4984 User, Roleの作成・削除 マスタ投入 おもいでノート (Couchbase Lite) 26 コメント作成コメント作成
27.
構築1:バケット作成 Couchbase Server
:8091 Backet omoidebase Admin Console等
28.
構築2:Sync Gateway起動 Backet
omoidebase Couchbase Server :8091 Sync Gateway Terminal等 ./sync_gateway config.json { "interface": ":4984", "adminInterface": ":4985", "log": [ "REST" ], "databases": { "omoidebase": { "server": "http://localhost:8091", "bucket": "omoidebase", "sync": ` function(doc, oldDoc) { if (doc.type === "profile") { if (doc.places) { for (var i = 0; i < doc.places.length; i++) { access(doc.name, doc.places[i]); } } access(doc.name, doc.name); channel(doc.name); } else if (doc.type === "comment") { channel(doc.place); } else if (doc.type === "place") { channel(doc._id); } }` } } } ※データーベースは複数定義可能 :4984 :4985 Sync Function
29.
構築3:ユーザー作成 Backet omoidebase
Couchbase Server :8091 Sync Gateway :4985 cURL等 tom password curl -XPOST -H "Content-Type: application/json" http://localhost:4985/omoidebase/ _user/ -d @user1.json { "name": "tom", "password": "password" }
30.
構築4:マスタ系データインポート Backet omoidebase
Couchbase Server :8091 Sync Gateway :4985 cURL等 場所プロフィール curl -XPUT -H "Content-Type: application/json" http://localhost:4985/omoidebase/ ADAA8D9E-26C4-46F8-9A39-78EFD6DDC3F5 -d @place1.json curl -XPUT -H "Content-Type: application/json" http://localhost:4985/omoidebase/tom -d @profile1.json
31.
構築5:クライアント同期 Backet omoidebase
Couchbase Server :8091 Sync Gateway :4984 アプリ Couchbase Lite Database omoidebase URL url = new URL("http://localhost:4984/omoidebase"); pull = database.createPullReplication(url); push = database.createPushReplication(url); Authenticator auth = new BasicAuthenticator(“tom”, “password”); pull.setAuthenticator(auth); push.setAuthenticator(auth); pull.start(); push.start(); Sync Function tom password place profile place profile
32.
構築:Couchbase Serverのドキュメント 32
1.バケット作成 なし 2.Sync Gateway起動 ID Content _sync:seq _sync:syncdata { "Sync": " function(doc, oldDoc) {n if (doc.type === "profile… 3.ユーザー作成 ID Content _sync:seq 2 _sync:syncdata { "Sync": " function(doc, oldDoc) {n if (doc.type === ”profile… _sync:user:jerry { "name": "jerry", "all_channels": { }, "sequence": 2, "passwo… _sync:user:tom { "name": "tom", "all_channels": { }, "sequence": 1, "passwo…
33.
構築:Couchbase Serverのドキュメント 33
4.マスタ系データインポート ID Content _sync:seq 7 _sync:syncdata { "Sync": " function(doc, oldDoc) {n if (doc.type === ”profile… _sync:user:jerry { "name": "jerry", "all_channels": { }, "sequence": 2, "passwo… _sync:user:tom { "name": "tom", "all_channels": { }, "sequence": 1, "passwo… ADAA8D9E-26C4-46F8-9A39-78EFD6DDC3F5 { "_sync": { "rev": "1-375de787d53752736649d964197e7a41", "s… 2C139CE5-9B5D-4836-97A3-B25AEC49D6FB { "_sync": { "rev": "1-22476c90d79e6724058271609f1a4408", "s… 89B038CD-84A9-442c-95D1-0E22CAF8EB9E { "_sync": { "rev": "1-4867aafbf14a79607730e3e3f7de6257", "s… jerry { "_sync": { "rev": "1-c0888ab8cf936c83aaf36a10eaca1a8d", "s… tom { "_sync": { "rev": "1-009fa66f707d5e3eea7b2830cff0ea51", "s…
34.
構築:Couchbase Serverのドキュメント 34
5.クライアント同期 ID Content _sync:seq 7 _sync:syncdata { "Sync": " function(doc, oldDoc) {n if (doc.type === ”profile… _sync:user:jerry { "name": "jerry", "all_channels": { }, "sequence": 2, "passwo… _sync:user:tom { "name": "tom", "all_channels": { }, "sequence": 1, "passwo… ADAA8D9E-26C4-46F8-9A39-78EFD6DDC3F5 { "_sync": { "rev": "1-375de787d53752736649d964197e7a41", "s… 2C139CE5-9B5D-4836-97A3-B25AEC49D6FB { "_sync": { "rev": "1-22476c90d79e6724058271609f1a4408", "s… 89B038CD-84A9-442c-95D1-0E22CAF8EB9E { "_sync": { "rev": "1-4867aafbf14a79607730e3e3f7de6257", "s… jerry { "_sync": { "rev": "1-c0888ab8cf936c83aaf36a10eaca1a8d", "s… tom { "_sync": { "rev": "1-009fa66f707d5e3eea7b2830cff0ea51", "s…
35.
おもいでノート 35 Sync
Function
36.
Configuration Files {
"interface": ":4984", "adminInterface": ":4985", "log": [ "REST" ], "databases": { "omoidebase": { "server": "http://localhost:8091", "bucket": "omoidebase", "sync": ` function(doc, oldDoc) { if (doc.type === "profile") { if (doc.places) { for (var i = 0; i < doc.places.length; i++) { access(doc.name, doc.places[i]); } } access(doc.name, doc.name); channel(doc.name); } else if (doc.type === "comment") { channel(doc.place); } else if (doc.type === "place") { channel(doc._id); } }` } } } 36
37.
Sync Function API
37 主な関数 関数名引数説明 throw forbiddenプロパティを含むエラーオブジェクト例外の送出 requireUser username(文字列または文字列の配列) ユーザー名が引数に一致または配列の場合は含まれなければ例外を送出 requireRole rolename(文字列または文字列の配列) ユーザーのロールが引数に一致または配列の場合は含まれなければ例外を送 出 requireAccess channels(文字列または文字列の配列) ユーザーが引数のチャネルのうち少なくとも一つへのアクセスを有していなけ れば例外を送出 channel name(文字列または文字列の配列。nullやundefinedでも可) 引数に指定されたチャネルにドキュメントをルーティングします access username(文字列または文字列の配列。nullやundefinedでも可), channelname(文字列または文字列の配列。nullやundefinedでも可) ユーザーにチャネルへのアクセス権を付与します role username(文字列または文字列の配列。nullやundefinedでも可), rolename(文字列または文字列の配列。nullやundefinedでも可) ユーザーにロールを付与します http://developer.couchbase.com/mobile/develop/guides/sync-gateway/sync-function-api-guide/index.html 重要なのは channelとaccess
38.
場所 チャネル ADAA8D9E-26C4-46F8-9A
39-78EFD6DDC3F5 { "type" : "place", "code" : "ADAA8D9E-26C4-46F8-9A39-78EFD6DDC3F5", "name" : "Westin San Francisco", "remark": "Couchbase Connect 2014 on Oct 6, 2014 in San Francisco", "location": { チャネル 89B038CD-84A9-442c-95 D1-0E22CAF8EB9E チャネル 2C139CE5-9B5D-4836-97 A3-B25AEC49D6FB "latitude": 37.7876643, "longitude": -122.4090627 }, "image" : "画像 (base64文字列)" } if (doc.type === "place") { channel(doc._id); } 場所場所場所
39.
プロフィール if (doc.type
=== "profile") { if (doc.places) { for (var i = 0; i < doc.places.length; i++) { access(doc.name, doc.places[i]); } } access(doc.name, doc.name); channel(doc.name); } プロフィール場所プロフィール場所 チャネル tom チャネル jerry チャネル ADAA8D9E-26C4-46F8-9 A39-78EFD6DDC3F5 tom jerry チャネル 89B038CD-84A9-442c-95 D1-0E22CAF8EB9E { "type" : "profile", "name" : "tom", "places" : [ "ADAA8D9E-26C4-46F8-9A39-78EFD6DDC3F5", "89B038CD-84A9-442c-95D1-0E22CAF8EB9E" ] }
40.
コメント { "type"
: "comment", "place" : "ADAA8D9E-26C4-46F8-9A39-78EFD6DDC3F5", "created_at" : "2014-11-17T13:56:52+09:00", "contents" : "内容", "image": "画像 (base64文字列)" } if (doc.type === "comment") { channel(doc.place); } コメントコメントコメント チャネル ADAA8D9E-26C4-46F8-9 A39-78EFD6DDC3F5 チャネル 89B038CD-84A9-442c-95 D1-0E22CAF8EB9E チャネル 2C139CE5-9B5D-4836-97 A3-B25AEC49D6FB
41.
ポイント •チャネルの範囲を決める •ドキュメントにプロフィール情報を持つ
チャネル ADAA8D9E-26C4-46F8- 9A39-78EFD6DDC3F5 場所 コメント コメント コメント コメント
42.
42 That's all.
Download