SlideShare uma empresa Scribd logo
1 de 29
2009/06/23
                   webjourney.org
               Yohei Sasaki / yssk22

CouchDB or Erlangを使って
やってみたいアプリケーション
自己紹介

 Yohei Sasaki
   http://www.yssk22.info/
   仕事の時は ysasaki2
     developerWorks にCouchDBの記事を書いてます。
       5回連載 3ヶ月で終わる予定が、1年で4回 orz


   趣味の時は yssk22 (← 今日はこっち)
     http://d.hatena.ne.jp/yssk22
WebJourney
http://journal.mycom.co.jp/series/webtool/026/index.html
WebJourney

 iGoogle を Rails で作ってみたもの
 jQuery + Rails + CouchDB 0.9.0 で実装
   昔はMySQL(その話は後ほど)
さらに、今なら OpenSocial
OpenSocial + CouchDB
= Open Web Application
 OpenSocial
   自由にアプリケーションを持ち運べる


          CouchDB
            自由にデータを持ち運べる



          データとアプリケーションに
           明確な境界など要らない?
2009/06/23
                   webjourney.org
               Yohei Sasaki / yssk22

CouchDB で始める
ActiveRecord からの脱却
これからの話

 "CouchDBに興味があって、最近始めた"~
 "CouchDBのアプリを作ってみようかなっ
 て思い始めた"人くらいを主なターゲット
 にしています。

 Rails 使い がCouchDBのアプリを作ってみ
  ようかなー、と思い始めたときの話。
 Relational DB から CouchDB へのreplace
長年の悩み::
GadgetをRDBに保存するのは難しい
 Gadget のデータ、スキーマ
  はユーザーが追加するまで
  決められない。
 Gadget は必要に応じて追加
  開発するから最初からス
  キーマを定義できない
そうはいっても
ActiveRecord + MySQL
ActiveRecord による実装
                            pages
pages                        - 各ページのデータ
                            gadget_instances
                             - ページに貼り付けられた
                               gadgetのデータ
                            gadgets
          gadget_instance
                             - サイトにインストールされた
                 s
                               gadget のマスターデータ



gadgets                     意外と簡単そう???
ActiveRecord による実装
                           class GadgetInstance 
pages
                             < ActiveRecord::Base
                             validates_length_of :title, ...
                             validates ...


                             serialize :parameters
         gadget_instance
                           end




gadget
                 結局KeyValueにシリアライズ!
GadgetInstance#parameters

 Gadget 開発者がそれぞれのGadgetアプリ
  ケーションに応じて利用可能なフィールド
  RSS のフィードURL
  Blog Parts のようなJavaScript スクリプト
  ...


 gi.parameters[:feed_url] = "http://...."
 とか
 gi.parameters[:script][:src] = "http://..."
 とか
抱える問題 = クエリ

 GadgetデータをRDBに入れるのは簡単
  ADO.NET の場合:: XML列にMapping (SQL Server)
  Rails の場合:: YAMLで放り込む

  Object → XML/YAML は比較的楽


 しかし、クエリで取り出せない罠
  XQuery 勉強する暇あったらORMなんか使いませんよ!
  玉石混交のユーザーデータをフィルタできないなん
  て!!
    例えば、Feed Gadgetなら設定されたURLのランキングを
     とりたい、とか。
そこでCouchDB
きっかけ

 ロゴが気に入った。
 勉強する時間が欲しかった。
  特にErlang
 HTTP
 JSON
 MapReduce
  これなら、JavaScriptでクエリでき
   る!!
Active Record => CouchDB
移植開始
 中のロジックを変えるのが面倒だったの
 で、ActiveRecord とインターフェースをそ
 ろえた CouchDB Mapper 作る

 3ヶ月ぐらいで、いい加減実装完了
  CouchResource
   http://github.com/yssk22/couch_resource/tree/mast
    er
