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
720
はてなにおけるプログラミング言語の歴史とこれから
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.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.8k
開発フロー@はてなブックマーク
hakobe
0
170
Git on WebApp with Perl
hakobe
1
3.9k
Other Decks in Technology
See All in Technology
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
27k
品質と速度の両立:生成AI時代の品質保証アプローチ
odasho
1
220
Claude Code に プロジェクト管理やらせたみた
unson
5
2.5k
生成AI時代 文字コードを学ぶ意義を見出せるか?
hrsued
1
810
ドメイン特化なCLIPモデルとデータセットの紹介
tattaka
2
580
Tech-Verse 2025 Global CTO Session
lycorptech_jp
PRO
0
1.7k
ビズリーチが挑む メトリクスを活用した技術的負債の解消 / dev-productivity-con2025
visional_engineering_and_design
3
6.8k
Tokyo_reInforce_2025_recap_iam_access_analyzer
hiashisan
0
180
MobileActOsaka_250704.pdf
akaitadaaki
0
110
KiCadでPad on Viaの基板作ってみた
iotengineer22
0
290
整頓のジレンマとの戦い〜Tidy First?で振り返る事業とキャリアの歩み〜/Fighting the tidiness dilemma〜Business and Career Milestones Reflected on in Tidy First?〜
bitkey
2
15k
LangChain Interrupt & LangChain Ambassadors meetingレポート
os1ma
2
290
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Testing 201, or: Great Expectations
jmmastey
42
7.6k
GitHub's CSS Performance
jonrohan
1031
460k
The Language of Interfaces
destraynor
158
25k
GraphQLとの向き合い方2022年版
quramy
49
14k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Optimizing for Happiness
mojombo
379
70k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
The Pragmatic Product Professional
lauravandoore
35
6.7k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
For a Future-Friendly Web
brad_frost
179
9.8k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
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։ൃͷ͕ΓʹదԠ͍ͯͨ͘͠Ίʹ • ৽ͨͳݴޠͷಋೖ͍ͯ͘͠ •
͜Ε·ͰͷલఏͰ͘͠ͳΓͦ͏ Λ͍͖͍ͯͨ͠ ❖࠙ձͰͥͻօ͞Μͷ͓͖͔͍ͤͯͩ͘͞ʂ