SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
BMXUG つきじ #4
IBM Cloudant 超活用法! 禁断の「アレ」に挑戦してみました。。
確認
https://bmxug.connpass.com/event/74656/
今日はこの方向で今日はこの方向で今日はこの方向で今日はこの方向で
自己紹介
Twitter: @dotnsf
Blog: http://dotnsf.blog.jp/
Email: dotnsf@jp.ibm.com
趣味: マンホール
木村 桂(きむら けい)
プログラマー
マンホールマップ: http://manholemap.juge.me/
ノーツ大好き!ノーツ大好き!ノーツ大好き!ノーツ大好き!
プログラマーですが、何か
https://www.ibm.com/developerworks/community/blogs/pgmrk
~2013/07 2013/08~
2015/02~ IBM復帰
Cloudant NoSQL データベースの
Design Document 機能
IBM Cloudant
• Apache CouchDB をベースに IBM が DBaaS 化して IBM Cloud から提供し
ているデータベースサービス
• Apache CouchDB の最新バージョンは 2.1.0
• IBM Cloudant は CouchDB 2.0.0 ベース
• この後に紹介する Design Document 機能は Apache CouchDB が所有している機能
• JSON ドキュメントをスケーラブルに格納する高速データベース
• 分散データベース
• 検索、トランザクション処理は苦手
• 「とにかく大量のデータを保存する」用途向き(ログ、IoT、・・・)
• Design Document という特殊なドキュメントで、設計要素を管理する
• View / List / Show
例: prefs データベース 例えば関東地方は 8 <= code <= 14,
海なし県は code ∈ [ 9, 10, 11, 19, 20, 21, 25, 29 ]
View Design Document
• 「特定の条件を満たす JSON ドキュメントを『ビュー』という単位でまと
めてマッピング定義」したもの
• 上記条件を管理する特殊な JSON ドキュメント = Design Document
• 1つの Design Document の中に最大3つの定義を記述できる
• View
• List(後述)
• Show(後述)
ちなみに・・・
Design Document はダッシュボードからも作成可能
View Design Document の例(1)
• 関東地方だけを抜き出す View Design Document (kanto_view.json)
{
"language": "javascript",
"views": {
"kanto": {
"map": "function( doc ){
if( doc.code && 8 <= doc.code && doc.code <= 14 ){
emit( doc._id, { code: doc.code, pref: doc.pref, capital: doc.capital, lat: doc.lat, lng: doc.lng } );
}
}"
}
}
}
全てのドキュメントが doc としてこの関数の引数となって実行される
emit されたデータはビューに含まれる
doc.code が存在して、かつ8以上14以下だった場合に emit する
View Design Document の例(2)
• 海なし県だけを抜き出す View Design Document (nosea_view.json)
{
"language": "javascript",
"views": {
"nosea": {
"map": "function( doc ){
if( doc.code && [ 9, 10, 11, 19, 20, 21, 25, 29 ].indexOf( doc.code ) > -1 ){
emit( doc._id, { code: doc.code, pref: doc.pref, capital: doc.capital, lat: doc.lat, lng: doc.lng } );
}
}"
}
}
}
View Design Document の適用
$ curl -u 'username:password' -H 'Content-Type: application/json'
-XPUT 'https://username.cloudant.com/prefs/_design/nosea' -d @nosea_view.json
List Design Document
• View Design Document がビューのマッピング条件を記述したもので
あったのに対して、List Design Document はビューの見栄えを定義す
るもの
List Design Document の例
• 海なし県ビューの見栄えを定義する List Design Document
{
"_rev": "xxxxx…..xxxxx",
"language": "javascript",
"views": { .. },
"lists": {
"nosea": "function( head, row ){
start( { 'headers': { 'content-type': 'text/html' } } );
send( '<ul>' );
var row;
while( row = getRow() ){
var url = '../../_show/pref';
send( '<li><a href=¥"' + url + row.id + '¥"' + row.value.prefecture + '(' + row.value.capital + ')</a></li>' );
}
send( '</ul>' );
}"
}
}
<ul>
<li><a href="xx">[県名]([都市名])</a></li>
:
</ul>
ビュー表示用の HTML テンプレート
List Design Document の適用
$ curl -u 'username:password' -H 'Content-Type: application/json'
-XPUT 'https://username.cloudant.com/prefs/_design/nosea' -d @nosea_view.json
https://username.cloudant.com/prefs/_design/nosea/_list/nosea/nosea
Show Design Document
• List Design Document はビューの見栄えを定義するものであったの
に対し、Show Design Document はビューから選択した1ドキュメント
の見栄えを定義するもの
Show Design Document の例
• 海なし県の見栄えを定義する Show Design Document
{
"_rev": "yyyyy…..yyyyy",
"language": "javascript",
"views": { .. }, "lists": { .. },
"shows": {
"nosea": "(function( doc, req ){
if( doc ){
return '<h2>' + doc.prefecture + '</h2>'
+ '<h3>' + doc.capital + '</h3><hr/>'
+ '緯度: ' + doc.lat + '<br/>'
+ '経度: ' + doc.lng;
}else{
return 'empty';
}
})"
}
}
<h2>[県名]</h2>
<h3>[都市名]</h3>
<hr/>
緯度: [緯度]<br/>
経度: [経度]
Show Design Document の適用
$ curl -u 'username:password' -H 'Content-Type: application/json'
-XPUT 'https://username.cloudant.com/prefs/_design/nosea' -d @nosea_show.json
https://username.cloudant.com/prefs/_design/nosea/_list/nosea/nosea
Design Document のまとめ
• IBM Cloudant / Apache CouchDB が持つ特徴的な機能
• ビューの定義や見栄え、各文書の見栄えを定義する特殊なドキュメ
ント
• アプリケーションサーバーを使わなくても簡易テンプレートエンジンの
ように使うことができる
• データとロジック、見た目を分離する流行とは必ずしも一致しない
おまけ
• IBM Cloudant / Apache CouchDB はデータドキュメントも設計要素の
ドキュメントも、いずれもドキュメントとしてデータベース内に格納され
る
ノーツも同じ
実は CouchDB の開発者は元 IBM/Lotus エンジニア
https://www.linkedin.com/in/damienkatz/

