SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
Takuro Sasaki
 
エコなWebサーバー
エコなWebサーバーエコなWebサーバー
エコなWebサーバー
emasaka
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
emasaka
 
プロパティディスクリプタとその拡張ライブラリ
プロパティディスクリプタとその拡張ライブラリプロパティディスクリプタとその拡張ライブラリ
プロパティディスクリプタとその拡張ライブラリ
Yusuke Muraoka
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画
Kazufumi Ohkawa
 

Tendances (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
 

En vedette

Jak zarobić bez procentu
Jak zarobić bez procentuJak zarobić bez procentu
Jak zarobić bez procentu
sknsz
 
Social demographics cards
Social demographics cardsSocial demographics cards
Social demographics cards
rfrearson
 
Pr1 ri
Pr1 riPr1 ri
Pr1 ri
Anam
 
Narko
NarkoNarko
Narko
sknsz
 
Pr1 ri
Pr1 riPr1 ri
Pr1 ri
Anam
 
Web
WebWeb
Web
Anam
 
16.05
16.0516.05
16.05
sknsz
 
We beste
We besteWe beste
We beste
Anam
 
Profil wiraswasta Bapak Drs. Sajino
Profil wiraswasta Bapak Drs. SajinoProfil wiraswasta Bapak Drs. Sajino
Profil wiraswasta Bapak Drs. Sajino
bangun93
 
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
gailperry
 

En vedette (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
 

Similaire à Chiba pm#1 - ArangoDB for Perl

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
Yoshiki Kurihara
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
2bo 2bo
 
Osc2012.dbに行ってきました
Osc2012.dbに行ってきましたOsc2012.dbに行ってきました
Osc2012.dbに行ってきました
Masaru Kobashigawa
 
Backlogでの Perlのつかいかた
Backlogでの PerlのつかいかたBacklogでの Perlのつかいかた
Backlogでの Perlのつかいかた
Ryuzo Yamamoto
 

Similaire à 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
 

Dernier

Dernier (11)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

Chiba pm#1 - ArangoDB for Perl

Notes de l'éditeur

  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