Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20歳の僕が経験した Perlエンジニアへの道

20歳の僕が経験した Perlエンジニアへの道

YAPC::Tokyo 2019 ランチスポンサーセッション 株式会社ミクシィ 登壇資料

Hagihara Ryosuke

January 26, 2019
Tweet

More Decks by Hagihara Ryosuke

Other Decks in Technology

Transcript

  1. 20ࡀͷ๻͕ܦݧͨ͠
    PerlΤϯδχΞ΁ͷಓ
    גࣜձࣾϛΫγΟ
    ഡݪ ྋհ
    @raryosu
    :"1$5PLZPϥϯνηογϣϯ

    View Slide

  2. ͜ͷϓϨθϯʹ͍ͭͯ
    1FSMΛॻ͍ͨ͜ͱ͕ͳ͍৽ଔΤϯδχΞ
    ͕
    1FSMΛॻ͘8FCΤϯδχΞͱͯ͠ಇ͍ͯ
    ԿΛײͨ͡ͷ͔ΛޠΔ

    View Slide

  3. ࣗݾ঺հ
    ͸͗͸Β Γΐ͏͚͢
    ഡݪ ྋհ
    ‣ ΒΓΐ͢!SBSZPTV
    ‣ ೥ੜ·Εࡀ
    ‣ ೥݄৽ଔೖࣾʢߴઐଔʣ
    ‣ NJOJNPࣄۀ෦ΤϯδχΞʢ։ൃάϧʔϓ༡ܸνʔϜʣ
    ‣ αʔόαΠυ։ൃɾ$9ϏδωεαΠυ౳ͷαϙʔτ

    View Slide

  4. NJOJNP
    αϩϯελοϑ௚઀༧໿αʔϏε
    ඒ༰ࢣɾωΠϦετFUDʹ௚઀༧໿

    View Slide

  5. NJOJNP
    αϩϯελοϑ௚઀༧໿αʔϏε
    ඒ༰ࢣɾωΠϦετFUDʹ௚઀༧໿
    ສμ΢ϯϩʔυ
    ͋Γ͕ͱ͏ʂʂʂʂʂ

    View Slide

  6. NJOJNP
    ୅ʙ୅ͷए͍ঁੑʹ
    େਓؾͷαʔϏε

    View Slide

  7. ୅ʙ୅ͷए͍ঁੑʹ
    େਓؾͷαʔϏε
    NJOJNP

    View Slide

  8. ͜ͷϓϨθϯʹ͍ͭͯ
    1FSMΛॻ͍ͨ͜ͱ͕ͳ͍৽ଔΤϯδχΞ
    ͕
    1FSMΛॻ͘8FCΤϯδχΞͱͯ͠ಇ͍ͯ
    ԿΛײͨ͡ͷ͔ΛޠΔ

    View Slide

  9. ഑ଐ

    View Slide

  10. ഑ଐͷํ๏
    ৽ଔ഑ଐͷΩʔϫʔυ
    ଟ֯తͳࢹ఺͔Β੒௕Ͱ͖Δ؀ڥ΁ΞαΠϯ

    View Slide

  11. ഑ଐͷํ๏
    ‣ ٕज़ྖҬࣥߦ໾һ ҎԼ$50
    ɾਓࣄͱͷPO
    ‣ ֤෦ॺͱ໘ஊ
    ‣ $50ʹΑΔਪન෦ॺ
    ‣ ຊਓر๬෦ॺ
    ‣ ෦ॺ͔Βͷࢦ໊
    ‣ ֤໘ஊʹ͍ͭͯ໘ஊઌͱຊਓ͔ΒϑΟʔυόοΫ
    ‣ $50ͱਓࣄʹΑͬͯ഑ଐΛܾఆ

    View Slide

  12. NJOJNPͷ഑ଐ໘ஊ
    Ͳ͏͍͏෼໺ʹڵຯ͋Δʁ
    Ϛωʔδϟ

    View Slide

  13. NJOJNPͷ഑ଐ໘ஊ
    Ͳ͏͍͏෼໺ʹڵຯ͋Δʁ
    ΢ΣϒϑϩϯτͰ͢ʂ
    Ͱ΋ɼ෯޿͘΍Γ͍ͨͰ͢ɽ
    ΤϯδχΞϦϯά΋ͦΕҎ֎΋ʂ
    Ϛωʔδϟ

    View Slide

  14. NJOJNPͷ഑ଐ໘ஊ
    Ͳ͏͍͏෼໺ʹڵຯ͋Δʁ
    ΢ΣϒϑϩϯτͰ͢ʂ
    Ͱ΋ɼ෯޿͘΍Γ͍ͨͰ͢ɽ
    ΤϯδχΞϦϯά΋ͦΕҎ֎΋ʂ
    ͏ͪͰ͸গ͠1FSM΋ॻ͚͘Ͳ
    େৎ෉ʁ
    Ϛωʔδϟ
    Ϛωʔδϟ

    View Slide

  15. NJOJNPͷ഑ଐ໘ஊ
    Ͳ͏͍͏෼໺ʹڵຯ͋Δʁ
    ΢ΣϒϑϩϯτͰ͢ʂ
    Ͱ΋ɼ෯޿͘΍Γ͍ͨͰ͢ɽ
    ΤϯδχΞϦϯά΋ͦΕҎ֎΋ʂ
    ͏ͪͰ͸গ͠1FSM΋ॻ͚͘Ͳ
    େৎ෉ʁ
    1FSMॻ͍ͨ͜ͱͳ͍͠Α͘஌ΒΜ͚Ͳ
    ͕Μ͹Γ·͢ʂ΋ʔ·Μ͍ͨͰ͢ʂ
    Ϛωʔδϟ
    Ϛωʔδϟ

    View Slide

  16. NJOJNPͷ഑ଐ໘ஊ
    1FSMॻ͍ͨ͜ͱͳ͍͠Α͘஌ΒΜ͚Ͳ
    ͕Μ͹Γ·͢ʂ΋ʔ·Μ͍ͨͰ͢ʂ

    View Slide

  17. NJOJNPͷ഑ଐ໘ஊ
    ‣ 1FSMͩΖ͏ͱͳΜͩΖ͏ͱษڧʹͳΓͦ͏ʜ
    ‣ αʔϏε΋෦ॺ΋ྑͦ͞͏
    ‣ ΍Γ͍ͨ͜ͱΛߟ͑Δͱ࠷΋Ϛον͢Δ
    ‣ 1FSMΛʮݏʯͬͯݴ͑Δཧ༝΋ͳ͍ͳʜ
    1FSMॻ͍ͨ͜ͱͳ͍͠Α͘஌ΒΜ͚Ͳ
    ͕Μ͹Γ·͢ʂ΋ʔ·Μ͍ͨͰ͢ʂ

    View Slide

  18. ແࣄʹʜ
    NJOJNP΁ͷ഑ଐ͕ܾఆ

    View Slide

  19. ̼JOJNPͷϓϩμΫτ
    Application Server
    Mojolicious
    εϚϗΞϓϦ
    αϩϯ޲͚༧໿؅ཧγεςϜ
    Web൛αʔϏε
    API (JSON RPC)

    View Slide

  20. NJOJNPͷϓϩμΫτ
    αϩϯ޲͚༧໿؅ཧγεςϜ
    εϚϗΞϓϦ
    iOS: Swift, Obj-C
    Android: Kotlin, Java
    API, WebΞϓϦέʔγϣϯ
    Perl (Mojolicious)
    Perl (Mojolicious), React
    ܝࡌऀ޲͚Φ΢ϯυϝσΟΞ
    WordPress

    View Slide

  21. ΒΓΐ͢ͷकඋൣғʙϓϩμΫτʙ
    αϩϯ޲͚༧໿؅ཧγεςϜ
    εϚϗΞϓϦ
    iOS: Swift, Obj-C
    Android: Kotlin, Java
    API, WebΞϓϦέʔγϣϯ
    Perl (Mojolicious)
    Perl (Mojolicious), React
    ܝࡌऀ޲͚Φ΢ϯυϝσΟΞ
    WordPress

    View Slide

  22. ΒΓΐ͢ͷकඋൣғʙϓϩμΫτʙ
    αϩϯ޲͚༧໿؅ཧγεςϜ
    εϚϗΞϓϦ
    iOS: Swift, Obj-C
    Android: Kotlin, Java
    API, WebΞϓϦέʔγϣϯ
    Perl (Mojolicious)
    Perl (Mojolicious), React
    ܝࡌऀ޲͚Φ΢ϯυϝσΟΞ
    WordPress
    Web൛αʔϏεΛ୲౰͢Δ
    ϝΠϯΤϯδχΞͱͯ͠഑ଐ

    View Slide

  23. ΒΓΐ͢ͷकඋൣғʙͦͷଞʙ
    ΧελϚʔαϙʔτ $4
    ༻؅ཧπʔϧ
    $4޲͚ΤϯδχΞϦϯάࢧԉʢՄࢹԽ౳ʣ
    #4޲͚ΤϯδχΞϦϯάࢧԉʢՄࢹԽ౳ʣ
    ʜFUD

    View Slide

  24. ࢖͏πʔϧɾݴޠͳͲ
    ‣ 1FSM .PKPMJDJPVT

    ‣ )5.-$44 4$44

    ‣ .Z42-
    ‣ 3FEBTIʢσʔλՄࢹԽʣ
    ‣ "84 &$ 4 3PVUF 3%4 4&4FUD

    FUD

    View Slide

  25. ഑ଐ࣌఺ͰͷΒΓΐ͢ͷΤϯδχΞϦϯάͷϨϕϧ
    ‣ 1FSM͸ॻ͍ͨ͜ͱͳ͍
    ‣ 1FSMΛॻ͖ͨ͘ͳ͍ͱ͍͏ؾ࣋ͪ͸ͳ͍
    ‣ ߴઐଔ
    ‣ όΠτͰ3BJMTͰ࡞ΒΕͨγεςϜͷอकΛͯͨ͠
    ‣ .7$͸஌ͬͯΔɽΞʔΩςΫνϟʹ͍ͭͯ͸ޠΕͳ͍

    View Slide

  26. 1FSMͷڭҭͱۀ຿

    View Slide

  27. ຖேઌഐʹ4MBDLͰ

    View Slide

  28. ڭ͑ͯ΋Βͬͨ͜ͱͷҰ෦
    ‣ 1FSMʹ͍ͭͯ
    ‣ ίϯςΩετ
    ‣ جຊతͳจ๏
    ‣ ଞύοέʔδͷϝιουݺͼग़͠ͷ࢓ํ
    ‣ ಛघͳߏจʢܕάϩϒͳͲʣ

    View Slide

  29. ڭ͑ͯ΋Βͬͨ͜ͱͷҰ෦
    ‣ .PKPMJDJPVT΍NJOJNPͷίʔυʹ͍ͭͯ
    ‣ σΟϨΫτϦߏ੒
    ‣ %#ͷߏ੒
    ‣ NJOJNP΍NJYJͰ࢖͍ͬͯΔศརϞδϡʔϧ
    ‣ 3PVUJOH΍)FMQFSͷஔ͖৔ͱ͔

    View Slide

  30. ࣮૷Ͱ͍᪴ͨͱ͖
    ઌഐͨͪ͸ʮਖ਼ղʯ͸ڭ͑ͯ͘Εͳ͍
    ඞཁͱͳΔʮώϯτʯΛ͘ΕΔ

    View Slide

  31. ͭ·Γʜ
    ҰਓͰࣗ૸Ͱ͖Δ؀ڥΛ࡞ͬͯ͘Εͨ

    View Slide

  32. ࡀͰ1FSMΛ͔͍ͯ
    Ͳ͏ࢥͬͨʁ

    View Slide

  33. ࡀͰ1FSMΛॻ͍ͯͲ͏ࢥͬͨʁ
    1FSMΛॻ͘ͷ͸ָ͍͠ʂ
    ͦͯ͠ɼֶͼ͕ଟ͍ʂ

    View Slide

  34. 1FSM͸ָ͍͠
    5IFSF`T.PSF5IBO0OF8BZ5P%P*U
    ॻ͖ํʹਓ͕ؒग़Δ
    ʮͲ͏ॻ͜͏ʁʯʮͲ͏ॻ͘ͷ͕εϚʔτʁʯΛߟ͑Δ
    ઌഐͨͪͱʮͲ͏͠Α͏ʯΛٞ࿦͢Δ

    View Slide

  35. ֶͼ͕ଟ͍
    .PKPMJDJPVT͸ൺֱతʮബ͍ʯ8"'
    ࣗ෼Ͱॻ͘ɾಡΉɾֶͿ͜ͱ͕ଟ͍ʂ
    ΢ΣϒαʔϏεͷαʔόαΠυΛֶͿͷʹஸ౓͍͍ʁ
    গͳ͘ͱ΋ࣗ෼͸ʮϥοΩʔʯͩͱࢥ͍ͬͯΔ

    View Slide

  36. ͱ͸͍͑Α͘Θ͔Βͳ͍͜ͱ΋ଟ͔ͬͨ
    ‣ σϦϑΝϨϯεΛ๨Εͯਏ͍
    ‣ $#array = 20
    ‣ ॳݟͩͱΑ͘Θ͔Βͳ͍
    ‣ (sort { $a <=> $b } @hoge)[0]
    ‣ Α͘Θ͔Βͳ͍
    ‣ List::Util::reduce{ $a‣ ্ͷ΍ͭ͸͜ΕͰऔΕΔ͠ແବ͕গͳ͍…

    View Slide

  37. ੒௕

    View Slide

  38. ײͨ͡੒௕
    ‣ ΑΓྑ͍࣮૷ํ๏Λߟ͑ΒΕΔΑ͏ʹͳͬͨ
    ‣ ಡΈ΍͘͢ҙਤ͕఻ΘΓ΍͍͢ίʔυΛॻ͚ΔΑ͏ʹ
    ‣ େن໛αʔϏε͕Ͳ͏ಈ͍͍ͯΔ͔ཧղͨ͠
    ‣ ΞʔΩςΫνϟ΁ͷڵຯ͕༙͍ͨ
    ‣ ଞͷݴޠΛֶͿҙཉʹͭͳ͕ͬͨ

    View Slide

  39. ͜Ε͔Β

    View Slide

  40. ࠷ۙ͸(PΛֶΜͰ͍·͢

    View Slide

  41. 8IZ(P
    ‣ 1FSMͱ͸झ͕ҧָͬͯͦ͠͏͔ͩΒ
    ‣ ࠷ۙྲྀߦ͍ͬͯΔ͔Β
    ‣ NJOJNPͷαʔόαΠυΛ(PͰॻ͖௚͍ͯ͠Δ͔Β

    View Slide

  42. 8IZ(P
    ‣ 1FSMͱ͸झ͕ҧָͬͯͦ͠͏͔ͩΒ
    ‣ ࠷ۙྲྀߦ͍ͬͯΔ͔Β
    ‣ NJOJNPͷαʔόαΠυΛ(PͰॻ͖௚͍ͯ͠Δ͔Β

    View Slide

  43. ·ͱΊ

    View Slide

  44. ·ͱΊ
    ‣ 1FSM͕ʮݏʯͱ͍͏ઌೖ؍͕ͳ͚Ε͹ࡀ΋ॻ͘
    ‣ ࣗ૸Ͱ͖Δ؀ڥ͑͋͞Ε͹ֶͿ͜ͱ͕ଟ͍ݴޠ
    ‣ 8FCαʔϏεͷجૅΛ͔ͬ͠ΓֶͿ͜ͱ͕Ͱ͖͍ͯΔ
    ‣ 1FSMΛ͔͚ͯϥοΩʔ
    ‣ ଞͷݴޠΛֶͿҙཉʹ΋ͭͳ͕ͬͨ

    View Slide

  45. c

    ʯʀ̻
    8FBSFIJSJOH
    IUUQTNJYJDPKQSFDSVJU

    View Slide

  46. View Slide