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 / Deno 徹底討論の時のスライド
Search
Yosuke Furukawa
PRO
March 31, 2022
Programming
3
7.5k
Node.js / Deno 徹底討論の時のスライド
2022/3/17 Node学園38時限目のスライドです。
Yosuke Furukawa
PRO
March 31, 2022
Tweet
Share
More Decks by Yosuke Furukawa
See All by Yosuke Furukawa
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
3.8k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
190
Removing Corepack
yosuke_furukawa
PRO
9
1.5k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
2.6k
Strip Types と Storage
yosuke_furukawa
PRO
4
370
Module Harmony について
yosuke_furukawa
PRO
3
1.6k
LTのやり方
yosuke_furukawa
PRO
16
2.4k
AppRouter Panel Talk
yosuke_furukawa
PRO
3
750
Node.js v22 で変わること
yosuke_furukawa
PRO
13
5.8k
Other Decks in Programming
See All in Programming
React 19アップデートのために必要なこと
uhyo
6
1.1k
Djangoアプリケーション 運用のリアル 〜問題発生から可視化、最適化への道〜 #pyconshizu
kashewnuts
1
260
新宿駅構内を三人称視点で探索してみる
satoshi7190
2
110
メンテが命: PHPフレームワークのコンテナ化とアップグレード戦略
shunta27
0
280
Generating OpenAPI schema from serializers throughout the Rails stack - Kyobashi.rb #5
envek
1
320
Formの複雑さに立ち向かう
bmthd
1
900
『品質』という言葉が嫌いな理由
korimu
0
180
Software Architecture
hschwentner
6
2.1k
Kotlinの開発でも AIをいい感じに使いたい / Making the Most of AI in Kotlin Development
kohii00
0
120
データの整合性を保つ非同期処理アーキテクチャパターン / Async Architecture Patterns
mokuo
53
18k
CDK開発におけるコーディング規約の運用
yamanashi_ren01
2
210
Datadog Workflow Automation で圧倒的価値提供
showwin
1
100
Featured
See All Featured
Navigating Team Friction
lara
183
15k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
980
Being A Developer After 40
akosma
89
590k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.2k
A Philosophy of Restraint
colly
203
16k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Transcript
None
͜ͷରஊͷૂ͍ • ʮΒͳ͍͠ɺͲͬͪΛબΜͩΒྑ͍͔Θ͔Βͳ͍ʯ ͱ͍͏ঢ়گΛݮΒ͢ɻ ্ͬͨͰ/PEFKTΛ͏ ্ͬͨͰٕज़બͱͯ͠ਖ਼ ͍͠ํΛέʔεʹ߹Θͤͯऔ ࣺબͰ͖Δ Βͳ͍͠ɺͲͪΒΛબΜͩ Βྑ͍͔Θ͔Βͳ͍
্ͬͨͰ%FOPΛ͏
Node.js ͷྑ͍ͱ͜Ζ deno ͷྑ͍ͱ͜Ζ
Α͍ͱ͜Ζ • Node.js: αϙʔτମ੍ɺಛʹLTS͕͋Γɺ2ؒαϙʔτ͞ΕΔ • deno: πʔϧ͕ຊମʹϏϧτΠϯͰؚ·Ε͍ͯͯɺೖΕͨ͋ͱ͍͖ͳ Γ։ൃ͕ਐΊΒΕΔ • ಛʹܕඇৗʹڧ͍
Node.js ͷѱ͍ͱ͜Ζ deno ͷѱ͍ͱ͜Ζ
ΘΔ͍ͱ͜Ζ • deno: αϙʔτମ੍͕ऑ͍ • deno: ࠷৽ʹ্͛ͯ͘Εͱ͍͏ݴ͍ํʹͳΔ • ͪΐͬͱલͷϚΠφʔόʔδϣϯΛαϙʔτͯ͠΄͍͠ͱ͍͏ʹͳΓ͕ͪ •
࠷৽ʹ͍ͭͯདྷΕΔମྗ͕ඞཁʹͳΔ • Node.js: ܕͷαϙʔτ • Node.js: ϞδϡʔϧγεςϜ͕ΰλΰλ • CJS / ESM ͷରԠʹ͍ͭͯ
Node.js ͷվળ deno ͷվળ
վળ • Node.js => Deno : Deno ͬͯ npm ϞδϡʔϧΛαϙʔτ͢Δͬͯݴ͚ͬͯͨͲɺΰλΰλ
Ͳ͏͢Δͷ͔ʁ • Deno: ΰλΰλ͝ͱड͚ೖΕͯΔ • Node.js: ͦͨ͠ΒͲͬͪΰλΰλʹͳΔͷͰɾɾɾʁ • import fs from "node:fs"; ͜Μͳײ͡ʁ • import fs from "https://deno.land/std/fs/mod.ts"; • Deno: ίϛϡχςΟଆ npm ϞδϡʔϧͷޓੑʹରҙݟͩͬͨɻͰϦʔμʔޓ ੑΛਪਐͨ͠ɻͻͷ͞Θ͞Μͷҙݟ͖ͬΓ۠ผ͢ΔϥΠϯ͕͋Εྑ͍ͱࢥ͍ͬͯΔ
Web Standard ͷऔΓΈ ํ
Web Standard ͷऔΓΈํ • Deno: Web Standard ΛੵۃతʹऔΓೖΕΑ͏ͱ͢Δɻ • ੵۃతʹऔΓೖΕա͗ͳͷͰʁ
• ·ͩWICGͷϨϕϧͰऔΓೖΕΔͷ͍ͩͿૣ͗͢Δؾ͕͢Δ •
Tooling ʹ͍ͭͯ
tooling • deno: deno task ͱ͍͏ͷ͕ೖͬͨ (npm run Έ͍ͨͳͭ) •
deno.json ʹίϚϯυΛॻ͘ͱ࣮ߦ͞ΕΔ
Permission ʹ͍ͭͯ
Permission ʹ͍ͭͯ • mizchi: ࠷ॳؤு͚ͬͯͭͯΔɺͰ import ͨ͠ઌͰଞͷϝϯόʔ͔Β permission ͕ଞʹඞཁʹͳͬͯ͘Δɻ •
ѱҙͷ͋Δϝϯόʔ͕ͦΕΛݴ͖ͬͯͨΒ࣮ࡍ͙ͷ͍͠ • kt3k: mizchi ͞ΜʢίʔυΦʔφʔʣ͕ඞཁͱࢥͬͨ permission ͚ͩ༩͢Εྑ͍ͷͰɺͦΕΛڧݻʹकΔ͖ • mizchi: ͦΕΘ͔Δ͕ɺαϓϥΠνΣʔϯΞλοΫΛकΔʹ࡞Δଆͱ͏ଆͷ྆ํͰͷέΞ͕ඞཁͳͷͰͳ͍͔ͱࢥ͍ͬͯ Δ • ݖݶ͕ංେԽ͢ΔͷΤίγεςϜͷதͰΑ͋͘Δͷɺ Android ͱ͔ΞϓϦΛΠϯετʔϧ͢Δͱ͖ʹશͯͷݖݶΛཁ ٻ͖ͯͨ͠Γ͢Δ • martin: Node.js policy ػೳ͕͋ΔɻηΩϡϦςΟίϛϡχςΟͷͰ͋ͬͯҰͭͷςʔϚͰ͋Δ • policy.json ͰΞϐʔϧͰ͖ΔͷͰ͋ΕͦΕΛίϯτϦϏϡʔτͯ͠ଞͷਓʹͪΌΜͱηΩϡϦςΟͷྀΛΞϐʔϧͨ͠ ͍ • ͨͩ೦ͳ͕Βࠓ policy ͷػೳͦ͜·Ͱͳ͍ͬͯͳ͍ɻ
Node.js ͷਪ͠৽ػೳ deno ͷਪ͠৽ػೳ
ਪ͠ػೳ • ݹ: Single Executable Application • Martin: webcrypto ͕࣮͞ΕͨΑʂ
• kt3k: Deno task ͕࣮͞ΕͨΑʂ • mizchi: deno fetch ͕ϩʔΧϧʹରͯ͠Ͱ͖Δ wasmpack Λͦͷ·· ಡΈࠐΊͨ
Governance ʹ͍ͭͯ
Governance ʹ͍ͭͯ • deno: BDFL ϞσϧɺϦʔμʔ͕ܾఆΛ͢Δ • node.js: Open Governance
ϞσϧɺϦʔμʔෆࡏɺεςΞϦϯάίϛοςΟʔ͕ ܾΊΔɻ • martin: deno inc Ͱɺձࣾʹͳ͍ͬͯΔɺϦʔμʔ͕ܾΊΔ͚ͩͰͳ͓ͯۚ͘ ʹΑͬͯࠨӈ͞ΕΔ • kt3k: ͦΕ͔ͨ͠ʹͦ͏ɻϢʔβʔΛ্͛ΔΑ͏ʹͯ͠ɺ͓ۚΛՔ͙ඞཁ͕͋Δ • node ͷϞδϡʔϧΛαϙʔτ͢ΔͷϢʔβʔΛ্͛Δඞཁ͕͋ΔͨΊ
Node.js ͷࠓޙ deno ͷࠓޙ
ࠓޙ • mizchi: ͓ޓ͍Ճ͢Δػೳ͕ࣅ͍ͯΔɺӨڹΛड͚͍͋ͬͯΔɺ͖ͳํΛબΑ͍ͱ͍͏ະདྷʹͳΔɻ • ઈରަΘΒͳ͍ϥΠϯΛMicrosoft͕ʹ͗ͬͯΔɻ • ֦ுࢠͷলུՄ൱ϥΠϯ • kt3k:
Node.jsޓ͕Ͱ͖ΔΑ͏ʹͳΓɺϢʔβʔ͕denoʹ૿͑Δɺདྷͬͱ፰߅͢Δɻ • martin: Node.js ͷະདྷ Web Standard ͷػೳ͕ͬͱ૿͍͑ͯ͘ɻfetch ͷଞʹ Event Emitter ͱ͔৭ʑ૿ ͍͑ͯ͘ɻͬͱϒϥβϓϥοτϑΥʔϜؒͷޓੑ͕ߴ͘ͳΔͣɻ • test runner ͕ Node.js ʹೖΔ • deno ͷ࡞ઓ => deno inc ͕ microsoft ʹങΘΕΔ • furukawa: