Slide 1

Slide 1 text

PerlͷΫϥεϏϧμʔͷϞδϡʔϧͱ MongoDBͷ࿩ @mackee_w Ϛίϐοϐ 13೥5݄30೔໦༵೔

Slide 2

Slide 2 text

PerlͰΫϥεΛ࡞Δ Ϟδϡʔϧແ͠ͰΫϥεΛ࡞Δʹ͸ package Sheep { sub new { my $class = shift; my $self = { color => “white” }; return bless $self, $class; } } ৄ͘͠͸perldocͷperlbootͱ͔ 13೥5݄30೔໦༵೔

Slide 3

Slide 3 text

Ͱ΋ΊΜͲ͍͘͞΍Μʁ ΞτϦϏϡʔτʹΞΫηε͢Δͷʹ$self->{color} ͱ͔΍Μͳ͍ͱ͍͚ͳ͍͠ɺsubͰ͘Δ΋ͷ΋ΊΜ Ͳ͍͘͞΍Μʁ 13೥5݄30೔໦༵೔

Slide 4

Slide 4 text

ͦ͜ͰΫϥεϏϧμʔ ͦΕͬΆ͍ײ͡ͰΦϒδΣΫτΛ࡞ΕΔ Class::Accessor::Liteͩͱ͜Μͳײ͡ package Sheep { use Class::Accessor::Lite ( new => 1, rw => qw/color/, ); } 13೥5݄30೔໦༵೔

Slide 5

Slide 5 text

Class::Accessorܥ جຊతʹϓϩύςΟ/ΞΫηαΛউखʹΑ͠ͳʹ ΍ͬͯ͘ΕΔ͚ͩͰɺଞͷݴޠ͕౥ࡌ͍ͯ͠ΔΑ ͏ͳศརػೳ(abstractͱ͔traitͱ͔privateϓϩύ ςΟͱ͔)͸ͳ͍ 13೥5݄30೔໦༵೔

Slide 6

Slide 6 text

͍Ζ͍Ζ͋Δͧ Class::Accessor ݩ૆ Class::Accessor::Fast ͸΍……͔ͬͨ Class::Accesor::Lite Tengͱ͔Ͱ࢖ΘΕ͍ͯΔFastΑΓૣ͍ جຊతʹ͜Ε࢖͓͏ Class::Accessor::Tiny ϑΝΠϧαΠζ͍ܰͳͬͯࢥͬͨΒ19ߦͩͬͨ 13೥5݄30೔໦༵೔

Slide 7

Slide 7 text

΋ͬͱΦϒδΣΫτΦϒ δΣΫτͨ͠ʔʔʔʔ͍ ྫ͑͹mix-inͱ͔ɺϝλϓϩతͳΞϨʁ͋Δ΍Μʁ Ruby΍ͬͯΔਓ͕ϞςΔͷͬͯɺ΋͔͢͠Δͱϝ λϓϩΛΨϦΨϦ΍ͬͯΔ͔Β͔΋͠Εͳ͍ʂ PerlͰϝλϓϩ΍ΔͱϞςΔ͔΋ʂ 13೥5݄30೔໦༵೔

Slide 8

Slide 8 text

Moose Mouse Moo ϔϥδΧɹωζϛɹڇ ͍͍ͩͨ͜ͷลΓ࢖͏ͱΞΫηαͷܕΛࢦఆͰ͖ ͨΓɺmix-inΈ͍ͨͳ͜ͱ͕ग़དྷͨΓɺϝλϓϩ ग़དྷͨΓศརػೳ͕ͨ͘͞Μ͋Δ 13೥5݄30೔໦༵೔

Slide 9

Slide 9 text

MouseͰ͕Μ͹Δ package Sheep { use Mouse; has color => ( is => ‘rw’, isa => ‘Str’, default => sub { ‘white’ }, ); no Mouse; } 13೥5݄30೔໦༵೔

Slide 10

Slide 10 text

Moose ݩ૆ϞμϯPerlͷOOPϞδϡʔϧ Ͱ΋Ϋιॏ͍ CatalystͳͲͷग़͕ࣗݹΊͷϞδϡʔϧͰґଘͯ͠ ͍Δ͜ͱ͕͋Δ 13೥5݄30೔໦༵೔