Weitere ähnliche Inhalte

Was ist angesagt?

objective-c propertyの属性について
objective-c propertyの属性についてobjective-c propertyの属性について
objective-c propertyの属性についてHiroki Uemoto
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめるShuhei Iitsuka
 
私の考えるドキュメント指向
私の考えるドキュメント指向私の考えるドキュメント指向
私の考えるドキュメント指向Yohei Yamamoto
 
フロント作業の効率化
フロント作業の効率化フロント作業の効率化
フロント作業の効率化Yuto Yoshinari
 
桐島、ファイルに 保存するの やめるってよ
桐島、ファイルに 保存するの やめるってよ 桐島、ファイルに 保存するの やめるってよ
桐島、ファイルに 保存するの やめるってよ DQNEO
 
クライアントサイドjavascript簡単紹介
クライアントサイドjavascript簡単紹介クライアントサイドjavascript簡単紹介
クライアントサイドjavascript簡単紹介しくみ製作所
 
202003 functiontalkinnotesknowsworkshop20th
202003 functiontalkinnotesknowsworkshop20th202003 functiontalkinnotesknowsworkshop20th
202003 functiontalkinnotesknowsworkshop20thSatoru Abe
 
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!Naruhiko Ogasawara
 
oDeskつこーてみた
oDeskつこーてみたoDeskつこーてみた
oDeskつこーてみたkuippa
 
2011 10-satalabo-naaon
2011 10-satalabo-naaon2011 10-satalabo-naaon
2011 10-satalabo-naaonNaoki Okino
 
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話azuma satoshi
 
202006 のの会@関数Talk 21st @function-talk-in-notesknows-workshop
202006 のの会@関数Talk 21st @function-talk-in-notesknows-workshop202006 のの会@関数Talk 21st @function-talk-in-notesknows-workshop
202006 のの会@関数Talk 21st @function-talk-in-notesknows-workshopSatoru Abe
 
20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸Takahiro Iwase
 
Clustering -Elbow Chart-
Clustering -Elbow Chart-Clustering -Elbow Chart-
Clustering -Elbow Chart-Yuu Kimy
 
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringGoでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringYahoo!デベロッパーネットワーク
 