結果
  class GadgetInstance < CouchResource::Base
       string :title, :validates => [:length_of => ..]

        object :parameters
  end

 GadgetInstance.find(...) でCouchDBのビューが呼ばれるので、
  クエリもサポート!
 Gadget 開発者が自由にデータを使える(クエリも含めて!
 ActiveRecord のノリで開発できる!
     ほとんど記法は同じ。
       migration 部分はクラスに直接かく
          他のCouchDB Mapper でも property :title, :as => :string とか。
CouchResource

 ○
  バリデーション: validates_xxx サポート
  コールバック: before|after_xxx サポート
  JSONデータ型 : string :title などのようにマッ
   ピング時の型変換ルールをかける
  クエリ : find メソッド使える
 △
  関連 : habtm, has_many, belongs_to などはいら
   ないので作らなかった
  CouchRest のようにストリーミングしない。
Good by
Relational
Database
とりあえず結論
 serializeとか STI (Single Table Inheritance / 同じテーブルを複数
  クラスで使い回す)とか使いたくなってくるところには
  CouchDBみたいなもの
     入れる(INSERT/UPDATE)だけなら、そこまで無理なくていい

 (item_name, value) なんていうテーブルがあったら、
  CouchDBを検討してみるといい!
     Form の項目をDBに保存しているときとか。

 がんばればActiveRecordっぽく、CouchDBを使える!
     Merb::DataMapper のCouchDB Adapterももあるらしい。

 CouchDB は、(alpha stageっていってるけど)わりと素直に動
  きます。
     compaction さえ忘れなければ。
Do you realy
   need
app server?
わき上がる疑問:: Rails要るの?


JavaScriptで
バリデーションとか


     Rails が Hashを          Ruby でバリデーションとか
     CouchResourceに



                      CouchResourceを
                      Hash経由でJSONに
結果

 jQuery から 直接 CouchDB たたけばいい
 CouchDB にビジネスロジック書いておけば
 OK
  奥の手External Process
    CouchDB と任意のコマンドラインプロセスをPipeで
     つなぐことができる
       script/runner でもOK


 さようならRails, こんにちはCouchDB
  CouchAppもヨロシク。
Good by
 Rails
Ruby off Rails

 Rails で RDB 使わないのは敷居が高すぎる
  問い合わせ;
    MySQLで動かないようなんだけどSQLiteじゃな
     いとだめ?どのDB使えばいいの?
  回答:
    いや、RDBじゃだめw CouchDBインストールして。
  結果:
    連絡が途絶えた
CouchResource

 ×
  終了のお知らせ。
  ActiveRecord 思想にこだわった時点で終了のお
   知らせだったか。
  trac にかいといたドキュメントがlost
  CouchRest がいい。




 がんばって作ってみたけど、だめでした。
CouchDBで Web Appを作る。

 まさに CouchApp の世界
  セキュリティは[あとで]。
   とりあえず、リラックスすれば、世の中みんな
    いい人しかいないと思えてくる!!!
@これから

Mais conteúdo relacionado

Mais procurados

MySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearchMySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearchKentaro Yoshida
 
SolrとElasticsearchの比較
SolrとElasticsearchの比較SolrとElasticsearchの比較
SolrとElasticsearchの比較genta kaneyama
 
20140930 anything as_code
20140930 anything as_code20140930 anything as_code
20140930 anything as_codeSugawara Genki
 
まだDOM操作で消耗してるの?
まだDOM操作で消耗してるの?まだDOM操作で消耗してるの?
まだDOM操作で消耗してるの?IRI MO
 
閉じタグを超えた先に僕が見た景色とは
閉じタグを超えた先に僕が見た景色とは閉じタグを超えた先に僕が見た景色とは
閉じタグを超えた先に僕が見た景色とはMuyuu Fujita
 
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"Kentaro Yoshida
 
小規模案件で作られた秘伝のタレ
小規模案件で作られた秘伝のタレ小規模案件で作られた秘伝のタレ
小規模案件で作られた秘伝のタレMuyuu Fujita
 
RESTful APIとしてのRailsとクライアントとしてのJavaScript
RESTful APIとしてのRailsとクライアントとしてのJavaScriptRESTful APIとしてのRailsとクライアントとしてのJavaScript
RESTful APIとしてのRailsとクライアントとしてのJavaScriptNaoto Koshikawa
 
Elasticsearch at CrowdWorks
Elasticsearch at CrowdWorksElasticsearch at CrowdWorks
Elasticsearch at CrowdWorks佑介 九岡
 
第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51civicpg
 
Elasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバElasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバShinsuke Sugaya
 
CouchDB+OpenSocial - OSC 2009/Fall Tokyo
CouchDB+OpenSocial - OSC 2009/Fall TokyoCouchDB+OpenSocial - OSC 2009/Fall Tokyo
CouchDB+OpenSocial - OSC 2009/Fall TokyoYohei Sasaki
 
はじめての datadog
はじめての datadogはじめての datadog
はじめての datadogNaoya Nakazawa
 
第52回なんてかんたんなJavaEE
第52回なんてかんたんなJavaEE第52回なんてかんたんなJavaEE
第52回なんてかんたんなJavaEEcivicpg
 
Web制作勉強会 #2
Web制作勉強会 #2Web制作勉強会 #2
Web制作勉強会 #2Moto Yan
 
Re-frame and A-Frame
Re-frame and A-FrameRe-frame and A-Frame
Re-frame and A-FrameKazuhiro Hara
 
MySQLのリアルタイムモニタリングツールを作った話
MySQLのリアルタイムモニタリングツールを作った話MySQLのリアルタイムモニタリングツールを作った話
MySQLのリアルタイムモニタリングツールを作った話Kentaro Kitagawa
 
Anemoneによるクローラー入門
Anemoneによるクローラー入門Anemoneによるクローラー入門
Anemoneによるクローラー入門Tasuku Nakano
 

Mais procurados (20)

MySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearchMySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearch
 
LocalStack
LocalStackLocalStack
LocalStack
 
Yesod勉強会
Yesod勉強会Yesod勉強会
Yesod勉強会
 
SolrとElasticsearchの比較
SolrとElasticsearchの比較SolrとElasticsearchの比較
SolrとElasticsearchの比較
 
20140930 anything as_code
20140930 anything as_code20140930 anything as_code
20140930 anything as_code
 
まだDOM操作で消耗してるの?
まだDOM操作で消耗してるの?まだDOM操作で消耗してるの?
まだDOM操作で消耗してるの?
 
閉じタグを超えた先に僕が見た景色とは
閉じタグを超えた先に僕が見た景色とは閉じタグを超えた先に僕が見た景色とは
閉じタグを超えた先に僕が見た景色とは
 
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
 
小規模案件で作られた秘伝のタレ
小規模案件で作られた秘伝のタレ小規模案件で作られた秘伝のタレ
小規模案件で作られた秘伝のタレ
 
RESTful APIとしてのRailsとクライアントとしてのJavaScript
RESTful APIとしてのRailsとクライアントとしてのJavaScriptRESTful APIとしてのRailsとクライアントとしてのJavaScript
RESTful APIとしてのRailsとクライアントとしてのJavaScript
 
Elasticsearch at CrowdWorks
Elasticsearch at CrowdWorksElasticsearch at CrowdWorks
Elasticsearch at CrowdWorks
 
第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51
 
Elasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバElasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバ
 
CouchDB+OpenSocial - OSC 2009/Fall Tokyo
CouchDB+OpenSocial - OSC 2009/Fall TokyoCouchDB+OpenSocial - OSC 2009/Fall Tokyo
CouchDB+OpenSocial - OSC 2009/Fall Tokyo
 
はじめての datadog
はじめての datadogはじめての datadog
はじめての datadog
 
第52回なんてかんたんなJavaEE
第52回なんてかんたんなJavaEE第52回なんてかんたんなJavaEE
第52回なんてかんたんなJavaEE
 
Web制作勉強会 #2
Web制作勉強会 #2Web制作勉強会 #2
Web制作勉強会 #2
 
Re-frame and A-Frame
Re-frame and A-FrameRe-frame and A-Frame
Re-frame and A-Frame
 
MySQLのリアルタイムモニタリングツールを作った話
MySQLのリアルタイムモニタリングツールを作った話MySQLのリアルタイムモニタリングツールを作った話
MySQLのリアルタイムモニタリングツールを作った話
 
Anemoneによるクローラー入門
Anemoneによるクローラー入門Anemoneによるクローラー入門
Anemoneによるクローラー入門
 

Destaque

Perkusiozko Musika Instrumentuak
Perkusiozko Musika InstrumentuakPerkusiozko Musika Instrumentuak
Perkusiozko Musika Instrumentuakguest8432f7
 
Folksonomie
FolksonomieFolksonomie
FolksonomieDaniele
 
ROLLER SHUTTER SYSTEMS
ROLLER SHUTTER SYSTEMS ROLLER SHUTTER SYSTEMS
ROLLER SHUTTER SYSTEMS DoorHan
 
Dancing With Wolves
Dancing With WolvesDancing With Wolves
Dancing With WolvesJavier
 
The Angels Song
The Angels SongThe Angels Song
The Angels SongJavier
 
Gprs基本原理
Gprs基本原理Gprs基本原理
Gprs基本原理fossnow
 
Kleiwegkwartier Presentation
Kleiwegkwartier PresentationKleiwegkwartier Presentation
Kleiwegkwartier PresentationInterlocuteurM
 
Kakapo slideshow by Dharia & Michenna
Kakapo slideshow by Dharia & MichennaKakapo slideshow by Dharia & Michenna
Kakapo slideshow by Dharia & MichennaTakahe One
 
Kakapo slideshow
Kakapo slideshowKakapo slideshow
Kakapo slideshowTakahe One
 
Camiñando a cegas
Camiñando a cegasCamiñando a cegas
Camiñando a cegasjr.lainho
 
The Exodus Song
The Exodus SongThe Exodus Song
The Exodus SongJavier
 
Like A Rolling Stone
Like A Rolling StoneLike A Rolling Stone
Like A Rolling StoneJavier
 
Txorro Morro Piko Tailo Ke
Txorro Morro Piko Tailo KeTxorro Morro Piko Tailo Ke
Txorro Morro Piko Tailo KeJavier
 
Kakapo slideshow by Izak and Ezra
Kakapo slideshow by Izak and EzraKakapo slideshow by Izak and Ezra
Kakapo slideshow by Izak and EzraTakahe One
 

Destaque (20)

Molino De Güeria
Molino De GüeriaMolino De Güeria
Molino De Güeria
 
Perkusiozko Musika Instrumentuak
Perkusiozko Musika InstrumentuakPerkusiozko Musika Instrumentuak
Perkusiozko Musika Instrumentuak
 
Canvi Climatic
Canvi ClimaticCanvi Climatic
Canvi Climatic
 
Presentation1
Presentation1Presentation1
Presentation1
 
MUJERES
MUJERESMUJERES
MUJERES
 
X3D - VRLM Task
X3D - VRLM TaskX3D - VRLM Task
X3D - VRLM Task
 
Folksonomie
FolksonomieFolksonomie
Folksonomie
 
ROLLER SHUTTER SYSTEMS
ROLLER SHUTTER SYSTEMS ROLLER SHUTTER SYSTEMS
ROLLER SHUTTER SYSTEMS
 
Dancing With Wolves
Dancing With WolvesDancing With Wolves
Dancing With Wolves
 
Ideas
IdeasIdeas
Ideas
 
The Angels Song
The Angels SongThe Angels Song
The Angels Song
 
Gprs基本原理
Gprs基本原理Gprs基本原理
Gprs基本原理
 
Kleiwegkwartier Presentation
Kleiwegkwartier PresentationKleiwegkwartier Presentation
Kleiwegkwartier Presentation
 
Kakapo slideshow by Dharia & Michenna
Kakapo slideshow by Dharia & MichennaKakapo slideshow by Dharia & Michenna
Kakapo slideshow by Dharia & Michenna
 
Kakapo slideshow
Kakapo slideshowKakapo slideshow
Kakapo slideshow
 
Camiñando a cegas
Camiñando a cegasCamiñando a cegas
Camiñando a cegas
 
The Exodus Song
The Exodus SongThe Exodus Song
The Exodus Song
 
Like A Rolling Stone
Like A Rolling StoneLike A Rolling Stone
Like A Rolling Stone
 
Txorro Morro Piko Tailo Ke
Txorro Morro Piko Tailo KeTxorro Morro Piko Tailo Ke
Txorro Morro Piko Tailo Ke
 
Kakapo slideshow by Izak and Ezra
Kakapo slideshow by Izak and EzraKakapo slideshow by Izak and Ezra
Kakapo slideshow by Izak and Ezra
 

Semelhante a Couch Db勉強会0623 by yssk22

2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門miso- soup3
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionGoh Matsumoto
 
Rails3.1rc4を試してみた
Rails3.1rc4を試してみたRails3.1rc4を試してみた
Rails3.1rc4を試してみたTakahiro Hidaka
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireAkio Katayama
 
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係Hiraku Komuro
 
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)崇之 清水
 
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方Yuki Morishita
 
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうHTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうyoshikawa_t
 
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)Takuya Kawabe
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platformToru Yamaguchi
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発Nomura Yusuke
 
