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
640
はてなにおけるプログラミング言語の歴史とこれから
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.7k
契約による設計の紹介
hakobe
6
20k
アクターによる 並行処理アプケーション アーキテクチャ
hakobe
4
3.4k
Scala In Perl Company
hakobe
11
12k
TDDの練習 Coding Kata の実践
hakobe
0
1.3k
なめらかにGHEに移行する方法
hakobe
19
7.7k
開発フロー@はてなブックマーク
hakobe
0
150
Git on WebApp with Perl
hakobe
1
3.8k
Other Decks in Technology
See All in Technology
[AWS JAPAN 生成AIハッカソン] Dialog の紹介
yoshimi0227
0
150
チームを主語にしてみる / Making "Team" the Subject
ar_tama
4
300
「最高のチューニング」をしないために / hack@delta 24.10
fujiwara3
21
3.4k
端末が簡単にリモートから操作されるデモを通じて ソフトウェアサプライチェーン攻撃対策の重要性を理解しよう
kitaji0306
0
170
よくわからんサービスについての問い合わせが来たときの強い味方 Amazon Q について
kazzpapa3
0
220
ガバメントクラウド単独利用方式におけるIaC活用
techniczna
3
270
CyberAgent 生成AI Deep Dive with Amazon Web Services / genai-aws
cyberagentdevelopers
PRO
1
480
Nix入門パラダイム編
asa1984
2
200
いまならこう作りたい AWSコンテナ[本格]入門ハンズオン 〜2024年版 ハンズオンの構想〜
horsewin
9
2.1k
分布で見る効果検証入門 / ai-distributional-effect
cyberagentdevelopers
PRO
4
690
10分でわかるfreee エンジニア向け会社説明資料
freee
18
520k
VPC間の接続方法を整理してみた #自治体クラウド勉強会
non97
1
820
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
66
9.9k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
664
120k
Speed Design
sergeychernyshev
24
570
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Six Lessons from altMBA
skipperchong
26
3.5k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Code Review Best Practice
trishagee
64
17k
Designing for Performance
lara
604
68k
Learning to Love Humans: Emotional Interface Design
aarron
272
40k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Happy Clients
brianwarren
97
6.7k
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։ൃͷ͕ΓʹదԠ͍ͯͨ͘͠Ίʹ • ৽ͨͳݴޠͷಋೖ͍ͯ͘͠ •
͜Ε·ͰͷલఏͰ͘͠ͳΓͦ͏ Λ͍͖͍ͯͨ͠ ❖࠙ձͰͥͻօ͞Μͷ͓͖͔͍ͤͯͩ͘͞ʂ