カウチなやつら CouchDB in the room
カウチなやつら CouchDB in the roomカウチなやつら CouchDB in the room
カウチなやつら CouchDB in the roomMakoto Ohnami
 

Was ist angesagt? (20)

LT 2014 - 1
LT 2014 - 1LT 2014 - 1
LT 2014 - 1
 
実践スクレイピング
実践スクレイピング実践スクレイピング
実践スクレイピング
 
objective-c propertyの属性について
objective-c propertyの属性についてobjective-c propertyの属性について
objective-c propertyの属性について
 
Web勉強会 20120927
Web勉強会 20120927Web勉強会 20120927
Web勉強会 20120927
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめる
 
私の考えるドキュメント指向
私の考えるドキュメント指向私の考えるドキュメント指向
私の考えるドキュメント指向
 
Tour of Scraping
Tour of ScrapingTour of Scraping
Tour of Scraping
 
フロント作業の効率化
フロント作業の効率化フロント作業の効率化
フロント作業の効率化
 
桐島、ファイルに 保存するの やめるってよ
桐島、ファイルに 保存するの やめるってよ 桐島、ファイルに 保存するの やめるってよ
桐島、ファイルに 保存するの やめるってよ
 
クライアントサイドjavascript簡単紹介
クライアントサイドjavascript簡単紹介クライアントサイドjavascript簡単紹介
クライアントサイドjavascript簡単紹介
 
202003 functiontalkinnotesknowsworkshop20th
202003 functiontalkinnotesknowsworkshop20th202003 functiontalkinnotesknowsworkshop20th
202003 functiontalkinnotesknowsworkshop20th
 
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
 
oDeskつこーてみた
oDeskつこーてみたoDeskつこーてみた
oDeskつこーてみた
 
2011 10-satalabo-naaon
2011 10-satalabo-naaon2011 10-satalabo-naaon
2011 10-satalabo-naaon
 
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
 
202006 のの会@関数Talk 21st @function-talk-in-notesknows-workshop
202006 のの会@関数Talk 21st @function-talk-in-notesknows-workshop202006 のの会@関数Talk 21st @function-talk-in-notesknows-workshop
202006 のの会@関数Talk 21st @function-talk-in-notesknows-workshop
 
20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸
 
Clustering -Elbow Chart-
Clustering -Elbow Chart-Clustering -Elbow Chart-
Clustering -Elbow Chart-
 
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringGoでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
 
カウチなやつら CouchDB in the room
カウチなやつら CouchDB in the roomカウチなやつら CouchDB in the room
カウチなやつら CouchDB in the room
 

Ähnlich wie BMXUG つきじ#4

徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925Yu Ito
 
シラサギハンズオン 大阪
シラサギハンズオン 大阪シラサギハンズオン 大阪
シラサギハンズオン 大阪Yu Ito
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップYasuhito Yabe
 
シラサギハンズオン 東京
シラサギハンズオン 東京シラサギハンズオン 東京
シラサギハンズオン 東京Yu Ito
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016Yu Ito
 
Material DesignをPolymerで表現しよう(神戸ITフェスティバル × HTML5fun@神戸)
Material DesignをPolymerで表現しよう(神戸ITフェスティバル × HTML5fun@神戸)Material DesignをPolymerで表現しよう(神戸ITフェスティバル × HTML5fun@神戸)
Material DesignをPolymerで表現しよう(神戸ITフェスティバル × HTML5fun@神戸)Masayuki Abe
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespacesIssei Hiraoka
 
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインWebフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインShumpei Shiraishi
 
Power shell で DSL
Power shell で DSLPower shell で DSL
Power shell で DSLurasandesu
 
「Webサービスのつくり方」 のつくり方
「Webサービスのつくり方」 のつくり方「Webサービスのつくり方」 のつくり方
「Webサービスのつくり方」 のつくり方Yusuke Wada
 
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用Developers Summit
 
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
SEOとJava Script。 〜文書構造とチームと、時々、闇〜SEOとJava Script。 〜文書構造とチームと、時々、闇〜
SEOとJava Script。 〜文書構造とチームと、時々、闇〜Yuki Minakawa
 
