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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yosuke Furukawa
PRO
June 30, 2018
Programming
3.1k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
リクルートテクノロジーズの技術動向
Java/Go のOB,OG会で発表した リクルートテクノロジーズの技術動向の話です。
Yosuke Furukawa
PRO
June 30, 2018
More Decks by Yosuke Furukawa
See All by Yosuke Furukawa
デザインシステムが必須の時代に
yosuke_furukawa
PRO
2
240
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
10
5.2k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.8k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
350
Removing Corepack
yosuke_furukawa
PRO
9
2k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
3.1k
Strip Types と Storage
yosuke_furukawa
PRO
4
520
Module Harmony について
yosuke_furukawa
PRO
4
1.9k
LTのやり方
yosuke_furukawa
PRO
16
3k
Other Decks in Programming
See All in Programming
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
260
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
3
4.3k
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
150
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
150
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
840
継続モナドとリアクティブプログラミング
yukikurage
3
560
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
160
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.4k
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
120
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
260
えっ!!コードを読まずに開発を!?
hananouchi
0
190
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
140
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
247
13k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
330
The Curious Case for Waylosing
cassininazir
1
430
Git: the NoSQL Database
bkeepers
PRO
432
67k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
63
55k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
New Earth Scene 8
popppiees
3
2.4k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
410
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
Building an army of robots
kneath
306
46k
How STYLIGHT went responsive
nonsquared
100
6.2k
Transcript
ϦΫϧʔτςΫϊϩδʔ ζͷٕज़બఆ 2018/06/30 @ freee גࣜձࣾ / Java/GoݚमOBձ
Twitter: @yosuke_furukawa Github: yosuke-furukawa
2018/11/23 - 24 Node ֶԂࡇ։࠵
JS Quiz
ҎԼͷ݅Λຬͨ͢ a objectΛ ࡞ͬͯΈΔ var a = { // ?
} if ( (a >= 1 && a <= 2) && (a >= 3 && a <= 4) && (a >= 5 && a <= 6) ) { console.log('pass') }
ճ var a = { i: 1, valueOf() { return
this.i++ } } if ( (a >= 1 && a <= 2) && (a >= 3 && a <= 4) && (a >= 5 && a <= 6) ) { console.log('pass') }
ϦΫϧʔτςΫϊϩδʔζͷ ٕज़બఆ
Java Node.js Go ϦΫϧʔτςΫϊϩδʔζͰͬͯΔαʔόα Πυݴޠ Ruby Erlang Clojure Kotlin Python
Java Node.js Go ϦΫϧʔτςΫϊϩδʔζͰͬͯΔαʔόα Πυݴޠ Ruby Erlang Clojure Kotlin Python
ׂͱͨ͘͞Μͷٕज़Λͬͯ ͍Δɻ
ϦΫϧʔτςΫϊϩδʔζͷඪ ४తͳߏ • Backend For Frontends #SPXTFS #'' .JDSP4FSWJDF .JDSP4FSWJDF
.JDSP4FSWJDF
ϦΫϧʔτςΫϊϩδʔζͷඪ ४తͳߏ • Backend For Frontends #SPXTFS #'' .JDSP4FSWJDF .JDSP4FSWJDF
.JDSP4FSWJDF ͜ͷαʔό)5.-Λ࡞ͬ ͨΓɺ"1*Λ·ͱΊͨΓɺηο γϣϯཧͨ͠Γ͢Δ
ϦΫϧʔτςΫϊϩδʔζͷඪ ४తͳߏ • Backend For Frontends #SPXTFS #'' .JDSP4FSWJDF .JDSP4FSWJDF
.JDSP4FSWJDF ͬͪ͜"1*αʔόɺ%#ͱ ଓͨ͠ΓɺpMFॻ͖ग़ͨ͠ Γɺ֎෦"1*ͱܨ͍ͩΓɻ
ͦΕͧΕ͖ɾෆ͖͕͋Δ • BFF • HTMLΛ࡞ΔखલɺϑϩϯτΤϯυΤϯδχ Ξ͕৮Γ͍͢γεςϜͰ͋Δඞཁ͕͋Δ • APIΛͨ͘͞Μ͛ΔͷͰɺඇಉظϑϨϯυ ϦʔͰ͋ͬͯ΄͍͠
ͦΕͧΕ͖ɾෆ͖͕͋Δ • Backend • ϏδωεϩδοΫͱDBΞΫηε͕ଟ͍ • τϥϯβ͘γϣφϧͳॲཧͱ͖ͬͪΓͨ͠ ྫ֎ϋϯυϦϯά • ʢܕ͕΄͍͠ʣ
ϦΫϧʔτςΫϊϩδʔζͷඪ ४తͳߏ • Backend For Frontends #SPXTFS #'' .JDSP4FSWJDF .JDSP4FSWJDF
.JDSP4FSWJDF ͬͪ͜/PEFKTͰॻ͍ͯΔ ͬͪ͜+BWBPS(PͰॻ͍ ͯΔɻ
ϦΫϧʔτςΫϊϩδʔζ • ϑϩϯτΤϯυNode.jsͰॻ͘ • Express, webpack, babel, etc etc •
όοΫΤϯυGo or JavaͰॻ͘ʢঃʑʹGo Λ૿ͯ͠Δ࠷தʣ • echo, DI container, Πϯϑϥܥπʔϧ etc etc
ଟछଟ༷ͳٕज़Λͬͯͷ લʹ͋Δ՝Λղܾ͍ͯ͘͠
GoͰDI container • DI ContainerΛϝϯόʔ͕࡞ͬͯ͘Εͨ ෳͷ+BWBΤϯδχΞʹ(PΛॻ͔ͤΔͨΊɺςετ Λॻ͖͘͢͢ΔͨΊ
PythonͰBig Queryͷςετ πʔϧ • bqspecΛϝϯόʔ͕࡞ͬͯ͘Εͨ • yamlͰsqlͷϦΫΤετͱΓͷνΣοΫΛ ॻ͘͜ͱ͕Ͱ͖Δπʔϧ #JH2VFSZΛॻ͘σʔλΞφϦετͷφϨοδΛς ετͱ͍͏ܗͰܗࣜԽ͢ΔͨΊ
Node.jsͰAPI mock/stub • BFFͱόοΫΤϯυͰAPI௨৴Λstub͢ΔϞ δϡʔϧΛ࡞ͬͯΔ "1*ͷTUVCʹͳΓɺόοΫΤϯυͷαʔόʹς ετΫϥΠΞϯτʹͳΔπʔϧΛ։ൃ
͜͏͍͏ਓΛͬͱ૿ͯ͠ ͍͖͍ͨ͠ɺ͜͏͍͏ࣄྫΛ ͬͱ૿͍ͨ͠
Ͳ͏͍ͯ͠Δ͔
άϧʔϓϚωʔδϟͱͯ͠ҰԠ શ෦Ѳ͢ΔΑ͏ʹ͍ͯ͠Δ • Node.js͚ͩ͡Όͳ͘ɺGoɻ • ୈ6ظ Go ݚम(ϥΠτ൛)डߨੜ • ͪͳΈʹୈNظ
Java ݚमଔۀੜʂʂ
ݚमͱ͍͏ܗͰجૅྗ্Λఏڙ͠ɺ ࣮Ҋ݅ͱ͍͏ܗͰԠ༻ྗ্ͤ͞Δ • ݚमجຊతʹϝϯόʔʹड͚ͤ͞ΔΑ͏ ʹ͍ͯ͠Δ • طʹ2໊ଔۀɺ1໊डߨதɺདྷظ͞Βʹ૿ ͢ɻ • Ҋ݅ͰGoΛ࠾༻͍ͯ͠Δʢ૿ͯ͠Δʣ
ݚमड͚ͯ͠Έͯ • 1ͰJavaݚमड͚ͯͨͱ͖ࢹڱ͔ͬ ͨɻ • ։ൃܦݧΛੵΜͰ͔Βࠓͳࣲ͓ా͞ΜͷGoݚ मΛड͚Δͱ࣭Ͱ͖Δ͜ͱ͕ҧ͏ɻ
ݚमड͚ͯ͠Έͯ
ݚमड͚ͯ͠Έͯ • ܦݧΛੵΜͰ͔Βฉ͚Δ͜ͱ͕૿͑ͯࠓͳ͓ ָ͍͠ɻ • ձࣾʹࣲా͞ΜΛݺΜͰݚमड͚ͤͯ͞Β ͓͏ɻ • ͕ࣗ1Ͱड͚ͨྑ͔ͬͨ͜ͱϝϯόʔ ʹܦݧͯ͠Β͍͍ͨ
ਃ͠༁ఔͷ Node.js࠷৽ಈ
Node.js v10.5.0 released • Worker (Thread)͕ೖͬͨ • Node.js ͜Ε·Ͱsingle thread͕ͩͬͨɺ
Multi Threadϓϩάϥϛϯάग़དྷΔΑ͏ʹ • ࠷ۙNode.jsCPUϔϏʔͳॲཧ͕૿͖͑ͯ ͨ
Node.js has various use cases
Node.js has various use cases &WFSZUPPMTGSBNFXPSLTIBT$16JOUFOTJWFUBTLT
History of concurrent Node.js /PEFKT #FGPSFW 4JOHMF1SPDFTT 4JOHMF5ISFBE
History of concurrent Node.js /PEFKT .BTUFS1SPDFTT $IJME 1SPDFTT $IJME 1SPDFTT
$IJME 1SPDFTT $IJME 1SPDFTT
History of concurrent Node.js /PEFKT .BTUFS1SPDFTT $IJME 1SPDFTT $IJME 1SPDFTT
$IJME 1SPDFTT $IJME 1SPDFTT .BTUFS1SPDFTT DBOGPSLDIJMEQSPDFTT W
History of concurrent Node.js /PEFKT .BTUFS1SPDFTT 8PSLFS 8PSLFS 8PSLFS 8PSLFS
8PSLFS 8PSLFS
History of concurrent Node.js /PEFKT .BTUFS1SPDFTT 8PSLFS 8PSLFS 8PSLFS 8PSLFS
8PSLFS 8PSLFS Ϛελʔϓϩηε͔Β8PSLFS5ISFBEΛىಈ͢ΔɺεϨου ͳͷͰϓϩηεΑΓىಈܰྔɻ
babel-core using single thread. target files (ES6) transpiled code (ES5)
babel-core using child_process .BTUFS target files Send File transpiled
babel-core using Worker /PEFKT .BTUFS target files transpiled Send File
Result pMF OVNCFST CBCFMDPSF VTJOHTJOHMFUISFBE CBCFMDPSF VTJOHDIJMEQSPDFTT CBCFMDPSF VTJOHXPSLFS
NT NT NT NT NT NT NT NT NT NT NT NT NT NT NT
Node.js Worker Λͬͯ৽͠ ͍ϥΠϒϥϦΛ࡞͍ͬͯ͘ • SSRͷߴԽ • babel, webpackͷߴԽ etc
• ϦΫϧʔτςΫϊϩδʔζͰ৽͍ٕ͠ज़Λݚ ڀ՝ͱͯ͠৽͍͠औΓΈΛ͍ͯ͘͠ɻ
Thank you!!