SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Chiba.pm #1
   2012/10/20
\ちば!/
About Me
• Hideaki Ohno
 • Twitter : @hide_o_55
 • Hatena: id:hide_o_55
 • github: hideo55
 • PAUSE: HIDEAKIO
ArangoDB
client for Perl
What s ArangoDB?
• マルチモデルDB
 • ドキュメントDB
 • グラフDB
 • KVS
• Geo indexによる位置情報検索
ArangoDB.pm

• Collection/Document/Edge/Indexの
 操作

• Simple Query
• ArangoDB Query Language
使い方とかは
ドキュメント嫁
  なので
ArangoDB.pm
 を作った際の
  工夫とか
ところで、
次のコードを
 見てくれ
こいつをどう思う?
my $users = $db-
>collection(‘users’);

my $cursor = $users->by_exampe({
  active => 1
});

while( my $doc = $cursor->next ){
  # do something
}
すごく・・・長いです・・・

my $users = $db-
>collection(‘users’);
どうするか?
エイリアス?
No!
• 省略しても最短1文字まで
• 下手に省略すると逆に読みづらい
AUTOLOAD
No!
• メソッドが存在する場合は
 AUTOLOADが呼ばれないため、
 コレクション名に制限ができる

• オーバーヘッドが大きい
overload!
こうなった

my $users = $db-
   >(‘users’);
なぜoverloadか?

• 長いメソッド名を完全に省略できる
• ハッシュアクセスっぽく見せかけられる
なぜoverloadか?

• 長いメソッド名を完全に省略できる
• ハッシュアクセスっぽく見せかけられる
• 単純に演算子オーバーロードが好き
他の言語ではどうしてるか

• Ruby
 • [] 演算子をオーバーロード
 • database[ my_collection ]
• Python
 • __getter__を利用
• PHP/Node.jsは・・・    (自主規制)
Module::Installから
 Module::Buildに
  移行してみた
感想

• ACTION_* で色々hookできて便利!
• M::InstallっぽいDSLが欲しければ
 M::B::Functionsを使えるので安心

• M::Installに比べて変なハマり方はしづ
 らい
参考
• モダンPerlの世界へようこそ:第23回 
  Module::Build:MakeMakerの後継者を目指
  して

 • http://gihyo.jp/dev/serial/01/modern-
    perl/0023

• Module::Build で let's `make love`
 • http://perl-users.jp/articles/advent-
PP
•   極力PurePerlでも動くように、XSが使えない場
    合はPP版をロードするモジュールを採用

•   HTTP::Parser::XS
    • H::P::XS::PP
•   Data::Util
    • Data::Util::PurePerl
•   PPでもOK、XSが使えれば更に高速に
使いやすさ重視
•   Ruby版だと

    •   db[ collection ].add_index( hash ,{   on => [ id ] })

•   Perl版

    •   $db->( collection )->ensure_hash_index([ id ]);

    •   インデックスの種別は定まったものなのでそれぞれ別メソッドに

    •   必須パラメータはオプションのハッシュに入れず独立した引数に
今後の予定

• ArangoDB 1.1 APIに対応
• オブジェクトを作らずにデータを返す
 RAWモード
FIN

Weitere ähnliche Inhalte

Was ist angesagt?

Capistrano紹介 at kawasaki.rb #002 #kwskrb
Capistrano紹介 at kawasaki.rb #002 #kwskrbCapistrano紹介 at kawasaki.rb #002 #kwskrb
Capistrano紹介 at kawasaki.rb #002 #kwskrbTsubasa Yumura
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerTakuro Sasaki
 
エコなWebサーバー
エコなWebサーバーエコなWebサーバー
エコなWebサーバーemasaka
 
Anemoneによるクローラー入門
Anemoneによるクローラー入門Anemoneによるクローラー入門
Anemoneによるクローラー入門Tasuku Nakano
 
カウチなやつら CouchDB in the room
カウチなやつら CouchDB in the roomカウチなやつら CouchDB in the room
カウチなやつら CouchDB in the roomMakoto Ohnami
 
コロナ禍の所蔵品検索システム
コロナ禍の所蔵品検索システムコロナ禍の所蔵品検索システム
コロナ禍の所蔵品検索システムNaosuke Okamoto
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発emasaka
 