MTDDC Meetup HOKKAIDO 2013 KEYNOTE - Movable Type 6
MTDDC Meetup HOKKAIDO 2013 KEYNOTE - Movable Type 6MTDDC Meetup HOKKAIDO 2013 KEYNOTE - Movable Type 6
MTDDC Meetup HOKKAIDO 2013 KEYNOTE - Movable Type 6Daiji Hirata
 
CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)Kenji Shirane
 
実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターンHiroyasu Suzuki
 
僕の Serverless web application
僕の Serverless web application僕の Serverless web application
僕の Serverless web application祐樹 夏目
 
レスポンシブWebデザインによる開発効率化
レスポンシブWebデザインによる開発効率化レスポンシブWebデザインによる開発効率化
レスポンシブWebデザインによる開発効率化亮 門屋
 
Mobile SEO (Japanese Version)
Mobile SEO (Japanese Version)Mobile SEO (Japanese Version)
Mobile SEO (Japanese Version)ssuserd60633
 
2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門miso- soup3
 

Ähnlich wie BMXUG つきじ#4 (20)

徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925
 
シラサギハンズオン 大阪
シラサギハンズオン 大阪シラサギハンズオン 大阪
シラサギハンズオン 大阪
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ
 
シラサギハンズオン 東京
シラサギハンズオン 東京シラサギハンズオン 東京
シラサギハンズオン 東京
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016
 
Material DesignをPolymerで表現しよう(神戸ITフェスティバル × HTML5fun@神戸)
Material DesignをPolymerで表現しよう(神戸ITフェスティバル × HTML5fun@神戸)Material DesignをPolymerで表現しよう(神戸ITフェスティバル × HTML5fun@神戸)
Material DesignをPolymerで表現しよう(神戸ITフェスティバル × HTML5fun@神戸)
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
 
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインWebフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
 
Power shell で DSL
Power shell で DSLPower shell で DSL
Power shell で DSL
 
20130629 linkdraw
20130629 linkdraw20130629 linkdraw
20130629 linkdraw
 
「Webサービスのつくり方」 のつくり方
「Webサービスのつくり方」 のつくり方「Webサービスのつくり方」 のつくり方
「Webサービスのつくり方」 のつくり方
 
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
 
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
SEOとJava Script。 〜文書構造とチームと、時々、闇〜SEOとJava Script。 〜文書構造とチームと、時々、闇〜
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
 
MTDDC Meetup HOKKAIDO 2013 KEYNOTE - Movable Type 6
MTDDC Meetup HOKKAIDO 2013 KEYNOTE - Movable Type 6MTDDC Meetup HOKKAIDO 2013 KEYNOTE - Movable Type 6
MTDDC Meetup HOKKAIDO 2013 KEYNOTE - Movable Type 6
 
CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)
 
実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン
 
僕の Serverless web application
僕の Serverless web application僕の Serverless web application
僕の Serverless web application
 
レスポンシブWebデザインによる開発効率化
レスポンシブWebデザインによる開発効率化レスポンシブWebデザインによる開発効率化
レスポンシブWebデザインによる開発効率化
 
Mobile SEO (Japanese Version)
Mobile SEO (Japanese Version)Mobile SEO (Japanese Version)
Mobile SEO (Japanese Version)
 
2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
 

Mehr von K Kimura

ThinkPad を自慢できると聞いてやってきました
ThinkPad を自慢できると聞いてやってきましたThinkPad を自慢できると聞いてやってきました
ThinkPad を自慢できると聞いてやってきましたK Kimura
 
IBM FamilyDay 2022 - 帰ってきた LINE 手描きスタンプ
IBM FamilyDay 2022 - 帰ってきた LINE 手描きスタンプIBM FamilyDay 2022 - 帰ってきた LINE 手描きスタンプ
IBM FamilyDay 2022 - 帰ってきた LINE 手描きスタンプK Kimura
 
「プライベート版 Heroku」の "dokku" は Cloud Foundry 代替としてどこまで使えるか?
「プライベート版 Heroku」の "dokku" は Cloud Foundry 代替としてどこまで使えるか?「プライベート版 Heroku」の "dokku" は Cloud Foundry 代替としてどこまで使えるか?
「プライベート版 Heroku」の "dokku" は Cloud Foundry 代替としてどこまで使えるか?K Kimura
 