2018 04-14-cockroachdb-20-now-available
2018 04-14-cockroachdb-20-now-available2018 04-14-cockroachdb-20-now-available
2018 04-14-cockroachdb-20-now-availableNaoto Gohko
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼうyouku
 
エコなWebサーバー
エコなWebサーバーエコなWebサーバー
エコなWebサーバーemasaka
 
Couch DB in 15minutes
Couch DB in 15minutesCouch DB in 15minutes
Couch DB in 15minutesYohei Sasaki
 
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーションYoshifumi Kawai
 

Semelhante a Couch Db勉強会0623 by yssk22 (20)

2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
 
Mongodb
MongodbMongodb
Mongodb
 
Rails3.1rc4を試してみた
Rails3.1rc4を試してみたRails3.1rc4を試してみた
Rails3.1rc4を試してみた
 
G * magazine 0
G * magazine 0G * magazine 0
G * magazine 0
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
 
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
 
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
 
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうHTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろう
 
Bp study39 nodejs
Bp study39 nodejsBp study39 nodejs
Bp study39 nodejs
 
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発
 
2018 04-14-cockroachdb-20-now-available
2018 04-14-cockroachdb-20-now-available2018 04-14-cockroachdb-20-now-available
2018 04-14-cockroachdb-20-now-available
 
