Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Node.js / Deno 徹底討論の時のスライド
Yosuke Furukawa
PRO
March 31, 2022
Programming
2
2.7k
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
React Server Components について
yosuke_furukawa
PRO
0
71
A Philosophy of Software Design 後半
yosuke_furukawa
PRO
12
3.1k
Node.js 最新動向 TFCon 2022
yosuke_furukawa
PRO
6
4.1k
Browser の話
yosuke_furukawa
PRO
4
240
A Philosophy of Software Design 前半
yosuke_furukawa
PRO
25
7.7k
開発組織の持続可能性について
yosuke_furukawa
PRO
19
12k
How I run JS / Web Community
yosuke_furukawa
PRO
0
2.2k
性能に関する考え方
yosuke_furukawa
PRO
7
6.5k
レビューの仕方
yosuke_furukawa
PRO
57
29k
Other Decks in Programming
See All in Programming
Edge Side Frontend という新領域
mizchi
24
10k
Pythonによる開発をアップデートするライブラリの紹介
daikikatsuragawa
1
1.3k
サーバーレスパターンから学ぶデータ分析基盤構築 / devio2022
kasacchiful
0
520
Babylon.jsで作ったsceneをレイトレーシングで映えさせる
turamy
1
220
モデルの定義に基づくバリデーションを実現するためのpydantic入門
daikikatsuragawa
0
120
How to start contributing to Kubernetes Projects
ydfu
0
150
Another 40 years of Commodore 64
mehowte
0
110
Lookerとdbtの共存
ttccddtoki
0
670
ちょっとつよい足トラ
logilabo
0
420
How to Test Your Compose UI (Droidcon Berlin 2022)
stewemetal
1
130
ベストプラクティス・ドリフト
sssssssssssshhhhhhhhhh
1
220
How GitHub Supports Vim License Detection, The Five Years Journey
othree
1
400
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
34
1.4k
5 minutes of I Can Smell Your CMS
philhawksworth
196
18k
Teambox: Starting and Learning
jrom
123
7.7k
Streamline your AJAX requests with AmplifyJS and jQuery
dougneiner
127
8.5k
YesSQL, Process and Tooling at Scale
rocio
157
12k
Stop Working from a Prison Cell
hatefulcrawdad
262
17k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
29
4.4k
The Mythical Team-Month
searls
210
39k
Become a Pro
speakerdeck
PRO
3
910
Rails Girls Zürich Keynote
gr2m
87
12k
Principles of Awesome APIs and How to Build Them.
keavy
113
15k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
655
120k
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: