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

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

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

hakobe (Yohei Fushii)

October 09, 2018
Tweet

More Decks by hakobe (Yohei Fushii)

Other Decks in Technology

Transcript

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

    View Slide

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

    ΞϓϦέʔγϣϯΤϯδχΞ

    View Slide

  3. ͸ͯͳϒϩά͸ͯͳϒοΫϚʔΫ
    .BDLFSFM͸ͯͳμΠΞϦʔ

    ͸ͯͳΩʔϫʔυ#,6."͸ͯͳελʔ
    ਓྗݕࡧ͸ͯͳ͸ͯͳϑΥτϥΠϑ

    ͏͝ϝϞ͸ͯͳ͸ͯͳίίϓϥοτϑΥʔϜ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  8. ࠓ೔͸

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

    View Slide

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

    View Slide

  10. 1FSM

    View Slide

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

    View Slide

  12. ͸ͯͳʹ͓͚ΔPerl
    ❖2001೥ʙ
    ❖࠾༻αʔϏε
    • ͸ͯͳϒϩά
    • δϟϯϓ+౳ϚϯΨܥ/ΧΫϤϜ
    • ͸ͯͳϒοΫϚʔΫ(BFFͱͯ͠)
    • ଞ΄ͱΜͲ͢΂ͯͷαʔϏε
    ❖جຊతʹಠࣗϑϨʔϜϫʔΫΛ࢖ͬͯ։ൃ

    View Slide

  13. Perl ࠾༻ͷ͖͔͚ͬ
    ❖͸͡Ίʹ࢖ͬͨͷ͕Perlͩͬͨ
    • ౰࣌ͷWeb։ൃݴޠͱͯ͠੎͍͕͋ͬͨ
    • ߴ଎ʹࢼߦࡨޡ͠ͳ͕Β࢖͑Δݴޠͱͯ͠

    બ͹Εͨ
    ❖͸ͯͳ͸PerlίϛϡχςΟͷதͰҭͯͯ΋Βͬͨ

    View Slide

  14. ͸ͯͳΤϯδχΞͷݪ఺͚ͩͲ…
    ❖ڞ௨Ϟδϡʔϧ΍ڭҭ༻ࢿྉͳͲࢿݯ΋๛෋
    ❖CPAN Author΍Perl͕޷͖ͳΤϯδχΞ͸ଟ͍
    ❖৽ٕज़΁ͷ௥ैʹ՝୊
    • JSON Schema/GraphQL/AWS Client ͋ͨΓͰۤ࿑
    • ϥΠϒϥϦΛࣗ੡͢Δ͜ͱ΋
    ❖৽͍͠ϓϩδΣΫτͰ͸ͦΜͳʹ࠾༻͞Εͳ͍͔΋..?

    View Slide

  15. 4DBMB

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  19. ෳࡶͳυϝΠϯΛର৅ͱ͢Δͱ͖ʹ࠾༻
    ❖Mackerel΍͸ͯͳϒοΫϚʔΫͷϞσϧ͸ͱͯ΋
    ෳࡶ
    ❖ߴػೳͳܕγεςϜ͕೉ղͳίʔυΛੜΉ͜ͱ΋
    • ࣗ෼ͨͪͷίʔυͰ͋Ε͹஫ҙͰ͖Δ͕

    ϥΠϒϥϦίʔυΛಡΉ࣌ʹେม
    ❖ίϯύΠϧ࣌ؒ
    • ॲཧܥͷόʔδϣϯΞοϓͰߴ଎Խ͢Δ͜ͱ΋ʂ

    View Slide

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

    View Slide

  21. (P

    View Slide

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

    View Slide

  23. ͸ͯͳʹ͓͚ΔGo
    ❖2013೥ʙ
    ❖࠾༻αʔϏε
    • Mackerel
    ‣ ؂ࢹΤʔδΣϯτ/֎ܗ؂ࢹϛυϧ΢ΣΞ
    ‣ ࣌ܥྻσʔλϕʔε
    • ͸ͯͳϒοΫϚʔΫ(δϣϒΩϡʔ)
    • ಺෦޲͚ϚΠΫϩαʔϏε
    • Πϯλʔϯγοϓͷڭҭʹ΋ར༻(2018೥͔Β)

    View Slide

  24. Go࠾༻ͷ͖͔͚ͬ
    ❖Mackerelͷ৽ن։ൃ
    • ؂ࢹΤʔδΣϯτͷ࣮૷ͷͨΊ
    ‣ mackerel-agent
    ‣ ఆظతʹαʔόͷϝτϦΫεΛऔಘͯ͠

    αʔόʹૹ৴
    • ౰࣌ͷCTOʹGo͔RubyͰͬͯݴΘΕͨͷͰ

    (๻͕)

    View Slide

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

    View Slide

  26. 1ZUIPO

    View Slide

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

    View Slide

  28. ͸ͯͳʹ͓͚ΔPython
    ❖2015೥ʙ
    ❖࠾༻αʔϏε
    • BrandSafe ͸ͯͳ
    • ࣾ಺޲͚޿ࠂઃఆ؅ཧπʔϧ
    • εύϜ൑ఆπʔϧ(։ൃத)
    • ͦͷଞඇެ։ͷϓϩδΣΫτͰ΋
    ❖FlaskΛར༻͍ͯ͠ΔαʔϏε͕େ൒

    View Slide

  29. Python࠾༻ͷ͖͔͚ͬ
    ❖ػցֶशͱσʔλ෼ੳ
    • ΤίγεςϜ͕׬੒͞Ε͍ͯΔ
    • PerlͰॻ͖௚͢ϝϦοτ͕͋·Γͳ͍
    ❖GoogleܥϥΠϒϥϦ
    • ޿ࠂܥͰ͸ར༻Ͱ͖Δͱศར

    View Slide

  30. ͸ͯͳʹ͓͚ΔPython
    ❖ػցֶश΍σʔλ෼ੳؔ࿈Ͱͷ࠾༻͕جຊ
    • ͱ͸͍͑෇ਵ͢ΔWebΞϓϦέʔγϣϯ෦෼΋

    ݁ߏॻ͔Ε͍ͯͯ஌ݟ͕ཷ·͖͍ͬͯͯΔ
    ❖ࠓޙPerlͷ୅ΘΓʹ࠾༻͢Δ৔໘΋૿͑ͦ͏
    ❖ݸਓతʹ͸ Type hint͕΋ͬͱ੝Γ্͕ͬͯཉ͍͠
    • TypeScript ͷ typesʹൺ΂Δͱॆ࣮౓͸௿͍

    View Slide

  31. @͸ͯͳࣾ಺ษڧձ
    https://hakobe932.hatenablog.com/entry/2017/11/03/190000

    View Slide

  32. Ruby
    ❖Perlͱ͸͔ͭͯϥΠόϧؔ܎ͩͬͨ͜ͱ΋͋ͬͯ

    ࣾ಺Ͱͷ࠾༻ʹ͸͍ͨΒͳ͔ͬͨ
    ❖͸ͯͳͷਓ͸͍͍ͩͨॻ͚Δ͠ɺ͍͍ͩͨ޷͖
    • ๻΋޷͖Ͱ͢
    ❖࠾༻γʔϯ
    • Chef, Capistrano

    View Slide

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

    View Slide

  34. ϓϩάϥϛϯάݴޠબ୒ʹ

    ͍ͭͯͷߟ͑ํ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  40. ৽ݴޠ࠾༻ͷϓϩηε
    ❖ٕज़άϧʔϓ͕൑அ
    • ٕज़άϧʔϓ = ΤϯδχΞԣ۲ͷ૊৫
    • ར༻͍ͨ͠ਓ͕ٕज़άϧʔϓʹਃ੥
    • CTO΍νʔϑ͕ώΞϦϯά͠ͳ͕Βܾఆ
    • ݴޠ x ༻్͝ͱʹར༻ͯ͠Α͍͔ఆΊΔ
    • ඞཁҎ্ʹ਺͕രൃ͢ΔͷΛ๷͙

    View Slide

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

    View Slide

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

    View Slide

  43. ݸਓతؾʹͳΓݴޠ
    ❖Node
    • ϦΞϧλΠϜੑ͕ඞཁͳͱ͖ʹ
    ❖Elixir
    • ଱ো֐ੑ͕ΊͪΌͪ͘Όඞཁͳͱ͖ʹ
    ❖Rust
    • γεςϜϨϕϧͷϓϩάϥϛϯά͕ඞཁͳͱ͖ʹ

    View Slide

  44. ·ͱΊ

    View Slide

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

    ޻෉Λ͍͖͍ͯͨ͠
    ❖࠙਌ձͰͥͻօ͞Μͷ͓࿩΋͖͔͍ͤͯͩ͘͞ʂ

    View Slide