Grails 2.0.0.M1の話
Grails 2.0.0.M1の話 Grails 2.0.0.M1の話
Grails 2.0.0.M1の話
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 
エコなWebサーバー
エコなWebサーバーエコなWebサーバー
エコなWebサーバー
 
Couch DB in 15minutes
Couch DB in 15minutesCouch DB in 15minutes
Couch DB in 15minutes
 
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
 

Mais de Yohei Sasaki

20120317 CloudFoundry #pyfes
20120317 CloudFoundry #pyfes20120317 CloudFoundry #pyfes
20120317 CloudFoundry #pyfesYohei Sasaki
 
MongoDB on CloudFoundry
MongoDB on CloudFoundryMongoDB on CloudFoundry
MongoDB on CloudFoundryYohei Sasaki
 
MongoDB on CloudFoundry
MongoDB on CloudFoundryMongoDB on CloudFoundry
MongoDB on CloudFoundryYohei Sasaki
 
CouchDB JP & BigCouch
CouchDB JP & BigCouchCouchDB JP & BigCouch
CouchDB JP & BigCouchYohei Sasaki
 
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門Yohei Sasaki
 
RelaxCafe@CouchDB break.4
RelaxCafe@CouchDB break.4RelaxCafe@CouchDB break.4
RelaxCafe@CouchDB break.4Yohei Sasaki
 
