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

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

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

Fe7df352e467912afd5039212242cbb4?s=128

Hagihara Ryosuke

January 26, 2019
Tweet

Transcript

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

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

  3. ࣗݾ঺հ ͸͗͸Β Γΐ͏͚͢ ഡݪ ྋհ ‣ ΒΓΐ͢!SBSZPTV ‣ ೥ੜ·Εࡀ ‣

    ೥݄৽ଔೖࣾʢߴઐଔʣ ‣ NJOJNPࣄۀ෦ΤϯδχΞʢ։ൃάϧʔϓ༡ܸνʔϜʣ ‣ αʔόαΠυ։ൃɾ$9ϏδωεαΠυ౳ͷαϙʔτ
  4. NJOJNP αϩϯελοϑ௚઀༧໿αʔϏε ඒ༰ࢣɾωΠϦετFUDʹ௚઀༧໿

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

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

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

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

  9. ഑ଐ

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

  11. ഑ଐͷํ๏ ‣ ٕज़ྖҬࣥߦ໾һ ҎԼ$50 ɾਓࣄͱͷPO ‣ ֤෦ॺͱ໘ஊ ‣ $50ʹΑΔਪન෦ॺ ‣

    ຊਓر๬෦ॺ ‣ ෦ॺ͔Βͷࢦ໊ ‣ ֤໘ஊʹ͍ͭͯ໘ஊઌͱຊਓ͔ΒϑΟʔυόοΫ ‣ $50ͱਓࣄʹΑͬͯ഑ଐΛܾఆ
  12. NJOJNPͷ഑ଐ໘ஊ Ͳ͏͍͏෼໺ʹڵຯ͋Δʁ Ϛωʔδϟ

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

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

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

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

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

    ͕Μ͹Γ·͢ʂ΋ʔ·Μ͍ͨͰ͢ʂ
  18. ແࣄʹʜ NJOJNP΁ͷ഑ଐ͕ܾఆ

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

  20. NJOJNPͷϓϩμΫτ αϩϯ޲͚༧໿؅ཧγεςϜ εϚϗΞϓϦ iOS: Swift, Obj-C Android: Kotlin, Java API,

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

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

    WebΞϓϦέʔγϣϯ Perl (Mojolicious) Perl (Mojolicious), React ܝࡌऀ޲͚Φ΢ϯυϝσΟΞ WordPress Web൛αʔϏεΛ୲౰͢Δ ϝΠϯΤϯδχΞͱͯ͠഑ଐ
  23. ΒΓΐ͢ͷकඋൣғʙͦͷଞʙ ΧελϚʔαϙʔτ $4 ༻؅ཧπʔϧ $4޲͚ΤϯδχΞϦϯάࢧԉʢՄࢹԽ౳ʣ #4޲͚ΤϯδχΞϦϯάࢧԉʢՄࢹԽ౳ʣ ʜFUD

  24. ࢖͏πʔϧɾݴޠͳͲ ‣ 1FSM .PKPMJDJPVT  ‣ )5.-$44 4$44  ‣

    .Z42- ‣ 3FEBTIʢσʔλՄࢹԽʣ ‣ "84 &$ 4 3PVUF 3%4 4&4FUD  FUD
  25. ഑ଐ࣌఺ͰͷΒΓΐ͢ͷΤϯδχΞϦϯάͷϨϕϧ ‣ 1FSM͸ॻ͍ͨ͜ͱͳ͍ ‣ 1FSMΛॻ͖ͨ͘ͳ͍ͱ͍͏ؾ࣋ͪ͸ͳ͍ ‣ ߴઐଔ ‣ όΠτͰ3BJMTͰ࡞ΒΕͨγεςϜͷอकΛͯͨ͠ ‣

    .7$͸஌ͬͯΔɽΞʔΩςΫνϟʹ͍ͭͯ͸ޠΕͳ͍
  26. 1FSMͷڭҭͱۀ຿

  27. ຖேઌഐʹ4MBDLͰ

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

    ಛघͳߏจʢܕάϩϒͳͲʣ
  29. ڭ͑ͯ΋Βͬͨ͜ͱͷҰ෦ ‣ .PKPMJDJPVT΍NJOJNPͷίʔυʹ͍ͭͯ ‣ σΟϨΫτϦߏ੒ ‣ %#ͷߏ੒ ‣ NJOJNP΍NJYJͰ࢖͍ͬͯΔศརϞδϡʔϧ ‣

    3PVUJOH΍)FMQFSͷஔ͖৔ͱ͔
  30. ࣮૷Ͱ͍᪴ͨͱ͖ ઌഐͨͪ͸ʮਖ਼ղʯ͸ڭ͑ͯ͘Εͳ͍ ඞཁͱͳΔʮώϯτʯΛ͘ΕΔ

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

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

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

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

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

  36. ͱ͸͍͑Α͘Θ͔Βͳ͍͜ͱ΋ଟ͔ͬͨ ‣ σϦϑΝϨϯεΛ๨Εͯਏ͍ ‣ $#array = 20 ‣ ॳݟͩͱΑ͘Θ͔Βͳ͍ ‣

    (sort { $a <=> $b } @hoge)[0] ‣ Α͘Θ͔Βͳ͍ ‣ List::Util::reduce{ $a<$b ? $a: $b }@hoge ‣ ্ͷ΍ͭ͸͜ΕͰऔΕΔ͠ແବ͕গͳ͍…
  37. ੒௕

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

    ଞͷݴޠΛֶͿҙཉʹͭͳ͕ͬͨ
  39. ͜Ε͔Β

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

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

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

  43. ·ͱΊ

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

    ଞͷݴޠΛֶͿҙཉʹ΋ͭͳ͕ͬͨ
  45. c
 ʯʀ̻ 8FBSFIJSJOH IUUQTNJYJDPKQSFDSVJU

  46. None