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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
mackee
May 17, 2013
Programming
0
83
クラスビルダの話とMongoDB.pm
mackee
May 17, 2013
Tweet
Share
More Decks by mackee
See All by mackee
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
430
Agentに至る道 〜なぜLLMは自動でコードを書けるようになったのか〜
mackee
5
4.7k
今!ソフトウェアエンジニアがハードウェアに手を出すには
mackee
14
6.3k
ワンバイナリWebサービスのススメ
mackee
10
8.4k
tanukistack ライブコーディング / tanukistack live-coding
mackee
0
330
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
1.1k
perl for shell, awk and sed programmers
mackee
3
2.7k
今更GoのWebフレームワークを作ろうとしているワケ / Why am I trying to create a Go web framework now?
mackee
1
1k
database/sqlでNullを扱う歴史とsql.Null[T]の登場 / sql.Null[T] history
mackee
0
940
Other Decks in Programming
See All in Programming
CSC307 Lecture 03
javiergs
PRO
1
490
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
170
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
140
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
140
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
180
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
21
7.4k
今から始めるClaude Code超入門
448jp
8
9k
dchart: charts from deck markup
ajstarks
3
1k
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2.1k
AI時代の認知負荷との向き合い方
optfit
0
160
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
310
Featured
See All Featured
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
650
The Limits of Empathy - UXLibs8
cassininazir
1
220
Claude Code のすすめ
schroneko
67
210k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.2k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
67
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
160
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
120
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
200
Why Our Code Smells
bkeepers
PRO
340
58k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
260
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
130
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༵