プロパティディスクリプタとその拡張ライブラリ
プロパティディスクリプタとその拡張ライブラリプロパティディスクリプタとその拡張ライブラリ
プロパティディスクリプタとその拡張ライブラリYusuke Muraoka
 
redashのプラベートカタログ作成してつまづいたアレやコレや
redashのプラベートカタログ作成してつまづいたアレやコレやredashのプラベートカタログ作成してつまづいたアレやコレや
redashのプラベートカタログ作成してつまづいたアレやコレやYASUKAZU NAGATOMI
 
データベース実践入門読書会スペシャル #nseg
データベース実践入門読書会スペシャル #nsegデータベース実践入門読書会スペシャル #nseg
データベース実践入門読書会スペシャル #nsegko ty
 
ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しよう
ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しようヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しよう
ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しようYasutaka Hamada
 
[2019 01-19] AzureDevOps LT
[2019 01-19] AzureDevOps LT[2019 01-19] AzureDevOps LT
[2019 01-19] AzureDevOps LTIgarashi Toru
 
Dive into .git 日本語版
Dive into .git 日本語版Dive into .git 日本語版
Dive into .git 日本語版nishio
 
RESTとRailsスタイル
RESTとRailsスタイルRESTとRailsスタイル
RESTとRailsスタイルToru Kawamura
 
はじめての datadog
はじめての datadogはじめての datadog
はじめての datadogNaoya Nakazawa
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画Kazufumi Ohkawa
 
2011 10-satalabo-naaon
2011 10-satalabo-naaon2011 10-satalabo-naaon
2011 10-satalabo-naaonNaoki Okino
 
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)Masakazu Matsushita
 

Was ist angesagt? (20)

Capistrano紹介 at kawasaki.rb #002 #kwskrb
Capistrano紹介 at kawasaki.rb #002 #kwskrbCapistrano紹介 at kawasaki.rb #002 #kwskrb
Capistrano紹介 at kawasaki.rb #002 #kwskrb
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
 
エコなWebサーバー
エコなWebサーバーエコなWebサーバー
エコなWebサーバー
 
Anemoneによるクローラー入門
Anemoneによるクローラー入門Anemoneによるクローラー入門
Anemoneによるクローラー入門
 
カウチなやつら CouchDB in the room
カウチなやつら CouchDB in the roomカウチなやつら CouchDB in the room
カウチなやつら CouchDB in the room
 
コロナ禍の所蔵品検索システム
コロナ禍の所蔵品検索システムコロナ禍の所蔵品検索システム
コロナ禍の所蔵品検索システム
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
 
プロパティディスクリプタとその拡張ライブラリ
プロパティディスクリプタとその拡張ライブラリプロパティディスクリプタとその拡張ライブラリ
プロパティディスクリプタとその拡張ライブラリ
 
redashのプラベートカタログ作成してつまづいたアレやコレや
redashのプラベートカタログ作成してつまづいたアレやコレやredashのプラベートカタログ作成してつまづいたアレやコレや
redashのプラベートカタログ作成してつまづいたアレやコレや
 
データベース実践入門読書会スペシャル #nseg
データベース実践入門読書会スペシャル #nsegデータベース実践入門読書会スペシャル #nseg
データベース実践入門読書会スペシャル #nseg
 
ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しよう
ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しようヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しよう
ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しよう
 
[2019 01-19] AzureDevOps LT
[2019 01-19] AzureDevOps LT[2019 01-19] AzureDevOps LT
[2019 01-19] AzureDevOps LT
 
Dive into .git 日本語版
Dive into .git 日本語版Dive into .git 日本語版
Dive into .git 日本語版
 
RESTとRailsスタイル
RESTとRailsスタイルRESTとRailsスタイル
RESTとRailsスタイル
 
はじめての datadog
はじめての datadogはじめての datadog
はじめての datadog
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画
 
2011 10-satalabo-naaon
2011 10-satalabo-naaon2011 10-satalabo-naaon
2011 10-satalabo-naaon
 
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
 
read parse-css
read parse-cssread parse-css
read parse-css
 
初めてのMongo db
初めてのMongo db初めてのMongo db
初めてのMongo db
 

Andere mochten auch

Jak zarobić bez procentu
Jak zarobić bez procentuJak zarobić bez procentu
Jak zarobić bez procentusknsz
 
Social demographics cards
Social demographics cardsSocial demographics cards
Social demographics cardsrfrearson
 
Pr1 ri
Pr1 riPr1 ri
Pr1 riAnam
 
Narko
NarkoNarko
Narkosknsz
 
Srinivas, Nirmalaya - Testing a massively multi-player online game
Srinivas, Nirmalaya - Testing a massively multi-player online gameSrinivas, Nirmalaya - Testing a massively multi-player online game
Srinivas, Nirmalaya - Testing a massively multi-player online gamevodQA
 
Pr1 ri
Pr1 riPr1 ri
Pr1 riAnam
 
9. model pembelajaran saintifik mp bhs indonesia
9. model pembelajaran saintifik mp bhs indonesia9. model pembelajaran saintifik mp bhs indonesia
9. model pembelajaran saintifik mp bhs indonesiaadulcharli
 
Web
WebWeb
WebAnam
 
16.05
16.0516.05
16.05sknsz
 
We beste
We besteWe beste
We besteAnam
 
Profil wiraswasta Bapak Drs. Sajino
Profil wiraswasta Bapak Drs. SajinoProfil wiraswasta Bapak Drs. Sajino
Profil wiraswasta Bapak Drs. Sajinobangun93
 
AFP Broward County FLa fire up your board long version
AFP Broward County FLa fire up your board long versionAFP Broward County FLa fire up your board long version
AFP Broward County FLa fire up your board long versiongailperry
 
Afp toronto create an engaged passionate board
Afp toronto create an engaged passionate boardAfp toronto create an engaged passionate board
Afp toronto create an engaged passionate boardgailperry
 

Andere mochten auch (20)

Jak zarobić bez procentu
Jak zarobić bez procentuJak zarobić bez procentu
Jak zarobić bez procentu
 
Social demographics cards
Social demographics cardsSocial demographics cards
Social demographics cards
 
Pr1 ri
Pr1 riPr1 ri
Pr1 ri
 
Workshop pdf
Workshop pdfWorkshop pdf
Workshop pdf
 
Narko
NarkoNarko
Narko
 
Srinivas, Nirmalaya - Testing a massively multi-player online game
Srinivas, Nirmalaya - Testing a massively multi-player online gameSrinivas, Nirmalaya - Testing a massively multi-player online game
Srinivas, Nirmalaya - Testing a massively multi-player online game
 
Pr1 ri
Pr1 riPr1 ri
Pr1 ri
 
9. model pembelajaran saintifik mp bhs indonesia
9. model pembelajaran saintifik mp bhs indonesia9. model pembelajaran saintifik mp bhs indonesia
9. model pembelajaran saintifik mp bhs indonesia
 
Todas las actas
Todas las actasTodas las actas
Todas las actas
 
Web
WebWeb
Web
 
16.05
16.0516.05
16.05
 
GetSocialBrevard 071411
GetSocialBrevard 071411GetSocialBrevard 071411
GetSocialBrevard 071411
 
Presentation3
Presentation3Presentation3
Presentation3
 
We beste
We besteWe beste
We beste
 
Profil wiraswasta Bapak Drs. Sajino
Profil wiraswasta Bapak Drs. SajinoProfil wiraswasta Bapak Drs. Sajino
Profil wiraswasta Bapak Drs. Sajino
 
Executive brochure
Executive brochureExecutive brochure
Executive brochure
 
AFP Broward County FLa fire up your board long version
AFP Broward County FLa fire up your board long versionAFP Broward County FLa fire up your board long version
AFP Broward County FLa fire up your board long version
 
DOCTYPE HTML PUBLIC
DOCTYPE HTML PUBLICDOCTYPE HTML PUBLIC
DOCTYPE HTML PUBLIC
 
Afp toronto create an engaged passionate board
Afp toronto create an engaged passionate boardAfp toronto create an engaged passionate board
Afp toronto create an engaged passionate board
 
Personal branding pearson asa
Personal branding pearson asaPersonal branding pearson asa
Personal branding pearson asa
 