CouchDB+OpenSocial - OSC 2009/Fall Tokyo (En)
CouchDB+OpenSocial - OSC 2009/Fall Tokyo (En)CouchDB+OpenSocial - OSC 2009/Fall Tokyo (En)
CouchDB+OpenSocial - OSC 2009/Fall Tokyo (En)Yohei Sasaki
 
前回のまとめ
前回のまとめ前回のまとめ
前回のまとめYohei Sasaki
 
Finding Your Data with Views
Finding Your Data with ViewsFinding Your Data with Views
Finding Your Data with ViewsYohei Sasaki
 
Couch Db.0.9.0.Pub
Couch Db.0.9.0.PubCouch Db.0.9.0.Pub
Couch Db.0.9.0.PubYohei Sasaki
 

Mais de Yohei Sasaki (15)

20120317 CloudFoundry #pyfes
20120317 CloudFoundry #pyfes20120317 CloudFoundry #pyfes
20120317 CloudFoundry #pyfes
 
CloudFoundry@home
CloudFoundry@homeCloudFoundry@home
CloudFoundry@home
 
MongoDB on CloudFoundry
MongoDB on CloudFoundryMongoDB on CloudFoundry
MongoDB on CloudFoundry
 
MongoDB on CloudFoundry
MongoDB on CloudFoundryMongoDB on CloudFoundry
MongoDB on CloudFoundry
 
