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
290
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.8k
Other Decks in Programming
See All in Programming
組織で育むオブザーバビリティ
ryota_hnk
0
170
CSC307 Lecture 04
javiergs
PRO
0
650
Implementation Patterns
denyspoltorak
0
280
Fragmented Architectures
denyspoltorak
0
140
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
190
Package Management Learnings from Homebrew
mikemcquaid
0
180
GISエンジニアから見たLINKSデータ
nokonoko1203
0
200
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2.1k
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
2
150
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
5.9k
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
150
AI時代の認知負荷との向き合い方
optfit
0
130
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.3k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
920
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
150
How to build a perfect <img>
jonoalderson
1
4.9k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
310
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
89
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
350
A Modern Web Designer's Workflow
chriscoyier
698
190k
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 • ৭ʑϦϦʔε͞ΕͯΔ͚Ͳɺجຊͦ͜·Ͱ৽͍͠ͷͰͳ ͍ɻ • خ͍͠ͷଟ͍ɻΑΓྑ͘͢ΔͨΊͷεςοϓόΠεςοϓͷ ਐԽ͕خ͍͠ɻ • ֵ৽తͳਐԽͰͳ͘ɺਐతͳਐԽ