はてなにおけるプログラミング言語の歴史とこれから

 はてなにおけるプログラミング言語の歴史とこれから

7e8bb5931a14030dc6a297aa364197bf?s=128

hakobe (Yohei Fushii)

October 09, 2018
Tweet

Transcript

  1. ͸ͯͳʹ͓͚Δ ϓϩάϥϛϯάݴޠͷྺ࢙ ͱ͜Ε͔Β id:hakobe932

  2. ࣗݾ঺հ ෬Ҫ ༸ฏ id:hakobe932 @hakobe νʔϑΤϯδχΞ
 ΞϓϦέʔγϣϯΤϯδχΞ

  3. ͸ͯͳϒϩά͸ͯͳϒοΫϚʔΫ .BDLFSFM͸ͯͳμΠΞϦʔ
 ͸ͯͳΩʔϫʔυ#,6."͸ͯͳελʔ ਓྗݕࡧ͸ͯͳ͸ͯͳϑΥτϥΠϑ
 ͏͝ϝϞ͸ͯͳ͸ͯͳίίϓϥοτϑΥʔϜ

  4. ͸ͯͳͷϓϩάϥϛϯάݴޠͱ͍͑͹? 1FSM͔ͳ

  5. ࣮ࡍͷ͸ͯͳͰͷ࠾༻ݴޠ

  6. ࠓ೔ͷΞδΣϯμ ❖͸ͯͳͷϓϩάϥϛϯάݴޠ࠾༻ͷྺ࢙ • ֤ݴޠͷ࠾༻ͷܦҢͱධՁ ❖ϓϩάϥϛϯάݴޠબ୒ʹ͍ͭͯͷߟ͑ํ • બ୒ͷํ਑ͱ࠾༻ϓϩηε

  7. ͸ͯͳͷϓϩάϥϛϯάݴޠ ࠾༻ͷྺ࢙

  8. ࠓ೔͸
 αʔόαΠυͷ࣮૷ݴޠ ͷ࿩Λ͠·͢ ϑϩϯτΤϯυͷ࿩͸͋ͱͰฉ͍͍ͯͩ͘͞ʂ

  9. ࠾༻೥ද • 2001೥ ૑ۀͱಉ࣌ʹPerlΛ࠾༻ • 2013೥ Mackerelͷ։ൃͰScalaͱGoΛ࠾༻ • 2015೥ ޿ࠂؔ࿈ϓϩμΫτͰPythonΛ࠾༻

    ʙ 12೥ͷ͕࣌ྲྀΕΔ
  10. 1FSM

  11. Perl ❖Web։ൃͷᴈ໌ظΛࢧ͑ͨεΫϦϓτݴޠ ❖೔ຊͷίϛϡχςΟ͕׆ൃ • YAPC::AsiaͳͲͷ఻આతΠϕϯτ΋ੜ·Εͨ ❖όʔδϣϯΞοϓ΋ܧଓͯ͠Δ ❖ISUCON্Ґ͸ৗʹPerlͩͬͨ࣌୅΋

  12. ͸ͯͳʹ͓͚ΔPerl ❖2001೥ʙ ❖࠾༻αʔϏε • ͸ͯͳϒϩά • δϟϯϓ+౳ϚϯΨܥ/ΧΫϤϜ • ͸ͯͳϒοΫϚʔΫ(BFFͱͯ͠) •

    ଞ΄ͱΜͲ͢΂ͯͷαʔϏε ❖جຊతʹಠࣗϑϨʔϜϫʔΫΛ࢖ͬͯ։ൃ
  13. Perl ࠾༻ͷ͖͔͚ͬ ❖͸͡Ίʹ࢖ͬͨͷ͕Perlͩͬͨ • ౰࣌ͷWeb։ൃݴޠͱͯ͠੎͍͕͋ͬͨ • ߴ଎ʹࢼߦࡨޡ͠ͳ͕Β࢖͑Δݴޠͱͯ͠
 બ͹Εͨ ❖͸ͯͳ͸PerlίϛϡχςΟͷதͰҭͯͯ΋Βͬͨ

  14. ͸ͯͳΤϯδχΞͷݪ఺͚ͩͲ… ❖ڞ௨Ϟδϡʔϧ΍ڭҭ༻ࢿྉͳͲࢿݯ΋๛෋ ❖CPAN Author΍Perl͕޷͖ͳΤϯδχΞ͸ଟ͍ ❖৽ٕज़΁ͷ௥ैʹ՝୊ • JSON Schema/GraphQL/AWS Client ͋ͨΓͰۤ࿑

    • ϥΠϒϥϦΛࣗ੡͢Δ͜ͱ΋ ❖৽͍͠ϓϩδΣΫτͰ͸ͦΜͳʹ࠾༻͞Εͳ͍͔΋..?
  15. 4DBMB

  16. Scala ❖ߴػೳϚϧνύϥμΠϜͷJVMݴޠ ❖DDD౳ ۙ୅తΞʔΩςΫνϟΛදݱ͠΍͍͢ ❖Java༝དྷͷ๛෋ͳϥΠϒϥϦ ❖ίϛϡχςΟ΋׆ൃ

  17. ͸ͯͳʹ͓͚ΔScala ❖2013೥ʙ ❖࠾༻αʔϏε • Mackerel(αʔόαΠυ) • ͸ͯͳϒοΫϚʔΫ (ίΞ෦෼) • ͸ͯͳϒϩάͷ՝ۚγεςϜ

    ❖PlayFramework΍Scalatra + Slick
  18. Scala ࠾༻ͷ͖͔͚ͬ ❖Mackerelͷ৽ن։ൃ • ৽ٕज़ͷಋೖͷ͠΍͢͞ • εΫϦϓτݴޠʹΑΔ։ൃͷେม͔͞Β͘Δ ੩తܕγεςϜ΁ͷಌΕ • ͋ΔΤϯδχΞͷHaskellॻ͖ͨ͗͢Δؾ࣋

    ͕࣮ͪ݁ͨ͠ͱ΋ݴΘΕ͍ͯΔ
  19. ෳࡶͳυϝΠϯΛର৅ͱ͢Δͱ͖ʹ࠾༻ ❖Mackerel΍͸ͯͳϒοΫϚʔΫͷϞσϧ͸ͱͯ΋ ෳࡶ ❖ߴػೳͳܕγεςϜ͕೉ղͳίʔυΛੜΉ͜ͱ΋ • ࣗ෼ͨͪͷίʔυͰ͋Ε͹஫ҙͰ͖Δ͕
 ϥΠϒϥϦίʔυΛಡΉ࣌ʹେม ❖ίϯύΠϧ࣌ؒ • ॲཧܥͷόʔδϣϯΞοϓͰߴ଎Խ͢Δ͜ͱ΋ʂ

  20. @YAPC::Asia 2014 http://yapcasia.org/2014/talk/show/d557ddbe-fde4-11e3-b7e8-e4a96aeab6a4

  21. (P

  22. Go ❖࢖͍΍͘͢ਓؾͷ੩తܕ෇͚ݴޠ ❖γϯϓϧͳจ๏ͱॆ࣮ͨ͠πʔϧͰ։ൃ͠΍͍͢ ❖GoroutineʹΑΓαʔό΍ϛυϧ΢ΣΞʹ΋࠷ద • ϚΠΫϩαʔϏεͷྲྀߦʹ΋ϑΟοτ ❖࠷ۙͷISUCONͷ༗๬ג

  23. ͸ͯͳʹ͓͚ΔGo ❖2013೥ʙ ❖࠾༻αʔϏε • Mackerel ‣ ؂ࢹΤʔδΣϯτ/֎ܗ؂ࢹϛυϧ΢ΣΞ ‣ ࣌ܥྻσʔλϕʔε •

    ͸ͯͳϒοΫϚʔΫ(δϣϒΩϡʔ) • ಺෦޲͚ϚΠΫϩαʔϏε • Πϯλʔϯγοϓͷڭҭʹ΋ར༻(2018೥͔Β)
  24. Go࠾༻ͷ͖͔͚ͬ ❖Mackerelͷ৽ن։ൃ • ؂ࢹΤʔδΣϯτͷ࣮૷ͷͨΊ ‣ mackerel-agent ‣ ఆظతʹαʔόͷϝτϦΫεΛऔಘͯ͠
 αʔόʹૹ৴ •

    ౰࣌ͷCTOʹGo͔RubyͰͬͯݴΘΕͨͷͰ
 (๻͕)
  25. ϛυϧ΢ΣΞ΍ϚΠΫϩαʔϏε։ൃͰਓؾ ❖ύϑΥʔϚϯεͱγϯϓϧ͕͞ٻΊΒΕΔ৔໘ • ΠϯϑϥνʔϜͷCLIπʔϧͳͲͰ΋ ❖ࣾ಺ʹϑΝϯ͕ଟࣗ͘વͱ஌ݟ͕ू·͖ͬͯͯศར • CTOͷmotemen͞Μ΋େ޷͖ ❖WebΞϓϦέʔγϣϯ։ൃͷ஌ݟ͸͋·Γͳ͍ • ࠓ೥ͷΠϯλʔϯͰࢼͯ͠Έͨ

  26. 1ZUIPO

  27. Python ❖γϯϓϧͰॻ͖΍͍͢εΫϦϓτݴޠ ❖ػցֶश΍σʔλ෼ੳͷϥΠϒϥϦͷॆ࣮Ͱਓؾʹ ❖ਓ͕د͖͍ͬͯͯͯͦͷଞͷϥΠϒϥϦ΋ॆ࣮ • ࠷৽ٕज़͕ར༻͠΍͍͢(ྫ: GraphQL) ❖΋͏Python3࢖͍͍ͬͯ

  28. ͸ͯͳʹ͓͚ΔPython ❖2015೥ʙ ❖࠾༻αʔϏε • BrandSafe ͸ͯͳ • ࣾ಺޲͚޿ࠂઃఆ؅ཧπʔϧ • εύϜ൑ఆπʔϧ(։ൃத)

    • ͦͷଞඇެ։ͷϓϩδΣΫτͰ΋ ❖FlaskΛར༻͍ͯ͠ΔαʔϏε͕େ൒
  29. Python࠾༻ͷ͖͔͚ͬ ❖ػցֶशͱσʔλ෼ੳ • ΤίγεςϜ͕׬੒͞Ε͍ͯΔ • PerlͰॻ͖௚͢ϝϦοτ͕͋·Γͳ͍ ❖GoogleܥϥΠϒϥϦ • ޿ࠂܥͰ͸ར༻Ͱ͖Δͱศར

  30. ͸ͯͳʹ͓͚ΔPython ❖ػցֶश΍σʔλ෼ੳؔ࿈Ͱͷ࠾༻͕جຊ • ͱ͸͍͑෇ਵ͢ΔWebΞϓϦέʔγϣϯ෦෼΋
 ݁ߏॻ͔Ε͍ͯͯ஌ݟ͕ཷ·͖͍ͬͯͯΔ ❖ࠓޙPerlͷ୅ΘΓʹ࠾༻͢Δ৔໘΋૿͑ͦ͏ ❖ݸਓతʹ͸ Type hint͕΋ͬͱ੝Γ্͕ͬͯཉ͍͠ •

    TypeScript ͷ typesʹൺ΂Δͱॆ࣮౓͸௿͍
  31. @͸ͯͳࣾ಺ษڧձ https://hakobe932.hatenablog.com/entry/2017/11/03/190000

  32. Ruby ❖Perlͱ͸͔ͭͯϥΠόϧؔ܎ͩͬͨ͜ͱ΋͋ͬͯ
 ࣾ಺Ͱͷ࠾༻ʹ͸͍ͨΒͳ͔ͬͨ ❖͸ͯͳͷਓ͸͍͍ͩͨॻ͚Δ͠ɺ͍͍ͩͨ޷͖ • ๻΋޷͖Ͱ͢ ❖࠾༻γʔϯ • Chef, Capistrano

  33. ͜͜·Ͱͷ·ͱΊ ❖͸ͯͳ͸10೥Ҏ্PerlͷձࣾΛ΍͍ͬͯΔ ❖ۙ೥͸ඞཁʹԠͯ͡৽ͨͳݴޠΛ࢖͍ͬͯΔ • Scala: ෳࡶͳυϝΠϯ΍ઃܭ • Go: ϛυϧ΢ΣΞ΍ϚΠΫϩαʔϏε •

    Python: ػցֶशͱσʔλ෼ੳ
  34. ϓϩάϥϛϯάݴޠબ୒ʹ
 ͍ͭͯͷߟ͑ํ

  35. ݴޠબ୒ͷࢹ఺͸มΘͬͨ ❖ੲ͸Web։ൃͷͨΊͷݴޠΛҰͭબ΂͹ྑ͔ͬͨ ❖ࠓ͸Web։ൃͷྖҬ͕޿͕Γɺదࡐదॴʹ • WebΞϓϦέʔγϣϯ͚ͩͰ͸ͳ͘… • ϛυϧ΢ΣΞ • ϚΠΫϩαʔϏε •

    αʔόʔϨε • ػցֶश
  36. ͸ͯͳͷϓϩάϥϛϯάݴޠʹର͢Δ࢟੎ ❖ඞཁͰ͋Ε͹৽͍͠ݴޠΛͲΜͲΜ࢖͍ͬͯ͘ • ϓϩδΣΫτ͝ͱʹݕ౼ • σϑΥϧτ͸Perlͱ͍͏͜ͱʹͳ͍ͬͯΔ ❖ͱ͸͍͑ɺݴޠ͕૿͑͗͢ΔͱࠔΒͳ͍͔?

  37. ݴޠͷ૿ՃͷσϝϦοτ ❖ڭҭίετ/ΤϯδχΞͷՄൖੑͷ௿Լ • ͸ͯͳͷΤϯδχΞ͸೚ҙͷݴޠ͕࢖͑Δͱ ͍͏લఏͷ΋ͱͳΜͱ͔ͳ͍ͬͯΔ • ϓϩδΣΫτʹඞཁͳٕज़ͷҧ͍͸େ͖͘ͳͬ ͖͍ͯͯΔ ❖஌ݟ΍ࢿ࢈ͷ෼ࢄ •

    ผͷ͜ͱΛ΍ͬͯΔͱڞৼ͕ੜ·Εʹ͍͘
  38. ৽ݴޠಋೖͰؾΛ͚͍ͭͯΔ͜ͱ ❖໰୊Λղܾ͢ΔͨΊʹຊ౰ʹඞཁ͔? ❖νʔϜ͕ड͚ೖΕΒΕΔ͔? • Ұ࣌తʹ૿Ճ͢ΔίετΛड͚ೖΕΒΕΔ͔? • Ϧʔυ͢Δਓ͕͍Δ͔? ϑΥϩϫʔ͕͍Δ͔? ‣ ձࣾʹఆணͤ͞Δͱ͜Ζ·ͰΛݟਾ͑Δ

  39. ৽ݴޠಋೖͰؾΛ͚͍ͭͯΔ͜ͱ ❖ݴޠͷίϛϡχςΟ͸׆ൃ͔? • ϝϯςφϯε͢Δͻͱ͕͍Δ͔? • ϥΠϒϥϦ͸ॆ࣮͍ͯ͠Δ͔? • ͸ͯͳ͕ߩݙ͍͚ͯ͠Δ͔?

  40. ৽ݴޠ࠾༻ͷϓϩηε ❖ٕज़άϧʔϓ͕൑அ • ٕज़άϧʔϓ = ΤϯδχΞԣ۲ͷ૊৫ • ར༻͍ͨ͠ਓ͕ٕज़άϧʔϓʹਃ੥ • CTO΍νʔϑ͕ώΞϦϯά͠ͳ͕Βܾఆ

    • ݴޠ x ༻్͝ͱʹར༻ͯ͠Α͍͔ఆΊΔ • ඞཁҎ্ʹ਺͕രൃ͢ΔͷΛ๷͙
  41. εϜʔζʹݴޠΛಋೖ͢ΔͨΊʹ ❖ΤϯδχΞͷதͰ஌ݟ΍ධՁΛूΊ͓ͯ͘ • ݴޠͷษڧձΛ։࠵ • झຯ΍ΠϯλʔϯɺϥϘϓϩδΣΫτͰධՁ ❖ࣗવʹಋೖ͍͚ͯ͠Δ͔Ͳ͏͔ͷ౔৕Λ࡞Δ • ແཧͦ͏ͳΒࣗવͱཱͪফ͑Δ

  42. ࠓޙ΋৽ݴޠ͸ಋೖ͍͔ͯ͘͠? ❖ඞཁʹԠͯ͡࠷΋దͨ͠ݴޠΛ࢖͍͖͍ͬͯͨ • Web։ൃͷఆٛ͸ࠓޙ΋֦େ͍͖ͯͦ͠͏ • ৽͍͠ݴޠ΋ొ৔͢ΔͩΖ͏ ❖ͱ͸͍͑૿͑͗͢Δͷ΋ࠔΔ • ΤϯδχΞͷ஍ྗΛͲΜͲΜߴΊΔ? ݴޠ͝ͱͷڭ

    ҭ੍౓Λॆ࣮͢Δ? • ͦͦ͜͜ࠔΓͭͭ͋ΔͷͰ͍ΖΜͳ͓࿩Λฉ͖͍ͨ
  43. ݸਓతؾʹͳΓݴޠ ❖Node • ϦΞϧλΠϜੑ͕ඞཁͳͱ͖ʹ ❖Elixir • ଱ো֐ੑ͕ΊͪΌͪ͘Όඞཁͳͱ͖ʹ ❖Rust • γεςϜϨϕϧͷϓϩάϥϛϯά͕ඞཁͳͱ͖ʹ

  44. ·ͱΊ

  45. ͸ͯͳͱϓϩάϥϛϯάݴޠ ❖࿩ͨ͜͠ͱ • ͸ͯͳͷϓϩάϥϛϯάݴޠͷྺ࢙ • ݴޠબ୒ͷࢹ఺΍ϓϩηε΍ࠓޙʹ͍ͭͯ ❖Web։ൃͷ޿͕ΓʹదԠ͍ͯͨ͘͠Ίʹ • ৽ͨͳݴޠͷಋೖ͍ͯ͘͠ •

    ͜Ε·ͰͷલఏͰ͸೉͘͠ͳΓͦ͏
 ޻෉Λ͍͖͍ͯͨ͠ ❖࠙਌ձͰͥͻօ͞Μͷ͓࿩΋͖͔͍ͤͯͩ͘͞ʂ