membase
membasemembase
membase
 
CouchDB JP & BigCouch
CouchDB JP & BigCouchCouchDB JP & BigCouch
CouchDB JP & BigCouch
 
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
 
CouchDB
CouchDBCouchDB
CouchDB
 
RelaxCafe@CouchDB break.4
RelaxCafe@CouchDB break.4RelaxCafe@CouchDB break.4
RelaxCafe@CouchDB break.4
 
Media On Couch
Media On CouchMedia On Couch
Media On Couch
 
CouchDB+OpenSocial - OSC 2009/Fall Tokyo (En)
CouchDB+OpenSocial - OSC 2009/Fall Tokyo (En)CouchDB+OpenSocial - OSC 2009/Fall Tokyo (En)
CouchDB+OpenSocial - OSC 2009/Fall Tokyo (En)
 
前回のまとめ
前回のまとめ前回のまとめ
前回のまとめ
 
Finding Your Data with Views
Finding Your Data with ViewsFinding Your Data with Views
Finding Your Data with Views
 
Why CouchDB
Why CouchDBWhy CouchDB
Why CouchDB
 
Couch Db.0.9.0.Pub
Couch Db.0.9.0.PubCouch Db.0.9.0.Pub
Couch Db.0.9.0.Pub
 

Último

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Último (9)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