Slide 11

Slide 11 text

Mouse ΄΅MooseͷΦϒδΣΫτγεςϜΛແ஡ۤ஡ૣ ͨ͘͠Ϡπ ҆৺ͱ৴པͱࠇຐज़ͷgfx΢ΣΞ blessΑΓ΋଎͍Β͍͠ɻҙຯ͕Θ͔Βͳ͍ ࠃ಺Ͱ͸͜ΕΛ࢖͍·͠ΐ͏ 13೥5݄30೔໦༵೔

Slide 12

Slide 12 text

Any::Moose ΦϫίϯͳͷͰ࢖Θͳ͍Α͏ʹ͠·͠ΐ͏ ͳ͓ɺ0.2ܥ·ͰͷArk͕ґଘ͍ͯ͠·͕͢0.3ܥ͔ ΒMouseʹ੾ΓସΘΓ·ͨ͠ ิ଍͢ΔͱɺMooseͱMouseͷͲ͔͍͍ͬͪ΄͏ Λ͏·͍͜ͱ࢖ͬͯ͘ΕΔϥούʔͰ͢ 13೥5݄30೔໦༵೔

Slide 13

Slide 13 text

Moo ւ֎Ͱྲྀߦ͍ͬͯΔΒ͍͠ ͍ΒΜͱ͜Ζ͸লུՄͯ͋͠Δఔ౓ಡΊΔײ͡Ͱ ͔ͭ଎͍ײ͡ʹ͍ͯ͠ΔΒ͍͠ ؾΛൈ͘ͱMooseʹม਎͢Δ(metaͱ͔) CPANʹ্͛ͨͯ͘ւ֎Ͱ΋࢖ΘΕ͍ͨͳΒ͜Ε 13೥5݄30೔໦༵೔

Slide 14

Slide 14 text

݁࿦ bless͸ΊΜͲ͍͘͞ͷͰ΍Ίͱ͜͏ ΞΫηα͔͠ཁΒͳ͍ͳΒClass::Accessor::LiteͰ ͍͍Μ͡Όͳ͍͔ͳ ͕ͬͭΓOOP͍ͨ͠ͳΒMouseͰ ւ֎΢έΛૂ͏ͱ͔Mooseͷ΍ͭॻ͖׵͑Δͱ͖ ͸MooͰ 13೥5݄30೔໦༵೔

Slide 15

Slide 15 text

ւ֎΢έΛૂ͏ͱ͔Mooseͷ΍ͭॻ͖׵͑Δͱ͖ ͸MooͰ 13೥5݄30೔໦༵೔

Slide 16

Slide 16 text

MongoDB.pm meets Mouse 13೥5݄30೔໦༵೔

Slide 17

Slide 17 text

MongoDBͱ͸ 13೥5݄30೔໦༵೔

Slide 18

Slide 18 text

ಛ௃ εΩʔϚϨε جຊతʹ͸ΩʔͱυΩϡϝϯτͱ͍͏ؔ܎͚ͩΕͲɺυΩϡ ϝϯτ಺ͷ஋Ͱݕࡧग़དྷͨΓ͢Δ ΠϯσοΫε΋షΕΔ JSONͬΆ͍ײ͡ͷܗࣜͰอଘ͞ΕΔ(BSON) JavaScriptͷ࣮ߦΤϯδϯੵΜͰΔͷͰؔ਺ͱ͔JSͰॻ͚Δ 13೥5݄30೔໦༵೔

Slide 19

Slide 19 text

͜Μͳײ͡ db.collection.save({ user_id: 1 }) db.collection.find({ user_id: 1 }) db.collection.find({ user_id: { $gte: 0 }) 13೥5݄30೔໦༵೔

Slide 20

Slide 20 text

ϩάͬΆ͍͜ͱͰ͖Δ capped collectionͱݴͬͯ͋ΔҰఆ༰ྔ·ͰஷΊ ͜ΜͰɺ͋;ΕͨΒݹ͍ͷ͔Βফ͍͍ͯͬͯ͘͠ ͏collection͕࡞ΕΔ 13೥5݄30೔໦༵೔

Slide 21

Slide 21 text

MongoDB.pm is Moose 13೥5݄30೔໦༵೔