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
740
はてなにおけるプログラミング言語の歴史とこれから
hakobe (Yohei Fushii)
October 09, 2018
Tweet
Share
More Decks by hakobe (Yohei Fushii)
See All by hakobe (Yohei Fushii)
ざっとわかるPython
hakobe
4
6.9k
はてなで一人前のエンジニアになる方法
hakobe
3
6.9k
契約による設計の紹介
hakobe
6
21k
アクターによる 並行処理アプケーション アーキテクチャ
hakobe
4
3.5k
Scala In Perl Company
hakobe
11
12k
TDDの練習 Coding Kata の実践
hakobe
0
1.4k
なめらかにGHEに移行する方法
hakobe
19
7.9k
開発フロー@はてなブックマーク
hakobe
0
170
Git on WebApp with Perl
hakobe
1
3.9k
Other Decks in Technology
See All in Technology
GraphRAG グラフDBを使ったLLM生成(自作漫画DBを用いた具体例を用いて)
seaturt1e
1
160
GCASアップデート(202508-202510)
techniczna
0
110
プレイドのユニークな技術とインターンのリアル
plaidtech
PRO
1
540
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
2
170
進化する大規模言語モデル評価: Swallowプロジェクトにおける実践と知見
chokkan
PRO
1
320
ヘンリー会社紹介資料(エンジニア向け) / company deck for engineer
henryofficial
0
430
ざっくり学ぶ 『エンジニアリングリーダー 技術組織を育てるリーダーシップと セルフマネジメント』 / 50 minute Engineering Leader
iwashi86
6
3.6k
頭部ふわふわ浄酔器
uyupun
0
240
AI機能プロジェクト炎上の 3つのしくじりと学び
nakawai
0
170
実践マルチモーダル検索!
shibuiwilliam
1
440
猫でもわかるAmazon Q Developer CLI 解体新書
kentapapa
1
160
オブザーバビリティが育むシステム理解と好奇心
maruloop
3
1.7k
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Automating Front-end Workflow
addyosmani
1371
200k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Java REST API Framework Comparison - PWX 2021
mraible
34
8.9k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Rails Girls Zürich Keynote
gr2m
95
14k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
A designer walks into a library…
pauljervisheath
209
24k
Stop Working from a Prison Cell
hatefulcrawdad
272
21k
Visualization
eitanlees
150
16k
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։ൃͷ͕ΓʹదԠ͍ͯͨ͘͠Ίʹ • ৽ͨͳݴޠͷಋೖ͍ͯ͘͠ •
͜Ε·ͰͷલఏͰ͘͠ͳΓͦ͏ Λ͍͖͍ͯͨ͠ ❖࠙ձͰͥͻօ͞Μͷ͓͖͔͍ͤͯͩ͘͞ʂ