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
Node.js v22 で変わること
Search
Yosuke Furukawa
PRO
April 24, 2024
Programming
13
4.9k
Node.js v22 で変わること
2024/04/24 令和トラベルで発表した Node.js v22 で変わることの話です。
Yosuke Furukawa
PRO
April 24, 2024
Tweet
Share
More Decks by Yosuke Furukawa
See All by Yosuke Furukawa
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
14
2.2k
Strip Types と Storage
yosuke_furukawa
PRO
4
290
Module Harmony について
yosuke_furukawa
PRO
3
1.4k
LTのやり方
yosuke_furukawa
PRO
16
2k
AppRouter Panel Talk
yosuke_furukawa
PRO
3
650
リアーキテクトと開発生産性について
yosuke_furukawa
PRO
25
9.2k
JavaScript Server Runtime History
yosuke_furukawa
PRO
9
3.6k
tc39 x jsconf.jp Panel Discussion
yosuke_furukawa
PRO
0
1.7k
フロントエンドの開発生産性とは
yosuke_furukawa
PRO
18
11k
Other Decks in Programming
See All in Programming
REXML改善のその後
naitoh
0
160
Scala におけるコンパイラエラーとの付き合い方
chencmd
2
350
What is Parser
yui_knk
8
3.6k
実践 Advanced CallKit 〜快適な通話の実現に向けて〜
mot_techtalk
3
120
Modular Monolith Go Server with GraphQL Federation + gRPC
110y
1
570
エラーレスポンス設計から考える、0→1開発におけるGraphQLへの向き合い方
bicstone
5
960
Prompt Cachingは本当に効果的なのか検証してみた.pdf
ttnyt8701
0
490
2024 컴포즈 정원사
jisungbin
0
150
快適な開発と高セキュリティを実現するCryptoKitを活用したCoreDataのデータ暗号化術
grandbig
1
320
私の考える初学者がBlazorできるまでの学習方法
tomokusaba
1
250
Amebaチョイス立ち上げの裏側 ~依存システムとの闘い~
daichi_igarashi
0
220
初めてのiOS関連GitHub ActionsをMarketplaceに公開するまでの実録
konifar
3
200
Featured
See All Featured
Navigating Team Friction
lara
183
13k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
278
13k
Adopting Sorbet at Scale
ufuk
72
8.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
46
48k
The Mythical Team-Month
searls
218
43k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
230
17k
Being A Developer After 40
akosma
83
580k
Imperfection Machines: The Place of Print at Facebook
scottboms
263
13k
For a Future-Friendly Web
brad_frost
174
9.3k
Bash Introduction
62gerente
608
210k
Rebuilding a faster, lazier Slack
samanthasiow
78
8.5k
A Tale of Four Properties
chriscoyier
155
22k
Transcript
Node.js v22 ͰมΘΔ͜ͱ 2024/4/24 @ ྩτϥϕϧ
X: @yosuke_furukawa Github: yosuke-furukawa
Node.js v21 => v22 ͰมΘͬͨ͜ͱΛ· ͱΊ·͢
໔ • v21 Ͱ͢ͰʹೖͬͯΔͷؚΈ·͢ • 21 ͱ 22 Major
Version up Ͱ͋ΓɺػೳͷՃ Minor Version up Ͱ͢ͰʹߦΘΕͯΔͷଟ͍ͨΊ
1ݸ!!!
Ϛείοτര
Ϛείοτ
Ϛείοτ • ࣮ੲ͔ΒϚείοτΩϟϥΫλʔͱͯ͠ΧϝͱϩέοτͷΞ ΠσΞ͋ͬͨɻ
αΫαΫߦ͘Αʂ2ݸ!!!
require(ESM)
require(ESM) • ͜Ε·Ͱͷঢ়گ • Node.js ٴͼ JS ʹ̎ͭͷmodule load ํ͕ࣜ͋Δ
• ESM ͱ CJS • ैདྷ͋ͬͨͷ͕ CJS, 2015Ҏ߱ʹͰ͖ͨͷ͕ESM • ESM ͔Β CJS ಡΊ͕ͨɺٯͷCJS͔ΒESMΛಡΉ͜ͱ͕Ͱ͖ͳ͔ͬͨ
require(ESM) • ྫ͑ΔͳΒɺ USB-C ͱ USB-A Έ͍ͨͳɾɾɾʁ • USB-CରԠσόΠε USB-CɺUSB-A྆ํରԠͰ͖ΔʢΞμϓλചͬͯΔ͠ɺن֨
తʹೝΊΒΕͯΔʣ • USB-AରԠσόΠεUSB-C͔Βܨ͛ͳ͍ɻʢΞμϓλചͬͯΔ͚Ͳɺن֨֎ͰೝΊ ΒΕͯͳ͍ʣ • CରԠ AରԠ AରԠ CରԠ
require(ESM) • ͖݅Ͱ CJS => ESM ೝΊΔ͜ͱʹͳͬͨ • ͖ͬ͞ͷྫͰݴ͑ɺ USB-A
σόΠε͔Β USB-C ͷม͕ ن্֨ೝΊΒΕΔΑ͏ʹͳͬͨɻ • ݅͋ΔɺதͰ top-level-await Λ͍ͯ͠Δͱμϝ • USB-A=>USB-CUSB-Cͷಠࣗػೳ͑ͳ͍ͷͱಉ͡
require(ESM) • --experimental-require-moduleϑϥά͕ࠓඞཁ • ͭ·Γ·࣮ͩݧஈ֊ • ࠓޙϑϥάແ͠Ͱ͑ΔΑ͏ʹ͍ͯ͘͠༧ఆ
3ݸʂʂʂ
v8 Maglev
v8 Maglev • v8 ͱ͍͏ JavaScript ࣮ߦΤϯδϯ͕มΘͬͨɻ • Just In
Time Compiler ʹ֊͕͋Δɻ • ࠓ·Ͱ Ignition, Sparkplug, TurboFan ͷ3ͩͬͨͷ͕ɺ4ʹ ͳͬͨɻ Ignition, Sparkplug, Maglev, TurboFan
v8 Maglev • ઈͬ͘͟Γݴ͏ͱ: • 3ஈมΪΞ͔Β4ஈมΪΞʹมΘͬͨ • ΪΞ͕૿͑Δ㲈͍ΖΜͳہ໘ʹରԠͰ͖Δ • ݁Ռɺੑೳ໘Ͱશମతʹߴʹɻ
v8 Maglev • Node.js ͷதͰݴ͏ͱɺServer Side ͷվળͱ͍͏ΑΓCLIΈ ͍ͨͳγϣʔτλΠϜͰ͏Α͏ͳΞϓϦέʔγϣϯͰվળ͞ ΕͯΔɻ •
tsc ࣮ߦ, linter, formatter etc
4ݸʂʂʂ
node --run
node --run • npm run hogehoge Ͱ࣮ߦ͍ͯͨ͠ script ࣮ߦʹ৽͍͠ํ๏͕ ೖͬͨɻ
• node --run hogehoge Ͱ࣮ߦՄೳ • ͜ΕʹΑΓɺ npm ্ཱͪ͛·Ͱͷىಈ࣌ؒΛݮΒͯ͠ύ ϑΥʔϚϯεվળͰ͖ΔΑ͏ʹͳ͍ͬͯΔɻ
node --run • npm run test ΑΓ node --run test
ͷํ͕͍ͬͯ͜ͱ • దͳڥͰ࣮ߦͨ݁͠Ռͩͱ100msલޙ͍ɻ
5ݸʂʂʂ
fs.glob, fs.globSync
fs.glob,fs.globSync import { glob } from 'node:fs/promises'; for await (const
entry of glob('**/*.mjs')) { console.log(entry); } // foo.mjs // bar/baz.mjs // hoge/fuga/piyo.mjs
͜Μͳײ͡Ͱ
Node.js v22 • ৭ʑϦϦʔε͞ΕͯΔ͚Ͳɺجຊͦ͜·Ͱ৽͍͠ͷͰͳ ͍ɻ • خ͍͠ͷଟ͍ɻΑΓྑ͘͢ΔͨΊͷεςοϓόΠεςοϓͷ ਐԽ͕خ͍͠ɻ • ֵ৽తͳਐԽͰͳ͘ɺਐతͳਐԽ