LINE お絵描きスタンプが NFT 対応するかも
LINE お絵描きスタンプが NFT 対応するかもLINE お絵描きスタンプが NFT 対応するかも
LINE お絵描きスタンプが NFT 対応するかもK Kimura
 
ICFO2021 コロナ時代のオンラインハンズオン体験
ICFO2021   コロナ時代のオンラインハンズオン体験ICFO2021   コロナ時代のオンラインハンズオン体験
ICFO2021 コロナ時代のオンラインハンズオン体験K Kimura
 
IBM Family Day 2020 - LINE で手描きスタンプに挑戦!
IBM Family Day 2020 - LINE で手描きスタンプに挑戦!IBM Family Day 2020 - LINE で手描きスタンプに挑戦!
IBM Family Day 2020 - LINE で手描きスタンプに挑戦!K Kimura
 
マンホールマップ10周年 20200725
マンホールマップ10周年 20200725マンホールマップ10周年 20200725
マンホールマップ10周年 20200725K Kimura
 
MashupAward6 Manholemap(2010)
MashupAward6 Manholemap(2010)MashupAward6 Manholemap(2010)
MashupAward6 Manholemap(2010)K Kimura
 
スライドパズルハンズオン資料
スライドパズルハンズオン資料スライドパズルハンズオン資料
スライドパズルハンズオン資料K Kimura
 
ユーザー投稿型位置情報プロットシステム - マンホールマップ
ユーザー投稿型位置情報プロットシステム - マンホールマップユーザー投稿型位置情報プロットシステム - マンホールマップ
ユーザー投稿型位置情報プロットシステム - マンホールマップK Kimura
 
Scratch でゲームプログラミング
Scratch でゲームプログラミングScratch でゲームプログラミング
Scratch でゲームプログラミングK Kimura
 
空耳アワーマシーンを作ってみた
空耳アワーマシーンを作ってみた空耳アワーマシーンを作ってみた
空耳アワーマシーンを作ってみたK Kimura
 
生まれ変わるマンホールマップ
生まれ変わるマンホールマップ生まれ変わるマンホールマップ
生まれ変わるマンホールマップK Kimura
 
地図データでレースゲームを作って遊ぼう!
地図データでレースゲームを作って遊ぼう!地図データでレースゲームを作って遊ぼう!
地図データでレースゲームを作って遊ぼう!K Kimura
 
AI先生と外国語会話を練習しよう!
AI先生と外国語会話を練習しよう!AI先生と外国語会話を練習しよう!
AI先生と外国語会話を練習しよう!K Kimura
 
IBM Watson IoT を用いた遠隔ゲームコントローラーと Node-RED による簡易カスタマイズによる実現
IBM Watson IoT を用いた遠隔ゲームコントローラーと Node-RED による簡易カスタマイズによる実現IBM Watson IoT を用いた遠隔ゲームコントローラーと Node-RED による簡易カスタマイズによる実現
IBM Watson IoT を用いた遠隔ゲームコントローラーと Node-RED による簡易カスタマイズによる実現K Kimura
 
「テトリスを作ってスマホで振って遊ぼう!」ハンズオン資料
「テトリスを作ってスマホで振って遊ぼう!」ハンズオン資料「テトリスを作ってスマホで振って遊ぼう!」ハンズオン資料
「テトリスを作ってスマホで振って遊ぼう!」ハンズオン資料K Kimura
 
LINE お絵描きアプリハンズオン 20190519
LINE お絵描きアプリハンズオン 20190519LINE お絵描きアプリハンズオン 20190519
LINE お絵描きアプリハンズオン 20190519K Kimura
 
LINE お絵描きハンズオン 2019.04.26
LINE お絵描きハンズオン 2019.04.26LINE お絵描きハンズオン 2019.04.26
LINE お絵描きハンズオン 2019.04.26K Kimura
 
Hyperledger Hands-on 2019-03-30 @ Singularity HIVE
Hyperledger Hands-on 2019-03-30 @ Singularity HIVEHyperledger Hands-on 2019-03-30 @ Singularity HIVE
Hyperledger Hands-on 2019-03-30 @ Singularity HIVEK Kimura
 

