YAPC::Tokyo 2019 ランチスポンサーセッション 株式会社ミクシィ 登壇資料
20ࡀͷ͕ܦݧͨ͠PerlΤϯδχΞͷಓגࣜձࣾϛΫγΟഡݪ ྋհ@raryosu:"1$5PLZPϥϯνηογϣϯ
View Slide
͜ͷϓϨθϯʹ͍ͭͯ1FSMΛॻ͍ͨ͜ͱ͕ͳ͍৽ଔΤϯδχΞ ͕1FSMΛॻ͘8FCΤϯδχΞͱͯ͠ಇ͍ͯԿΛײͨ͡ͷ͔ΛޠΔ
ࣗݾհ͗Β Γΐ͏͚͢ഡݪ ྋհ‣ ΒΓΐ͢!SBSZPTV‣ ੜ·Εࡀ‣ ݄৽ଔೖࣾʢߴઐଔʣ‣ NJOJNPࣄۀ෦ΤϯδχΞʢ։ൃάϧʔϓ༡ܸνʔϜʣ‣ αʔόαΠυ։ൃɾ$9ϏδωεαΠυͷαϙʔτ
NJOJNPαϩϯελοϑ༧αʔϏεඒ༰ࢣɾωΠϦετFUDʹ༧
NJOJNPαϩϯελοϑ༧αʔϏεඒ༰ࢣɾωΠϦετFUDʹ༧ສμϯϩʔυ͋Γ͕ͱ͏ʂʂʂʂʂ
NJOJNPʙͷए͍ঁੑʹେਓؾͷαʔϏε
ʙͷए͍ঁੑʹେਓؾͷαʔϏεNJOJNP
ଐ
ଐͷํ๏৽ଔଐͷΩʔϫʔυଟ֯తͳࢹ͔ΒͰ͖ΔڥΞαΠϯ
ଐͷํ๏‣ ٕज़ྖҬࣥߦһ ҎԼ$50ɾਓࣄͱͷPO‣ ֤෦ॺͱ໘ஊ‣ $50ʹΑΔਪન෦ॺ‣ ຊਓر෦ॺ‣ ෦ॺ͔Βͷࢦ໊‣ ֤໘ஊʹ͍ͭͯ໘ஊઌͱຊਓ͔ΒϑΟʔυόοΫ‣ $50ͱਓࣄʹΑͬͯଐΛܾఆ
NJOJNPͷଐ໘ஊͲ͏͍͏ʹڵຯ͋ΔʁϚωʔδϟ
NJOJNPͷଐ໘ஊͲ͏͍͏ʹڵຯ͋ΔʁΣϒϑϩϯτͰ͢ʂͰɼ෯͘Γ͍ͨͰ͢ɽΤϯδχΞϦϯάͦΕҎ֎ʂϚωʔδϟ
NJOJNPͷଐ໘ஊͲ͏͍͏ʹڵຯ͋ΔʁΣϒϑϩϯτͰ͢ʂͰɼ෯͘Γ͍ͨͰ͢ɽΤϯδχΞϦϯάͦΕҎ֎ʂ͏ͪͰগ͠1FSMॻ͚͘ͲେৎʁϚωʔδϟϚωʔδϟ
NJOJNPͷଐ໘ஊͲ͏͍͏ʹڵຯ͋ΔʁΣϒϑϩϯτͰ͢ʂͰɼ෯͘Γ͍ͨͰ͢ɽΤϯδχΞϦϯάͦΕҎ֎ʂ͏ͪͰগ͠1FSMॻ͚͘Ͳେৎʁ1FSMॻ͍ͨ͜ͱͳ͍͠Α͘ΒΜ͚Ͳ͕ΜΓ·͢ʂʔ·Μ͍ͨͰ͢ʂϚωʔδϟϚωʔδϟ
NJOJNPͷଐ໘ஊ1FSMॻ͍ͨ͜ͱͳ͍͠Α͘ΒΜ͚Ͳ͕ΜΓ·͢ʂʔ·Μ͍ͨͰ͢ʂ
NJOJNPͷଐ໘ஊ‣ 1FSMͩΖ͏ͱͳΜͩΖ͏ͱษڧʹͳΓͦ͏ʜ‣ αʔϏε෦ॺྑͦ͞͏‣ Γ͍ͨ͜ͱΛߟ͑Δͱ࠷Ϛον͢Δ‣ 1FSMΛʮݏʯͬͯݴ͑Δཧ༝ͳ͍ͳʜ1FSMॻ͍ͨ͜ͱͳ͍͠Α͘ΒΜ͚Ͳ͕ΜΓ·͢ʂʔ·Μ͍ͨͰ͢ʂ
ແࣄʹʜNJOJNPͷଐ͕ܾఆ
̼JOJNPͷϓϩμΫτApplication ServerMojoliciousεϚϗΞϓϦαϩϯ͚༧ཧγεςϜWeb൛αʔϏεAPI (JSON RPC)
NJOJNPͷϓϩμΫταϩϯ͚༧ཧγεςϜεϚϗΞϓϦiOS: Swift, Obj-CAndroid: Kotlin, JavaAPI, WebΞϓϦέʔγϣϯPerl (Mojolicious)Perl (Mojolicious), Reactܝࡌऀ͚ΦϯυϝσΟΞWordPress
ΒΓΐ͢ͷकඋൣғʙϓϩμΫτʙαϩϯ͚༧ཧγεςϜεϚϗΞϓϦiOS: Swift, Obj-CAndroid: Kotlin, JavaAPI, WebΞϓϦέʔγϣϯPerl (Mojolicious)Perl (Mojolicious), Reactܝࡌऀ͚ΦϯυϝσΟΞWordPress
ΒΓΐ͢ͷकඋൣғʙϓϩμΫτʙαϩϯ͚༧ཧγεςϜεϚϗΞϓϦiOS: Swift, Obj-CAndroid: Kotlin, JavaAPI, WebΞϓϦέʔγϣϯPerl (Mojolicious)Perl (Mojolicious), Reactܝࡌऀ͚ΦϯυϝσΟΞWordPressWeb൛αʔϏεΛ୲͢ΔϝΠϯΤϯδχΞͱͯ͠ଐ
ΒΓΐ͢ͷकඋൣғʙͦͷଞʙΧελϚʔαϙʔτ $4༻ཧπʔϧ$4͚ΤϯδχΞϦϯάࢧԉʢՄࢹԽʣ#4͚ΤϯδχΞϦϯάࢧԉʢՄࢹԽʣʜFUD
͏πʔϧɾݴޠͳͲ‣ 1FSM .PKPMJDJPVT‣ )5.-$44 4$44‣ .Z42-‣ 3FEBTIʢσʔλՄࢹԽʣ‣ "84 &$ 4 3PVUF 3%4 4&4FUDFUD
ଐ࣌ͰͷΒΓΐ͢ͷΤϯδχΞϦϯάͷϨϕϧ‣ 1FSMॻ͍ͨ͜ͱͳ͍‣ 1FSMΛॻ͖ͨ͘ͳ͍ͱ͍͏ؾ࣋ͪͳ͍‣ ߴઐଔ‣ όΠτͰ3BJMTͰ࡞ΒΕͨγεςϜͷอकΛͯͨ͠‣ .7$ͬͯΔɽΞʔΩςΫνϟʹ͍ͭͯޠΕͳ͍
1FSMͷڭҭͱۀ
ຖேઌഐʹ4MBDLͰ
ڭ͑ͯΒͬͨ͜ͱͷҰ෦‣ 1FSMʹ͍ͭͯ‣ ίϯςΩετ‣ جຊతͳจ๏‣ ଞύοέʔδͷϝιουݺͼग़͠ͷํ‣ ಛघͳߏจʢܕάϩϒͳͲʣ
ڭ͑ͯΒͬͨ͜ͱͷҰ෦‣ .PKPMJDJPVTNJOJNPͷίʔυʹ͍ͭͯ‣ σΟϨΫτϦߏ‣ %#ͷߏ‣ NJOJNPNJYJͰ͍ͬͯΔศརϞδϡʔϧ‣ 3PVUJOH)FMQFSͷஔ͖ͱ͔
࣮Ͱ͍᪴ͨͱ͖ઌഐͨͪʮਖ਼ղʯڭ͑ͯ͘Εͳ͍ඞཁͱͳΔʮώϯτʯΛ͘ΕΔ
ͭ·ΓʜҰਓͰࣗͰ͖ΔڥΛ࡞ͬͯ͘Εͨ
ࡀͰ1FSMΛ͔͍ͯͲ͏ࢥͬͨʁ
ࡀͰ1FSMΛॻ͍ͯͲ͏ࢥͬͨʁ1FSMΛॻ͘ͷָ͍͠ʂͦͯ͠ɼֶͼ͕ଟ͍ʂ
1FSMָ͍͠5IFSF`T.PSF5IBO0OF8BZ5P%P*Uॻ͖ํʹਓ͕ؒग़ΔʮͲ͏ॻ͜͏ʁʯʮͲ͏ॻ͘ͷ͕εϚʔτʁʯΛߟ͑ΔઌഐͨͪͱʮͲ͏͠Α͏ʯΛٞ͢Δ
ֶͼ͕ଟ͍.PKPMJDJPVTൺֱతʮബ͍ʯ8"'ࣗͰॻ͘ɾಡΉɾֶͿ͜ͱ͕ଟ͍ʂΣϒαʔϏεͷαʔόαΠυΛֶͿͷʹஸ͍͍ʁগͳ͘ͱࣗʮϥοΩʔʯͩͱࢥ͍ͬͯΔ
ͱ͍͑Α͘Θ͔Βͳ͍͜ͱଟ͔ͬͨ‣ σϦϑΝϨϯεΛΕͯਏ͍‣ $#array = 20‣ ॳݟͩͱΑ͘Θ͔Βͳ͍‣ (sort { $a <=> $b } @hoge)[0]‣ Α͘Θ͔Βͳ͍‣ List::Util::reduce{ $a‣ ্ͷͭ͜ΕͰऔΕΔ͠ແବ͕গͳ͍…
ײͨ͡‣ ΑΓྑ͍࣮ํ๏Λߟ͑ΒΕΔΑ͏ʹͳͬͨ‣ ಡΈ͘͢ҙਤ͕ΘΓ͍͢ίʔυΛॻ͚ΔΑ͏ʹ‣ େنαʔϏε͕Ͳ͏ಈ͍͍ͯΔ͔ཧղͨ͠‣ ΞʔΩςΫνϟͷڵຯ͕༙͍ͨ‣ ଞͷݴޠΛֶͿҙཉʹͭͳ͕ͬͨ
͜Ε͔Β
࠷ۙ(PΛֶΜͰ͍·͢
8IZ(P‣ 1FSMͱझ͕ҧָͬͯͦ͠͏͔ͩΒ‣ ࠷ۙྲྀߦ͍ͬͯΔ͔Β‣ NJOJNPͷαʔόαΠυΛ(PͰॻ͖͍ͯ͠Δ͔Β
·ͱΊ
·ͱΊ‣ 1FSM͕ʮݏʯͱ͍͏ઌೖ؍͕ͳ͚Εࡀॻ͘‣ ࣗͰ͖Δڥ͑͋͞ΕֶͿ͜ͱ͕ଟ͍ݴޠ‣ 8FCαʔϏεͷجૅΛ͔ͬ͠ΓֶͿ͜ͱ͕Ͱ͖͍ͯΔ‣ 1FSMΛ͔͚ͯϥοΩʔ‣ ଞͷݴޠΛֶͿҙཉʹͭͳ͕ͬͨ
c ʯʀ̻8FBSFIJSJOHIUUQTNJYJDPKQSFDSVJU