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
6.6k
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
デザインシステムが必須の時代に
yosuke_furukawa
PRO
2
190
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
10
4.9k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.5k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
300
Removing Corepack
yosuke_furukawa
PRO
9
1.8k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
3k
Strip Types と Storage
yosuke_furukawa
PRO
4
470
Module Harmony について
yosuke_furukawa
PRO
4
1.8k
LTのやり方
yosuke_furukawa
PRO
16
2.9k
Other Decks in Programming
See All in Programming
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
140
CSC307 Lecture 04
javiergs
PRO
0
660
「ブロックテーマでは再現できない」は本当か?
inc2734
0
1k
Basic Architectures
denyspoltorak
0
680
疑似コードによるプロンプト記述、どのくらい正確に実行される?
kokuyouwind
0
390
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
310
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
7.4k
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
170
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
310
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
650
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
180
dchart: charts from deck markup
ajstarks
3
1k
Featured
See All Featured
Exploring anti-patterns in Rails
aemeredith
2
250
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
590
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
120
Typedesign – Prime Four
hannesfritz
42
2.9k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
140
Are puppies a ranking factor?
jonoalderson
1
2.7k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.2k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
450
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 • ৭ʑϦϦʔε͞ΕͯΔ͚Ͳɺجຊͦ͜·Ͱ৽͍͠ͷͰͳ ͍ɻ • خ͍͠ͷଟ͍ɻΑΓྑ͘͢ΔͨΊͷεςοϓόΠεςοϓͷ ਐԽ͕خ͍͠ɻ • ֵ৽తͳਐԽͰͳ͘ɺਐతͳਐԽ