Mehr von K Kimura (20)

ThinkPad を自慢できると聞いてやってきました
ThinkPad を自慢できると聞いてやってきましたThinkPad を自慢できると聞いてやってきました
ThinkPad を自慢できると聞いてやってきました
 
IBM FamilyDay 2022 - 帰ってきた LINE 手描きスタンプ
IBM FamilyDay 2022 - 帰ってきた LINE 手描きスタンプIBM FamilyDay 2022 - 帰ってきた LINE 手描きスタンプ
IBM FamilyDay 2022 - 帰ってきた LINE 手描きスタンプ
 
「プライベート版 Heroku」の "dokku" は Cloud Foundry 代替としてどこまで使えるか?
「プライベート版 Heroku」の "dokku" は Cloud Foundry 代替としてどこまで使えるか?「プライベート版 Heroku」の "dokku" は Cloud Foundry 代替としてどこまで使えるか?
「プライベート版 Heroku」の "dokku" は Cloud Foundry 代替としてどこまで使えるか?
 
LINE お絵描きスタンプが NFT 対応するかも
LINE お絵描きスタンプが NFT 対応するかもLINE お絵描きスタンプが NFT 対応するかも
LINE お絵描きスタンプが NFT 対応するかも
 
ICFO2021 コロナ時代のオンラインハンズオン体験
ICFO2021   コロナ時代のオンラインハンズオン体験ICFO2021   コロナ時代のオンラインハンズオン体験
ICFO2021 コロナ時代のオンラインハンズオン体験
 
IBM Family Day 2020 - LINE で手描きスタンプに挑戦!
IBM Family Day 2020 - LINE で手描きスタンプに挑戦!IBM Family Day 2020 - LINE で手描きスタンプに挑戦!
IBM Family Day 2020 - LINE で手描きスタンプに挑戦!
 
マンホールマップ10周年 20200725
マンホールマップ10周年 20200725マンホールマップ10周年 20200725
マンホールマップ10周年 20200725
 
MashupAward6 Manholemap(2010)
MashupAward6 Manholemap(2010)MashupAward6 Manholemap(2010)
MashupAward6 Manholemap(2010)
 
スライドパズルハンズオン資料
スライドパズルハンズオン資料スライドパズルハンズオン資料
スライドパズルハンズオン資料
 
ユーザー投稿型位置情報プロットシステム - マンホールマップ
ユーザー投稿型位置情報プロットシステム - マンホールマップユーザー投稿型位置情報プロットシステム - マンホールマップ
ユーザー投稿型位置情報プロットシステム - マンホールマップ
 
Scratch でゲームプログラミング
Scratch でゲームプログラミングScratch でゲームプログラミング
Scratch でゲームプログラミング
 
空耳アワーマシーンを作ってみた
空耳アワーマシーンを作ってみた空耳アワーマシーンを作ってみた
空耳アワーマシーンを作ってみた
 
生まれ変わるマンホールマップ
生まれ変わるマンホールマップ生まれ変わるマンホールマップ
生まれ変わるマンホールマップ
 
地図データでレースゲームを作って遊ぼう!
地図データでレースゲームを作って遊ぼう!地図データでレースゲームを作って遊ぼう!
地図データでレースゲームを作って遊ぼう!
 
AI先生と外国語会話を練習しよう!
AI先生と外国語会話を練習しよう!AI先生と外国語会話を練習しよう!
AI先生と外国語会話を練習しよう!
 
IBM Watson IoT を用いた遠隔ゲームコントローラーと Node-RED による簡易カスタマイズによる実現
IBM Watson IoT を用いた遠隔ゲームコントローラーと Node-RED による簡易カスタマイズによる実現IBM Watson IoT を用いた遠隔ゲームコントローラーと Node-RED による簡易カスタマイズによる実現
IBM Watson IoT を用いた遠隔ゲームコントローラーと Node-RED による簡易カスタマイズによる実現
 
「テトリスを作ってスマホで振って遊ぼう!」ハンズオン資料
「テトリスを作ってスマホで振って遊ぼう!」ハンズオン資料「テトリスを作ってスマホで振って遊ぼう!」ハンズオン資料
「テトリスを作ってスマホで振って遊ぼう!」ハンズオン資料
 