Couch Db勉強会0623 by yssk22

  • 1. 2009/06/23 webjourney.org Yohei Sasaki / yssk22 CouchDB or Erlangを使って やってみたいアプリケーション
  • 2. 自己紹介  Yohei Sasaki  http://www.yssk22.info/  仕事の時は ysasaki2  developerWorks にCouchDBの記事を書いてます。  5回連載 3ヶ月で終わる予定が、1年で4回 orz  趣味の時は yssk22 (← 今日はこっち)  http://d.hatena.ne.jp/yssk22
  • 4. WebJourney  iGoogle を Rails で作ってみたもの  jQuery + Rails + CouchDB 0.9.0 で実装  昔はMySQL(その話は後ほど)
  • 6. OpenSocial + CouchDB = Open Web Application  OpenSocial  自由にアプリケーションを持ち運べる  CouchDB  自由にデータを持ち運べる データとアプリケーションに 明確な境界など要らない?
  • 7. 2009/06/23 webjourney.org Yohei Sasaki / yssk22 CouchDB で始める ActiveRecord からの脱却
  • 8. これからの話 "CouchDBに興味があって、最近始めた"~ "CouchDBのアプリを作ってみようかなっ て思い始めた"人くらいを主なターゲット にしています。  Rails 使い がCouchDBのアプリを作ってみ ようかなー、と思い始めたときの話。  Relational DB から CouchDB へのreplace
  • 9. 長年の悩み:: GadgetをRDBに保存するのは難しい  Gadget のデータ、スキーマ はユーザーが追加するまで 決められない。  Gadget は必要に応じて追加 開発するから最初からス キーマを定義できない
  • 11. ActiveRecord による実装 pages pages - 各ページのデータ gadget_instances - ページに貼り付けられた gadgetのデータ gadgets gadget_instance - サイトにインストールされた s gadget のマスターデータ gadgets 意外と簡単そう???
  • 12. ActiveRecord による実装 class GadgetInstance pages < ActiveRecord::Base validates_length_of :title, ... validates ... serialize :parameters gadget_instance end gadget 結局KeyValueにシリアライズ!
  • 13. GadgetInstance#parameters  Gadget 開発者がそれぞれのGadgetアプリ ケーションに応じて利用可能なフィールド  RSS のフィードURL  Blog Parts のようなJavaScript スクリプト  ... gi.parameters[:feed_url] = "http://...." とか gi.parameters[:script][:src] = "http://..." とか
  • 14. 抱える問題 = クエリ  GadgetデータをRDBに入れるのは簡単  ADO.NET の場合:: XML列にMapping (SQL Server)  Rails の場合:: YAMLで放り込む  Object → XML/YAML は比較的楽  しかし、クエリで取り出せない罠  XQuery 勉強する暇あったらORMなんか使いませんよ!  玉石混交のユーザーデータをフィルタできないなん て!!  例えば、Feed Gadgetなら設定されたURLのランキングを とりたい、とか。
  • 16. きっかけ  ロゴが気に入った。  勉強する時間が欲しかった。  特にErlang  HTTP  JSON  MapReduce  これなら、JavaScriptでクエリでき る!!
  • 17. Active Record => CouchDB 移植開始  中のロジックを変えるのが面倒だったの で、ActiveRecord とインターフェースをそ ろえた CouchDB Mapper 作る  3ヶ月ぐらいで、いい加減実装完了  CouchResource  http://github.com/yssk22/couch_resource/tree/mast er
  • 18. 結果 class GadgetInstance < CouchResource::Base string :title, :validates => [:length_of => ..] object :parameters end  GadgetInstance.find(...) でCouchDBのビューが呼ばれるので、 クエリもサポート!  Gadget 開発者が自由にデータを使える(クエリも含めて!  ActiveRecord のノリで開発できる!  ほとんど記法は同じ。  migration 部分はクラスに直接かく  他のCouchDB Mapper でも property :title, :as => :string とか。
  • 19. CouchResource  ○  バリデーション: validates_xxx サポート  コールバック: before|after_xxx サポート  JSONデータ型 : string :title などのようにマッ ピング時の型変換ルールをかける  クエリ : find メソッド使える  △  関連 : habtm, has_many, belongs_to などはいら ないので作らなかった  CouchRest のようにストリーミングしない。
  • 21. とりあえず結論  serializeとか STI (Single Table Inheritance / 同じテーブルを複数 クラスで使い回す)とか使いたくなってくるところには CouchDBみたいなもの  入れる(INSERT/UPDATE)だけなら、そこまで無理なくていい  (item_name, value) なんていうテーブルがあったら、 CouchDBを検討してみるといい!  Form の項目をDBに保存しているときとか。  がんばればActiveRecordっぽく、CouchDBを使える!  Merb::DataMapper のCouchDB Adapterももあるらしい。  CouchDB は、(alpha stageっていってるけど)わりと素直に動 きます。  compaction さえ忘れなければ。
  • 22. Do you realy need app server?
  • 23. わき上がる疑問:: Rails要るの? JavaScriptで バリデーションとか Rails が Hashを Ruby でバリデーションとか CouchResourceに CouchResourceを Hash経由でJSONに
  • 24. 結果  jQuery から 直接 CouchDB たたけばいい  CouchDB にビジネスロジック書いておけば OK  奥の手External Process  CouchDB と任意のコマンドラインプロセスをPipeで つなぐことができる  script/runner でもOK  さようならRails, こんにちはCouchDB  CouchAppもヨロシク。
  • 26. Ruby off Rails  Rails で RDB 使わないのは敷居が高すぎる  問い合わせ;  MySQLで動かないようなんだけどSQLiteじゃな いとだめ?どのDB使えばいいの?  回答:  いや、RDBじゃだめw CouchDBインストールして。  結果:  連絡が途絶えた
  • 27. CouchResource  ×  終了のお知らせ。  ActiveRecord 思想にこだわった時点で終了のお 知らせだったか。  trac にかいといたドキュメントがlost  CouchRest がいい。  がんばって作ってみたけど、だめでした。
  • 28. CouchDBで Web Appを作る。  まさに CouchApp の世界  セキュリティは[あとで]。  とりあえず、リラックスすれば、世の中みんな いい人しかいないと思えてくる!!!