Ähnlich wie Chiba pm#1 - ArangoDB for Perl

AndroidでActiveRecordライクにDBを使う
AndroidでActiveRecordライクにDBを使うAndroidでActiveRecordライクにDBを使う
AndroidでActiveRecordライクにDBを使うFujimura Munehiko
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!Masaki Muranaka
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpMasahito Zembutsu
 
Sledge recently in Yokohama.pm Aug, 2008
Sledge recently in Yokohama.pm Aug, 2008Sledge recently in Yokohama.pm Aug, 2008
Sledge recently in Yokohama.pm Aug, 2008Yoshiki Kurihara
 
20140930 anything as_code
20140930 anything as_code20140930 anything as_code
20140930 anything as_codeSugawara Genki
 
ゾウ使いへの第一歩
ゾウ使いへの第一歩ゾウ使いへの第一歩
ゾウ使いへの第一歩Fumito Ito
 
A 2-3ゾウ使いへの第一歩 hadoop on azure 編
A 2-3ゾウ使いへの第一歩 hadoop on azure 編A 2-3ゾウ使いへの第一歩 hadoop on azure 編
A 2-3ゾウ使いへの第一歩 hadoop on azure 編GoAzure
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む2bo 2bo
 
AWS SDK for Smalltalk
AWS SDK for SmalltalkAWS SDK for Smalltalk
AWS SDK for SmalltalkSho Yoshida
 
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来Kazuto Kusama
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードKazuhiro Hara
 
僕の Serverless web application
僕の Serverless web application僕の Serverless web application
僕の Serverless web application祐樹 夏目
 
Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Yusuke Wada
 
Osc2012.dbに行ってきました
Osc2012.dbに行ってきましたOsc2012.dbに行ってきました
Osc2012.dbに行ってきましたMasaru Kobashigawa
 
Backlogでの Perlのつかいかた
Backlogでの PerlのつかいかたBacklogでの Perlのつかいかた
Backlogでの PerlのつかいかたRyuzo Yamamoto
 
Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!Sotaro Omura
 

Ähnlich wie Chiba pm#1 - ArangoDB for Perl (20)

AndroidでActiveRecordライクにDBを使う
AndroidでActiveRecordライクにDBを使うAndroidでActiveRecordライクにDBを使う
AndroidでActiveRecordライクにDBを使う
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorp
 
Sledge recently in Yokohama.pm Aug, 2008
Sledge recently in Yokohama.pm Aug, 2008Sledge recently in Yokohama.pm Aug, 2008
Sledge recently in Yokohama.pm Aug, 2008
 
20140930 anything as_code
20140930 anything as_code20140930 anything as_code
20140930 anything as_code
 
ゾウ使いへの第一歩
ゾウ使いへの第一歩ゾウ使いへの第一歩
ゾウ使いへの第一歩
 
A 2-3ゾウ使いへの第一歩 hadoop on azure 編
A 2-3ゾウ使いへの第一歩 hadoop on azure 編A 2-3ゾウ使いへの第一歩 hadoop on azure 編
A 2-3ゾウ使いへの第一歩 hadoop on azure 編
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
AWS SDK for Smalltalk
AWS SDK for SmalltalkAWS SDK for Smalltalk
AWS SDK for Smalltalk
 
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
 
Yesod(at FPM2012)
Yesod(at FPM2012)Yesod(at FPM2012)
Yesod(at FPM2012)
 
僕の Serverless web application
僕の Serverless web application僕の Serverless web application
僕の Serverless web application
 
Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門
 
Osc2012.dbに行ってきました
Osc2012.dbに行ってきましたOsc2012.dbに行ってきました
Osc2012.dbに行ってきました
 
Backlogでの Perlのつかいかた
Backlogでの PerlのつかいかたBacklogでの Perlのつかいかた
Backlogでの Perlのつかいかた
 
Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!
 
Tokyo r38
Tokyo r38Tokyo r38
Tokyo r38
 
130207 kyotorb
130207 kyotorb130207 kyotorb
130207 kyotorb
 
Start-padrino
Start-padrinoStart-padrino
Start-padrino
 

Chiba pm#1 - ArangoDB for Perl

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n