LINE お絵描きアプリハンズオン 20190519
LINE お絵描きアプリハンズオン 20190519LINE お絵描きアプリハンズオン 20190519
LINE お絵描きアプリハンズオン 20190519
 
LINE お絵描きハンズオン 2019.04.26
LINE お絵描きハンズオン 2019.04.26LINE お絵描きハンズオン 2019.04.26
LINE お絵描きハンズオン 2019.04.26
 
Hyperledger Hands-on 2019-03-30 @ Singularity HIVE
Hyperledger Hands-on 2019-03-30 @ Singularity HIVEHyperledger Hands-on 2019-03-30 @ Singularity HIVE
Hyperledger Hands-on 2019-03-30 @ Singularity HIVE
 

Kürzlich hochgeladen

20240427 zaim academy counseling lesson .pdf
20240427 zaim academy counseling lesson .pdf20240427 zaim academy counseling lesson .pdf
20240427 zaim academy counseling lesson .pdfssuser80a51f
 
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料シンフォニティ 株式会社
 
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)KayaSuetake1
 
Service-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadershipService-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadershipYasuyoshi Minehisa
 
ストックマーク株式会社がお客様へご提供しているAnews概要資料のご共有.pdf
ストックマーク株式会社がお客様へご提供しているAnews概要資料のご共有.pdfストックマーク株式会社がお客様へご提供しているAnews概要資料のご共有.pdf
ストックマーク株式会社がお客様へご提供しているAnews概要資料のご共有.pdfmasakisaito12
 
株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店
株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店
株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店ssuserfb441f
 
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdfストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdfmasakisaito12
 
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチUP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチユニパー株式会社
 

Kürzlich hochgeladen (8)

20240427 zaim academy counseling lesson .pdf
20240427 zaim academy counseling lesson .pdf20240427 zaim academy counseling lesson .pdf
20240427 zaim academy counseling lesson .pdf
 
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
 
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
 
Service-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadershipService-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadership
 
ストックマーク株式会社がお客様へご提供しているAnews概要資料のご共有.pdf
ストックマーク株式会社がお客様へご提供しているAnews概要資料のご共有.pdfストックマーク株式会社がお客様へご提供しているAnews概要資料のご共有.pdf
ストックマーク株式会社がお客様へご提供しているAnews概要資料のご共有.pdf
 
株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店
株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店
株式会社MAVEL会社概要_アフィリエイト広告_運用型広告_LTVを予測しLOIを最適化する広告代理店
 
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdfストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
 
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチUP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
 

