Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
クラスビルダの話とMongoDB.pm
Search
mackee
May 17, 2013
Programming
85
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
クラスビルダの話とMongoDB.pm
mackee
May 17, 2013
More Decks by mackee
See All by mackee
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
320
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
1.1k
Agentに至る道 〜なぜLLMは自動でコードを書けるようになったのか〜
mackee
6
6k
今!ソフトウェアエンジニアがハードウェアに手を出すには
mackee
14
7.2k
ワンバイナリWebサービスのススメ
mackee
10
8.9k
tanukistack ライブコーディング / tanukistack live-coding
mackee
0
730
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
1.2k
perl for shell, awk and sed programmers
mackee
3
2.9k
今更GoのWebフレームワークを作ろうとしているワケ / Why am I trying to create a Go web framework now?
mackee
1
1.1k
Other Decks in Programming
See All in Programming
20260623_Loop Engineeringで自分の分身の問い合わせBotを作る
ryugen04
0
230
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
110
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
330
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
380
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
170
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
2.7k
1B+ /day規模のログを管理する技術
broadleaf
0
140
5分で問診!Composer セキュリティ健康診断
codmoninc
0
380
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.6k
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
360k
共通化で考えるべきは、実装より公開する型だった
codeegg
0
250
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
270
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
1k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
220
Balancing Empowerment & Direction
lara
6
1.2k
The SEO Collaboration Effect
kristinabergwall1
1
510
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
It's Worth the Effort
3n
188
29k
Scaling GitHub
holman
464
140k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
400
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
260
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
350
Optimising Largest Contentful Paint
csswizardry
37
3.8k
Transcript
PerlͷΫϥεϏϧμʔͷϞδϡʔϧͱ MongoDBͷ @mackee_w Ϛίϐοϐ 135݄30༵
PerlͰΫϥεΛ࡞Δ Ϟδϡʔϧແ͠ͰΫϥεΛ࡞Δʹ package Sheep { sub new { my $class
= shift; my $self = { color => “white” }; return bless $self, $class; } } ৄ͘͠perldocͷperlbootͱ͔ 135݄30༵
ͰΊΜͲ͍͘͞Μʁ ΞτϦϏϡʔτʹΞΫηε͢Δͷʹ$self->{color} ͱ͔Μͳ͍ͱ͍͚ͳ͍͠ɺsubͰ͘ΔͷΊΜ Ͳ͍͘͞Μʁ 135݄30༵
ͦ͜ͰΫϥεϏϧμʔ ͦΕͬΆ͍ײ͡ͰΦϒδΣΫτΛ࡞ΕΔ Class::Accessor::Liteͩͱ͜Μͳײ͡ package Sheep { use Class::Accessor::Lite ( new
=> 1, rw => qw/color/, ); } 135݄30༵
Class::Accessorܥ جຊతʹϓϩύςΟ/ΞΫηαΛউखʹΑ͠ͳʹ ͬͯ͘ΕΔ͚ͩͰɺଞͷݴޠ͕ࡌ͍ͯ͠ΔΑ ͏ͳศརػೳ(abstractͱ͔traitͱ͔privateϓϩύ ςΟͱ͔)ͳ͍ 135݄30༵
͍Ζ͍Ζ͋Δͧ Class::Accessor ݩ Class::Accessor::Fast ……͔ͬͨ Class::Accesor::Lite Tengͱ͔ͰΘΕ͍ͯΔFastΑΓૣ͍ جຊతʹ͜Ε͓͏ Class::Accessor::Tiny ϑΝΠϧαΠζ͍ܰͳͬͯࢥͬͨΒ19ߦͩͬͨ
135݄30༵
ͬͱΦϒδΣΫτΦϒ δΣΫτͨ͠ʔʔʔʔ͍ ྫ͑mix-inͱ͔ɺϝλϓϩతͳΞϨʁ͋ΔΜʁ RubyͬͯΔਓ͕ϞςΔͷͬͯɺ͔͢͠Δͱϝ λϓϩΛΨϦΨϦͬͯΔ͔Β͔͠Εͳ͍ʂ PerlͰϝλϓϩΔͱϞςΔ͔ʂ 135݄30༵
Moose Mouse Moo ϔϥδΧɹωζϛɹڇ ͍͍ͩͨ͜ͷลΓ͏ͱΞΫηαͷܕΛࢦఆͰ͖ ͨΓɺmix-inΈ͍ͨͳ͜ͱ͕ग़དྷͨΓɺϝλϓϩ ग़དྷͨΓศརػೳ͕ͨ͘͞Μ͋Δ 135݄30༵
MouseͰ͕ΜΔ package Sheep { use Mouse; has color => (
is => ‘rw’, isa => ‘Str’, default => sub { ‘white’ }, ); no Mouse; } 135݄30༵
Moose ݩϞμϯPerlͷOOPϞδϡʔϧ ͰΫιॏ͍ CatalystͳͲͷग़͕ࣗݹΊͷϞδϡʔϧͰґଘͯ͠ ͍Δ͜ͱ͕͋Δ 135݄30༵
Mouse ΄΅MooseͷΦϒδΣΫτγεςϜΛແۤૣ ͨ͘͠Ϡπ ҆৺ͱ৴པͱࠇຐज़ͷgfxΣΞ blessΑΓ͍Β͍͠ɻҙຯ͕Θ͔Βͳ͍ ࠃͰ͜ΕΛ͍·͠ΐ͏ 135݄30༵
Any::Moose ΦϫίϯͳͷͰΘͳ͍Α͏ʹ͠·͠ΐ͏ ͳ͓ɺ0.2ܥ·ͰͷArk͕ґଘ͍ͯ͠·͕͢0.3ܥ͔ ΒMouseʹΓସΘΓ·ͨ͠ ิ͢ΔͱɺMooseͱMouseͷͲ͔͍͍ͬͪ΄͏ Λ͏·͍͜ͱͬͯ͘ΕΔϥούʔͰ͢ 135݄30༵
Moo ւ֎Ͱྲྀߦ͍ͬͯΔΒ͍͠ ͍ΒΜͱ͜ΖলུՄͯ͋͠ΔఔಡΊΔײ͡Ͱ ͔͍ͭײ͡ʹ͍ͯ͠ΔΒ͍͠ ؾΛൈ͘ͱMooseʹม͢Δ(metaͱ͔) CPANʹ্͛ͨͯ͘ւ֎ͰΘΕ͍ͨͳΒ͜Ε 135݄30༵
݁ blessΊΜͲ͍͘͞ͷͰΊͱ͜͏ ΞΫηα͔͠ཁΒͳ͍ͳΒClass::Accessor::LiteͰ ͍͍Μ͡Όͳ͍͔ͳ ͕ͬͭΓOOP͍ͨ͠ͳΒMouseͰ ւ֎έΛૂ͏ͱ͔Mooseͷͭॻ͖͑Δͱ͖ MooͰ 135݄30༵
ւ֎έΛૂ͏ͱ͔Mooseͷͭॻ͖͑Δͱ͖ MooͰ 135݄30༵
MongoDB.pm meets Mouse 135݄30༵
MongoDBͱ 135݄30༵
ಛ εΩʔϚϨε جຊతʹΩʔͱυΩϡϝϯτͱ͍͏͚ؔͩΕͲɺυΩϡ ϝϯτͷͰݕࡧग़དྷͨΓ͢Δ ΠϯσοΫεషΕΔ JSONͬΆ͍ײ͡ͷܗࣜͰอଘ͞ΕΔ(BSON) JavaScriptͷ࣮ߦΤϯδϯੵΜͰΔͷͰؔͱ͔JSͰॻ͚Δ 135݄30༵
͜Μͳײ͡ db.collection.save({ user_id: 1 }) db.collection.find({ user_id: 1 }) db.collection.find({
user_id: { $gte: 0 }) 135݄30༵
ϩάͬΆ͍͜ͱͰ͖Δ capped collectionͱݴͬͯ͋ΔҰఆ༰ྔ·ͰஷΊ ͜ΜͰɺ͋;ΕͨΒݹ͍ͷ͔Βফ͍͍ͯͬͯ͘͠ ͏collection͕࡞ΕΔ 135݄30༵
MongoDB.pm is Moose 135݄30༵