Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
はてなにおけるプログラミング言語の歴史とこれから
Search
hakobe (Yohei Fushii)
October 09, 2018
Technology
0
670
はてなにおけるプログラミング言語の歴史とこれから
hakobe (Yohei Fushii)
October 09, 2018
Tweet
Share
More Decks by hakobe (Yohei Fushii)
See All by hakobe (Yohei Fushii)
ざっとわかるPython
hakobe
4
6.8k
はてなで一人前のエンジニアになる方法
hakobe
3
6.8k
契約による設計の紹介
hakobe
6
20k
アクターによる 並行処理アプケーション アーキテクチャ
hakobe
4
3.4k
Scala In Perl Company
hakobe
11
12k
TDDの練習 Coding Kata の実践
hakobe
0
1.4k
なめらかにGHEに移行する方法
hakobe
19
7.8k
開発フロー@はてなブックマーク
hakobe
0
160
Git on WebApp with Perl
hakobe
1
3.8k
Other Decks in Technology
See All in Technology
CDKのコードを書く環境を作りました with Amazon Q
nobuhitomorioka
1
150
PHPカンファレンス名古屋-テックリードの経験から学んだ設計の教訓
hayatokudou
2
530
実は強い 非ViTな画像認識モデル
tattaka
1
1k
OSS構成管理ツールCMDBuildを使ったAWSリソース管理の自動化
satorufunai
0
390
分解して理解する Aspire
nenonaninu
2
720
内製化を加速させるlaC活用術
nrinetcom
PRO
2
110
速くて安いWebサイトを作る
nishiharatsubasa
15
15k
OPENLOGI Company Profile
hr01
0
60k
OpenID BizDay#17 KYC WG活動報告(法人) / 20250219-BizDay17-KYC-legalidentity
oidfj
0
450
OpenID Connect for Identity Assurance の概要と翻訳版のご紹介 / 20250219-BizDay17-OIDC4IDA-Intro
oidfj
0
460
Goで作って学ぶWebSocket
ryuichi1208
3
2.4k
脳波を用いた嗜好マッチングシステム
hokkey621
0
270
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Writing Fast Ruby
sferik
628
61k
The Pragmatic Product Professional
lauravandoore
32
6.4k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
Practical Orchestrator
shlominoach
186
10k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
10
1.3k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Building Adaptive Systems
keathley
40
2.4k
Done Done
chrislema
182
16k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Transcript
ͯͳʹ͓͚Δ ϓϩάϥϛϯάݴޠͷྺ࢙ ͱ͜Ε͔Β id:hakobe932
ࣗݾհ ෬Ҫ ༸ฏ id:hakobe932 @hakobe νʔϑΤϯδχΞ ΞϓϦέʔγϣϯΤϯδχΞ
ͯͳϒϩάͯͳϒοΫϚʔΫ .BDLFSFMͯͳμΠΞϦʔ ͯͳΩʔϫʔυ#,6."ͯͳελʔ ਓྗݕࡧͯͳͯͳϑΥτϥΠϑ ͏͝ϝϞͯͳͯͳίίϓϥοτϑΥʔϜ
ͯͳͷϓϩάϥϛϯάݴޠͱ͍͑? 1FSM͔ͳ
࣮ࡍͷͯͳͰͷ࠾༻ݴޠ
ࠓͷΞδΣϯμ ❖ͯͳͷϓϩάϥϛϯάݴޠ࠾༻ͷྺ࢙ • ֤ݴޠͷ࠾༻ͷܦҢͱධՁ ❖ϓϩάϥϛϯάݴޠબʹ͍ͭͯͷߟ͑ํ • બͷํͱ࠾༻ϓϩηε
ͯͳͷϓϩάϥϛϯάݴޠ ࠾༻ͷྺ࢙
ࠓ αʔόαΠυͷ࣮ݴޠ ͷΛ͠·͢ ϑϩϯτΤϯυͷ͋ͱͰฉ͍͍ͯͩ͘͞ʂ
࠾༻ද • 2001 ۀͱಉ࣌ʹPerlΛ࠾༻ • 2013 Mackerelͷ։ൃͰScalaͱGoΛ࠾༻ • 2015 ࠂؔ࿈ϓϩμΫτͰPythonΛ࠾༻
ʙ 12ͷ͕࣌ྲྀΕΔ
1FSM
Perl ❖Web։ൃͷᴈ໌ظΛࢧ͑ͨεΫϦϓτݴޠ ❖ຊͷίϛϡχςΟ͕׆ൃ • YAPC::AsiaͳͲͷઆతΠϕϯτੜ·Εͨ ❖όʔδϣϯΞοϓܧଓͯ͠Δ ❖ISUCON্ҐৗʹPerlͩͬͨ࣌
ͯͳʹ͓͚ΔPerl ❖2001ʙ ❖࠾༻αʔϏε • ͯͳϒϩά • δϟϯϓ+ϚϯΨܥ/ΧΫϤϜ • ͯͳϒοΫϚʔΫ(BFFͱͯ͠) •
ଞ΄ͱΜͲͯ͢ͷαʔϏε ❖جຊతʹಠࣗϑϨʔϜϫʔΫΛͬͯ։ൃ
Perl ࠾༻ͷ͖͔͚ͬ ❖͡Ίʹͬͨͷ͕Perlͩͬͨ • ࣌ͷWeb։ൃݴޠͱ͍͕ͯ͋ͬͨ͠ • ߴʹࢼߦࡨޡ͠ͳ͕Β͑Δݴޠͱͯ͠ બΕͨ ❖ͯͳPerlίϛϡχςΟͷதͰҭͯͯΒͬͨ
ͯͳΤϯδχΞͷݪ͚ͩͲ… ❖ڞ௨Ϟδϡʔϧڭҭ༻ࢿྉͳͲࢿݯ๛ ❖CPAN AuthorPerl͕͖ͳΤϯδχΞଟ͍ ❖৽ٕज़ͷैʹ՝ • JSON Schema/GraphQL/AWS Client ͋ͨΓͰۤ࿑
• ϥΠϒϥϦΛࣗ͢Δ͜ͱ ❖৽͍͠ϓϩδΣΫτͰͦΜͳʹ࠾༻͞Εͳ͍͔..?
4DBMB
Scala ❖ߴػೳϚϧνύϥμΠϜͷJVMݴޠ ❖DDD ۙతΞʔΩςΫνϟΛදݱ͍͢͠ ❖Java༝དྷͷ๛ͳϥΠϒϥϦ ❖ίϛϡχςΟ׆ൃ
ͯͳʹ͓͚ΔScala ❖2013ʙ ❖࠾༻αʔϏε • Mackerel(αʔόαΠυ) • ͯͳϒοΫϚʔΫ (ίΞ෦) • ͯͳϒϩάͷ՝ۚγεςϜ
❖PlayFrameworkScalatra + Slick
Scala ࠾༻ͷ͖͔͚ͬ ❖Mackerelͷ৽ن։ൃ • ৽ٕज़ͷಋೖͷ͢͠͞ • εΫϦϓτݴޠʹΑΔ։ൃͷେม͔͞Β͘Δ ੩తܕγεςϜͷಌΕ • ͋ΔΤϯδχΞͷHaskellॻ͖ͨ͗͢Δؾ࣋
͕࣮ͪ݁ͨ͠ͱݴΘΕ͍ͯΔ
ෳࡶͳυϝΠϯΛରͱ͢Δͱ͖ʹ࠾༻ ❖MackerelͯͳϒοΫϚʔΫͷϞσϧͱͯ ෳࡶ ❖ߴػೳͳܕγεςϜ͕ղͳίʔυΛੜΉ͜ͱ • ࣗͨͪͷίʔυͰ͋ΕҙͰ͖Δ͕ ϥΠϒϥϦίʔυΛಡΉ࣌ʹେม ❖ίϯύΠϧ࣌ؒ • ॲཧܥͷόʔδϣϯΞοϓͰߴԽ͢Δ͜ͱʂ
@YAPC::Asia 2014 http://yapcasia.org/2014/talk/show/d557ddbe-fde4-11e3-b7e8-e4a96aeab6a4
(P
Go ❖͍͘͢ਓؾͷ੩తܕ͚ݴޠ ❖γϯϓϧͳจ๏ͱॆ࣮ͨ͠πʔϧͰ։ൃ͍͢͠ ❖GoroutineʹΑΓαʔόϛυϧΣΞʹ࠷ద • ϚΠΫϩαʔϏεͷྲྀߦʹϑΟοτ ❖࠷ۙͷISUCONͷ༗ג
ͯͳʹ͓͚ΔGo ❖2013ʙ ❖࠾༻αʔϏε • Mackerel ‣ ࢹΤʔδΣϯτ/֎ܗࢹϛυϧΣΞ ‣ ࣌ܥྻσʔλϕʔε •
ͯͳϒοΫϚʔΫ(δϣϒΩϡʔ) • ෦͚ϚΠΫϩαʔϏε • Πϯλʔϯγοϓͷڭҭʹར༻(2018͔Β)
Go࠾༻ͷ͖͔͚ͬ ❖Mackerelͷ৽ن։ൃ • ࢹΤʔδΣϯτͷ࣮ͷͨΊ ‣ mackerel-agent ‣ ఆظతʹαʔόͷϝτϦΫεΛऔಘͯ͠ αʔόʹૹ৴ •
࣌ͷCTOʹGo͔RubyͰͬͯݴΘΕͨͷͰ (͕)
ϛυϧΣΞϚΠΫϩαʔϏε։ൃͰਓؾ ❖ύϑΥʔϚϯεͱγϯϓϧ͕͞ٻΊΒΕΔ໘ • ΠϯϑϥνʔϜͷCLIπʔϧͳͲͰ ❖ࣾʹϑΝϯ͕ଟࣗ͘વͱݟ͕ू·͖ͬͯͯศར • CTOͷmotemen͞Μେ͖ ❖WebΞϓϦέʔγϣϯ։ൃͷݟ͋·Γͳ͍ • ࠓͷΠϯλʔϯͰࢼͯ͠Έͨ
1ZUIPO
Python ❖γϯϓϧͰॻ͖͍͢εΫϦϓτݴޠ ❖ػցֶशσʔλੳͷϥΠϒϥϦͷॆ࣮Ͱਓؾʹ ❖ਓ͕د͖͍ͬͯͯͯͦͷଞͷϥΠϒϥϦॆ࣮ • ࠷৽ٕज़͕ར༻͍͢͠(ྫ: GraphQL) ❖͏Python3͍͍ͬͯ
ͯͳʹ͓͚ΔPython ❖2015ʙ ❖࠾༻αʔϏε • BrandSafe ͯͳ • ͚ࣾࠂઃఆཧπʔϧ • εύϜఆπʔϧ(։ൃத)
• ͦͷଞඇެ։ͷϓϩδΣΫτͰ ❖FlaskΛར༻͍ͯ͠ΔαʔϏε͕େ
Python࠾༻ͷ͖͔͚ͬ ❖ػցֶशͱσʔλੳ • ΤίγεςϜ͕͞Ε͍ͯΔ • PerlͰॻ͖͢ϝϦοτ͕͋·Γͳ͍ ❖GoogleܥϥΠϒϥϦ • ࠂܥͰར༻Ͱ͖Δͱศར
ͯͳʹ͓͚ΔPython ❖ػցֶशσʔλੳؔ࿈Ͱͷ࠾༻͕جຊ • ͱ͍͑ਵ͢ΔWebΞϓϦέʔγϣϯ෦ ݁ߏॻ͔Ε͍ͯͯݟ͕ཷ·͖͍ͬͯͯΔ ❖ࠓޙPerlͷΘΓʹ࠾༻͢Δ໘૿͑ͦ͏ ❖ݸਓతʹ Type hint͕ͬͱΓ্͕ͬͯཉ͍͠ •
TypeScript ͷ typesʹൺΔͱॆ࣮͍
@ͯͳࣾษڧձ https://hakobe932.hatenablog.com/entry/2017/11/03/190000
Ruby ❖Perlͱ͔ͭͯϥΠόϧؔͩͬͨ͜ͱ͋ͬͯ ࣾͰͷ࠾༻ʹ͍ͨΒͳ͔ͬͨ ❖ͯͳͷਓ͍͍ͩͨॻ͚Δ͠ɺ͍͍͖ͩͨ • ͖Ͱ͢ ❖࠾༻γʔϯ • Chef, Capistrano
͜͜·Ͱͷ·ͱΊ ❖ͯͳ10Ҏ্PerlͷձࣾΛ͍ͬͯΔ ❖ۙඞཁʹԠͯ͡৽ͨͳݴޠΛ͍ͬͯΔ • Scala: ෳࡶͳυϝΠϯઃܭ • Go: ϛυϧΣΞϚΠΫϩαʔϏε •
Python: ػցֶशͱσʔλੳ
ϓϩάϥϛϯάݴޠબʹ ͍ͭͯͷߟ͑ํ
ݴޠબͷࢹมΘͬͨ ❖ੲWeb։ൃͷͨΊͷݴޠΛҰͭબྑ͔ͬͨ ❖ࠓWeb։ൃͷྖҬ͕͕Γɺదࡐదॴʹ • WebΞϓϦέʔγϣϯ͚ͩͰͳ͘… • ϛυϧΣΞ • ϚΠΫϩαʔϏε •
αʔόʔϨε • ػցֶश
ͯͳͷϓϩάϥϛϯάݴޠʹର͢Δ࢟ ❖ඞཁͰ͋Ε৽͍͠ݴޠΛͲΜͲΜ͍ͬͯ͘ • ϓϩδΣΫτ͝ͱʹݕ౼ • σϑΥϧτPerlͱ͍͏͜ͱʹͳ͍ͬͯΔ ❖ͱ͍͑ɺݴޠ͕૿͑͗͢ΔͱࠔΒͳ͍͔?
ݴޠͷ૿ՃͷσϝϦοτ ❖ڭҭίετ/ΤϯδχΞͷՄൖੑͷԼ • ͯͳͷΤϯδχΞҙͷݴޠ͕͑Δͱ ͍͏લఏͷͱͳΜͱ͔ͳ͍ͬͯΔ • ϓϩδΣΫτʹඞཁͳٕज़ͷҧ͍େ͖͘ͳͬ ͖͍ͯͯΔ ❖ݟࢿ࢈ͷࢄ •
ผͷ͜ͱΛͬͯΔͱڞৼ͕ੜ·Εʹ͍͘
৽ݴޠಋೖͰؾΛ͚͍ͭͯΔ͜ͱ ❖Λղܾ͢ΔͨΊʹຊʹඞཁ͔? ❖νʔϜ͕ड͚ೖΕΒΕΔ͔? • Ұ࣌తʹ૿Ճ͢ΔίετΛड͚ೖΕΒΕΔ͔? • Ϧʔυ͢Δਓ͕͍Δ͔? ϑΥϩϫʔ͕͍Δ͔? ‣ ձࣾʹఆணͤ͞Δͱ͜Ζ·ͰΛݟਾ͑Δ
৽ݴޠಋೖͰؾΛ͚͍ͭͯΔ͜ͱ ❖ݴޠͷίϛϡχςΟ׆ൃ͔? • ϝϯςφϯε͢Δͻͱ͕͍Δ͔? • ϥΠϒϥϦॆ࣮͍ͯ͠Δ͔? • ͯͳ͕ߩݙ͍͚ͯ͠Δ͔?
৽ݴޠ࠾༻ͷϓϩηε ❖ٕज़άϧʔϓ͕அ • ٕज़άϧʔϓ = ΤϯδχΞԣ۲ͷ৫ • ར༻͍ͨ͠ਓ͕ٕज़άϧʔϓʹਃ • CTOνʔϑ͕ώΞϦϯά͠ͳ͕Βܾఆ
• ݴޠ x ༻్͝ͱʹར༻ͯ͠Α͍͔ఆΊΔ • ඞཁҎ্ʹ͕രൃ͢ΔͷΛ͙
εϜʔζʹݴޠΛಋೖ͢ΔͨΊʹ ❖ΤϯδχΞͷதͰݟධՁΛूΊ͓ͯ͘ • ݴޠͷษڧձΛ։࠵ • झຯΠϯλʔϯɺϥϘϓϩδΣΫτͰධՁ ❖ࣗવʹಋೖ͍͚ͯ͠Δ͔Ͳ͏͔ͷΛ࡞Δ • ແཧͦ͏ͳΒࣗવͱཱͪফ͑Δ
ࠓޙ৽ݴޠಋೖ͍͔ͯ͘͠? ❖ඞཁʹԠͯ͡࠷దͨ͠ݴޠΛ͍͖͍ͬͯͨ • Web։ൃͷఆٛࠓޙ֦େ͍͖ͯͦ͠͏ • ৽͍͠ݴޠొ͢ΔͩΖ͏ ❖ͱ͍͑૿͑͗͢ΔͷࠔΔ • ΤϯδχΞͷྗΛͲΜͲΜߴΊΔ? ݴޠ͝ͱͷڭ
ҭ੍Λॆ࣮͢Δ? • ͦͦ͜͜ࠔΓͭͭ͋ΔͷͰ͍ΖΜͳ͓Λฉ͖͍ͨ
ݸਓతؾʹͳΓݴޠ ❖Node • ϦΞϧλΠϜੑ͕ඞཁͳͱ͖ʹ ❖Elixir • োੑ͕ΊͪΌͪ͘Όඞཁͳͱ͖ʹ ❖Rust • γεςϜϨϕϧͷϓϩάϥϛϯά͕ඞཁͳͱ͖ʹ
·ͱΊ
ͯͳͱϓϩάϥϛϯάݴޠ ❖ͨ͜͠ͱ • ͯͳͷϓϩάϥϛϯάݴޠͷྺ࢙ • ݴޠબͷࢹϓϩηεࠓޙʹ͍ͭͯ ❖Web։ൃͷ͕ΓʹదԠ͍ͯͨ͘͠Ίʹ • ৽ͨͳݴޠͷಋೖ͍ͯ͘͠ •
͜Ε·ͰͷલఏͰ͘͠ͳΓͦ͏ Λ͍͖͍ͯͨ͠ ❖࠙ձͰͥͻօ͞Μͷ͓͖͔͍ͤͯͩ͘͞ʂ