BMXUG つきじ#4

  • 1. BMXUG つきじ #4 IBM Cloudant 超活用法! 禁断の「アレ」に挑戦してみました。。
  • 3. 自己紹介 Twitter: @dotnsf Blog: http://dotnsf.blog.jp/ Email: dotnsf@jp.ibm.com 趣味: マンホール 木村 桂(きむら けい) プログラマー マンホールマップ: http://manholemap.juge.me/ ノーツ大好き!ノーツ大好き!ノーツ大好き!ノーツ大好き!
  • 6. IBM Cloudant • Apache CouchDB をベースに IBM が DBaaS 化して IBM Cloud から提供し ているデータベースサービス • Apache CouchDB の最新バージョンは 2.1.0 • IBM Cloudant は CouchDB 2.0.0 ベース • この後に紹介する Design Document 機能は Apache CouchDB が所有している機能 • JSON ドキュメントをスケーラブルに格納する高速データベース • 分散データベース • 検索、トランザクション処理は苦手 • 「とにかく大量のデータを保存する」用途向き(ログ、IoT、・・・) • Design Document という特殊なドキュメントで、設計要素を管理する • View / List / Show
  • 7. 例: prefs データベース 例えば関東地方は 8 <= code <= 14, 海なし県は code ∈ [ 9, 10, 11, 19, 20, 21, 25, 29 ]
  • 8. View Design Document • 「特定の条件を満たす JSON ドキュメントを『ビュー』という単位でまと めてマッピング定義」したもの • 上記条件を管理する特殊な JSON ドキュメント = Design Document • 1つの Design Document の中に最大3つの定義を記述できる • View • List(後述) • Show(後述)
  • 10. View Design Document の例(1) • 関東地方だけを抜き出す View Design Document (kanto_view.json) { "language": "javascript", "views": { "kanto": { "map": "function( doc ){ if( doc.code && 8 <= doc.code && doc.code <= 14 ){ emit( doc._id, { code: doc.code, pref: doc.pref, capital: doc.capital, lat: doc.lat, lng: doc.lng } ); } }" } } } 全てのドキュメントが doc としてこの関数の引数となって実行される emit されたデータはビューに含まれる doc.code が存在して、かつ8以上14以下だった場合に emit する
  • 11. View Design Document の例(2) • 海なし県だけを抜き出す View Design Document (nosea_view.json) { "language": "javascript", "views": { "nosea": { "map": "function( doc ){ if( doc.code && [ 9, 10, 11, 19, 20, 21, 25, 29 ].indexOf( doc.code ) > -1 ){ emit( doc._id, { code: doc.code, pref: doc.pref, capital: doc.capital, lat: doc.lat, lng: doc.lng } ); } }" } } }
  • 12. View Design Document の適用 $ curl -u 'username:password' -H 'Content-Type: application/json' -XPUT 'https://username.cloudant.com/prefs/_design/nosea' -d @nosea_view.json
  • 13. List Design Document • View Design Document がビューのマッピング条件を記述したもので あったのに対して、List Design Document はビューの見栄えを定義す るもの
  • 14. List Design Document の例 • 海なし県ビューの見栄えを定義する List Design Document { "_rev": "xxxxx…..xxxxx", "language": "javascript", "views": { .. }, "lists": { "nosea": "function( head, row ){ start( { 'headers': { 'content-type': 'text/html' } } ); send( '<ul>' ); var row; while( row = getRow() ){ var url = '../../_show/pref'; send( '<li><a href=¥"' + url + row.id + '¥"' + row.value.prefecture + '(' + row.value.capital + ')</a></li>' ); } send( '</ul>' ); }" } } <ul> <li><a href="xx">[県名]([都市名])</a></li> : </ul> ビュー表示用の HTML テンプレート
  • 15. List Design Document の適用 $ curl -u 'username:password' -H 'Content-Type: application/json' -XPUT 'https://username.cloudant.com/prefs/_design/nosea' -d @nosea_view.json https://username.cloudant.com/prefs/_design/nosea/_list/nosea/nosea
  • 16. Show Design Document • List Design Document はビューの見栄えを定義するものであったの に対し、Show Design Document はビューから選択した1ドキュメント の見栄えを定義するもの
  • 17. Show Design Document の例 • 海なし県の見栄えを定義する Show Design Document { "_rev": "yyyyy…..yyyyy", "language": "javascript", "views": { .. }, "lists": { .. }, "shows": { "nosea": "(function( doc, req ){ if( doc ){ return '<h2>' + doc.prefecture + '</h2>' + '<h3>' + doc.capital + '</h3><hr/>' + '緯度: ' + doc.lat + '<br/>' + '経度: ' + doc.lng; }else{ return 'empty'; } })" } } <h2>[県名]</h2> <h3>[都市名]</h3> <hr/> 緯度: [緯度]<br/> 経度: [経度]
  • 18. Show Design Document の適用 $ curl -u 'username:password' -H 'Content-Type: application/json' -XPUT 'https://username.cloudant.com/prefs/_design/nosea' -d @nosea_show.json https://username.cloudant.com/prefs/_design/nosea/_list/nosea/nosea
  • 19. Design Document のまとめ • IBM Cloudant / Apache CouchDB が持つ特徴的な機能 • ビューの定義や見栄え、各文書の見栄えを定義する特殊なドキュメ ント • アプリケーションサーバーを使わなくても簡易テンプレートエンジンの ように使うことができる • データとロジック、見た目を分離する流行とは必ずしも一致しない
  • 20. おまけ • IBM Cloudant / Apache CouchDB はデータドキュメントも設計要素の ドキュメントも、いずれもドキュメントとしてデータベース内に格納され る ノーツも同じ 実は CouchDB の開発者は元 IBM/Lotus エンジニア https://www.linkedin.com/in/damienkatz/