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, Bun 最新動向とその所感について
Search
Yosuke Furukawa
PRO
March 14, 2025
Programming
5.2k
10
Share
Node.js, Deno, Bun 最新動向とその所感について
2025/3/14 toranoana.deno #20 で発表した内容です。
Yosuke Furukawa
PRO
March 14, 2025
More Decks by Yosuke Furukawa
See All by Yosuke Furukawa
デザインシステムが必須の時代に
yosuke_furukawa
PRO
2
230
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.7k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
340
Removing Corepack
yosuke_furukawa
PRO
9
1.9k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
3.1k
Strip Types と Storage
yosuke_furukawa
PRO
4
510
Module Harmony について
yosuke_furukawa
PRO
4
1.9k
LTのやり方
yosuke_furukawa
PRO
16
3k
AppRouter Panel Talk
yosuke_furukawa
PRO
3
900
Other Decks in Programming
See All in Programming
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
200
AI時代のUIはどこへ行く?その2!
yusukebe
16
5.5k
inferと仲良くなる10分間
ryokatsuse
1
290
さぁV100、メモリをお食べ・・・
nilpe
0
120
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
12
3.1k
AIエージェントの隔離技術の徹底比較
kawayu
0
450
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
400
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
430
Lessons from Spec-Driven Development
simas
PRO
0
110
Stage 3 Decorators でできること / できないこと / TSKaigi 2026
susisu
1
1.4k
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.3k
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
310
Featured
See All Featured
Exploring anti-patterns in Rails
aemeredith
3
380
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
210
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
470
Mind Mapping
helmedeiros
PRO
1
220
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Accessibility Awareness
sabderemane
1
130
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
280
Skip the Path - Find Your Career Trail
mkilby
1
130
ラッコキーワード サービス紹介資料
rakko
1
3.5M
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
230
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
340
RailsConf 2023
tenderlove
30
1.5k
Transcript
Node.js, Deno, Bun ࠷৽ಈͱ ͦͷॴײʹ͍ͭͯ 2025/03/14 @ toranoana.deno
X: @yosuke_furukawa GitHub: yosuke-furukawa
Node.js ࠷৽ಈͱઓུ • ࠷৽ಈ • TypeScript strip ϞʔυΛ࠾༻ • require(ESM)
Ͱ CJS ͱ ESM ͷஈ֊తҠߦΛαϙʔτ • EOLΛܴ͑ͨޙvulnerableͳϨϙʔτΛ͢Δ͔Ͳ͏͔ͳͲɺ EOLͷExtended Support ʹ͍ͭͯݴٴ
TypeScript strip mode • Denoͱ͔BunͰͬͯΔ .ts ϑΝΠϧͷܕͷ෦͚ͩΛநग़ ͯ͠ JavaScript ʹ࣮ͯ͠ߦ͢Δػೳ
• ୯ͳΔ strip ͳͷͰܕνΣοΫͱ͔͠ͳ͍ • ·ͨ enum namespace ͳͲͷTSಠࣗͷػೳαϙʔτ͞Ε ͍ͯͳ͍ʢ--experimental-transform-typesΛ͚ͭΔʣ
require(ESM) • ES Modules Ͱ require ͔ΒݺΔΑ͏ʹͳΔ • ͨͩ͠ Top
level await ͯ͠ΔϞδϡʔϧର֎ • A => B => C ͱґଘ͍ͯ͠Δͱ͖ʹ C ͕ESMʹͳͬͨͱ͜ΖͰ B͕CJSͩͱҠߦͰ͖ͳ͔͕ͬͨɺ͜Ε͔ΒC͕ESMͰB͔ Β require ͰݺΔͷͰҠߦ͕ஈ֊తʹਐΉ
EOL Support • EOL͕ΕͨޙͰݹ͍όʔδϣϯʹରͯ͠ Vulnerability Report Λ͍ͯ͘͠ํʹ • Node.js v16Λ͍ͬͯΔϢʔβʔ͕·ͩ·͍ͩΔ
• ݹ͍Node.jsΛԿʹΞοϓάϨʔυͤ͞Δ͔͕য • ͦΕͦΕͱͯ͠ɺࠓޙϢʔβʔ͕ͲͷNode.jsͷόʔδϣϯΛ͍ଓ͚͍ͯΔ͔Λཧ ղɾѲ͍ͯ͘͠ • HeroDev ͳͲ༻ϥΠηϯεͰԆαϙʔτ͢Δஂମग़͍ͯΔͨΊɺͦΕΒͱ࿈ܞ ΛऔΓͳ͕Β Extended EOL ࢹʹೖΕ͍ͯ͘ɻ
Node.js ࠷৽ಈαϚϦ • ཁଞͷϓϥοτϑΥʔϜʹޙ͍ͰػೳΛՃ͍ͯ͘͠ • ͞ΒʹEOLΛܴ͑ͨޙͷϨΨγʔͳNode.jsΛԿʹΞοϓά Ϩʔυ͍͖ͤͯ͞ɺ݈શͳঢ়ଶΛอ͔ͭΛ࣮ࢪ • ༻αϙʔτͰ͘EOLΛԆ͢Δ৫ग़͖͍ͯͯΔ ྑ͍ͱ͜ΖͲΓͭͭ͠ɺӡ༻໘ͰͷαϙʔτΛڧԽ͍ͯ͘͠
Deno ࠷৽ಈͱઓུ • ࠷৽ಈ • JSRΓ্͛ • Node.js Compatibility ্
• WASM module / OpenTelemetry ରԠͳͲͳͲ
JSRΓ্͛ • lint-rule Λ JSR ʹ publish ͢Δίϯςετ։࠵த • https://deno.com/blog/lint-rules-contest
• εςοΧʔͳͲΒ͑Δɻ • URL Import ໓ʹ͚ͯͷܒͳͲ • npm speci fi er ͚ͭͯͳ͍ͷؒҧ͍ • https://deno.com/blog/not-using-npm-speci fi ers-doing-it-wrong
Node.js Compatibility ্ • Node.js / npm ͱͷޓੑΛ্ͤ͞Δ • Next.js
͕ Deno Ͱಈͥ͘ʂʂʂ \űŒŕŰŖ!/ • https://deno.com/blog/nextjs-on-deno-deploy • ࠓੵۃతʹ sqlite ͳͲͷ৽APIΛରԠ͍ͯͬͯ͠Δ
WASM Module / Opentelemetry ରԠ • wasm ͕ module ͱͯ͠
import Ͱ͖ΔΑ͏ʹͳͬͨ • OpenTelemetry ϓϩτίϧʹରԠ͠ɺՄ؍ଌੑ্͕͕ͬͨ • etc
Deno ࠷৽ಈαϚϦ • ͳΜͱ͍ͬͯJSRΛྲྀߦΒͤΔ • npm ͔ΒΤίγεςϜΛҾ͖ܧ͍͗ͨ • ͦͷͨΊͷ Node.js
compat ΞήΞή • աڈͷ URL import ෛͷҨ࢈ Node.js / npm ͔ΒͲΕ͚ͩҨ࢈ΛҾ͖ܧ͛Δ͔͕ࠓޙͷ伴
Bun ࠷৽ಈͱઓུ • ࠷৽ಈ • Perf! Perf! Perf!! ύϑΥʔϚϯεͦ͜ਖ਼ٛʂʂ •
ඞཁͳΜɺͱΓ͋͑ͣશ෦ೖΕͱ͖·ͨ͠ʂʂʂ • Bun.sql, Bun.s3, ࠓ Bun.CSRF Ͱcsrf tokenݕূͰ͖ΔΑ͏ʹ͠· ͢ʂʂ • Node.js compatibility ্ʂʂʂ
Perf! Perf! Perf!! ύϑΥʔϚϯεͦ͜ਖ਼ٛ!! • Bunͷىಈ࣌ؒ5ms, Node.js 25ms!! 5ഒͩͧ5ഒʂʂ •
Bunͷhttp serve 59000 req/sec, Deno25000req/sec 2.4ഒͩ ͧ!! 2.4ഒ!! (ͪͳΈʹNode19000req/sec) • npm install ?? Bun install 25ഒ͍ͧʂʂʂ • https://bun.sh/docs/cli/install
ඞཁͳΜɺશ෦ೖΕͱ͖·ͨ͠!! • Bun.sql ͕ PostgreSQL ͷΫϥΠΞϯτʹʂʂࠓ MySQL ࣮͢ Δ༧ఆʂʂʢͳΜͪΎ͏໊લͩ...ʣ •
Bun.s3 ͕ Amazon S3 ͚ͩ͡Όͳ͘ɺCloudStorage ͱ͔ͷओͩͬͨ ΫϥυετϨʔδʹରԠʂʂʢͳΜͪΎ͏໊લͩ...ʣ • Bun.CSRF࣮ʂʂ Bun.CSRF.generate/verify ͰCSRFରࡦ͕Մೳ ʹʂʂʢ͍Δɾɾɾʁʣ
Node.js Compatibility ্!!! • Node.js test cases ΛͲΕ͚ͩpass͍ͯ͠Δ͔͕Ұྎવ • Next.js
? ࠷ॳ͔Βಈ͖·͚͢Ͳ? • ʢ͜͜ຊඍົɺશػೳ͕ಈ͘ͱݴͬͯͳ͍ʣ
Bun ࠷৽ಈαϚϦ • ύϑΥʔϚϯεͦ͜ਖ਼ٛ • ಠಛͷAPIηϯεʢ׳Εͳ͍ʣ • Node.js compat Λ্͍ͤͯ͘͞
ύϑΥʔϚϯεͱ͍͏Ұ൪ͷثΛҾͬఏ͛ͯͲ͜·ͰϢʔβʔΛ ֫ಘͰ͖Δ͔
ύωϧσΟεΧογϣϯ
͑ʔɺͰ͔͜͜Β ࢲ͕࢘ձͰ৭ʑฉ͍ͯΈ͍ͨͱࢥ͍·͢ɻ
ҰਓύωϧσΟεΧογϣϯΛͯ͠Έ·͢ Node.js: ݹ Deno: ݹ Bun: ݹ
Ұݸͷ࣭
WinterCG / WinterTC ʹ͍ͭͯ Ͳ͏ࢥͬͯ·͔͢ʁ
Node.js: ·͊جຊతʹϑΥϩʔ͍͔ͯ͘͠ͳɻ Minimum Common API Λ࡞ͬͯΔ James ͞Μ Node ͷ
TSC Ͱ͋Δ͠Ͷɻ
Deno: ඪ४ԽҕһձΛΉ͠Ζੵۃతʹࢧԉ͢Δ Goodbye WinterCG, Welcome WinterTC https://deno.com/blog/wintertc
Bun: ඪ४ԽʁͳʹͦΕ͓͍͍͠ͷʁ ஊஊ͆͆ ·͊WinterCGʹࢀՃ͠ͳ͍͚Ͳɺ༷͕ ·ͱ·͔ͬͯΒͰ͖Δͱ͜Ζ͔Βͬͯ͜͏ ͔ͳɻͦͦಉ͡ΰʔϧࢦͯ͠ͳ͍͔ͳ
WinterTC • WinterCG (Community Group) ͔Β WinterTC (Technical Committee) ʹɻ
• WinterTC༷ܾΊΛத৺ʹɻCGࠓ͜Ε͔Β࣮ఏҊ Λத৺ʹɻ • WinterTC͕ minimal API ΛܾΊ͍ͯ͘
My Opinion ※શͯݹͷҙݟͰ͋Γɺ࣮ࡍͷެࣜݟղ ͱҧ͍·͢ɻίϯτͰ͢ɻ
WinterTC • ಠࢢ͕࡞ΒΕͨޙʹ2ҐҎԼ͕݁ୗ༷ͯ͠ͷඪ४ԽΛݴ͍ग़͢ͷׂͱ͜Ε· ͰWebͷதͰΑ͋ͬͨ͘ྲྀΕ • ͨͩɺطଘͷWeb API͔ΒͱΓ͋͑ͣ࣋ͬͯ͘Δͷ͋Μ·Γྑ͍Α͏ʹࢥ͑ͳ͍ɻ • ݸਓతʹͦΕͧΕ͕͋Δఔ࣮ΛਐΊͳ͕ΒϛχϚϜͰඞཁͳAPIΛܾΊ͍ͯ͘ ํ͕͍͍ͷͰͳ͍͔ɻ
• ༷ΛઌʹܾΊΔΜ͡Όͳ͘ɺ࣮͔Β༷Λى͜͢Α͏ͳྲྀΕͰ͋Εɺ bun ΓؾʹͳΔͷͰʁ
WinterTC • एׯݒ೦͍ͯ͠Δͷϒϥβͱҧͬͯͦ͜·Ͱͷଟ༷ੑΛϢʔβʔ͕ٻΊ ͯΔͷ͔ඍົͳؾ͕͍ͯ͠Δ • ϒϥβੑೳͱ͔ػೳ໘Ͱͷڝ૪͕աܹԽͨ͜͠ͱʹΑͬͯϢʔβʔ͕ଟ ༷ʹͳΓɺϚϧνϒϥβରԠ͕ٻΊΒΕͨ͜ͱͰඪ४༷͕ඞཁʹͳͬͨ • ҰํͰNode.js/Deno/BunͰ։ൃऀ͕ଟ༷Խ͢Δ͕࣌དྷΔͷ͔ʁདྷΔͱ͠ ͨΒͲ͏͍͏ঢ়گͳͷ͔Α͘Θ͔͍ͬͯͳ͍ɻϚϧνϓϥοτϑΥʔϜର
Ԡ͕ٻΊΒΕΔ࣌ʹͳ͔ͬͯΒඪ४Խ͕ඞཁʹͳͬͨΓ͢Δͷ͔ʁ
ೋݸͷ࣭
TypeScript օ͞Μαϙʔτͯ͠·͚͢Ͳɺ ͓ޓ͍ΛͲ͏ࢥͬͯ·͔͢ʁ
Node.js: ͎͘ʔ͆͆αϙʔτ͠·ͨ͆͆͠ ࣮5Ҏ্લ͔ΒϦΫΤετࣗମ͋ͬͨ ͷͰ͕͆͆͢ ͣͬͱٞͯͯ͠ࠓͳΜͱͳ͘ํ͕·ͱ ·ͬͨͷͰ࣮ͯ͠Έͨ࣍ୈͰ͆͆͢ ͝ҙݟืूதͰ͆͆͢
Deno: ࠓߋ Node.js ͕αϙʔτͨ͠ͱ͔ݴͬͯΔ ͚Ͳɺαϙʔτͬͯݴ͑ΜͷʁܕνΣοΫػ ೳͳ͍͠ɻɻɻ ͦΕͰαϙʔτʁ
Bun: ·͊ࢲܕνΣοΫ͠ͳ͍ΜͰ͚͢ͲͶw ܕνΣοΫͱ͔ͯ͠ύϑΥʔϚϯε্͕Μ ͳ͍͍ͬͯ͏͔ɺཁΓ·͢ʁ Ͳ͏ͤΈΜͳtscೖΕͯvscodeͰνΣοΫ͢ Δͬ͠ΐʁ
Deno: ͍ɺTypeScript αϙʔτͬͯͦΕͰݴͬ ͯྑ͍ͱࢥͬͯΜͷʁ
Node.js: ·ʔ·ʔ·ʔ ͿͬͪΌ͚ࢲϓϥοτϑΥʔϜଆͰΒͳͯ͘ϑ ϨʔϜϫʔΫͱ͔͕ͬͯΔΜͰɻ ͦ͜·ͰੵۃతʹΒͳͯ͘ͳʔͱɻ ͋ͱɺtype check (tsc)ͱ transpile (swc)͕ҧ͏πʔϧ
ͳΜͰ͚͢ͲͦΕ͍͍Μ͔͢ʁʢ͜͜CV ͻΖΏ͖ʣ
Bun: ͋ͱ͞ɺJSRͰTypeScriptಈ͔͢ͷ͍͔ Βͬͯਪ͠ͳ͍͍ͯ͘Α͏ʹฦΓͷܕ Λ໌ࣔԽͤ͞Α͏ͱ͢ΔͷɺTypeScriptͷ ମݧଛͳ͏ΜͰɺΊͯΒ͍͍͔ͬͯͬ͢ ʢ͜͜ cv ͻΖΏ͖ʣ
Deno: ·ɺ·͊ TypeScript Go Ͱૣ͘ͳΕ͞ɺ ͦ͏͍͏ղܾ͞ΕΔ͠͞ɺ·͊ࠓ ͪΐͬͱΞϨ͚ͩͲ͞ɻɻɻ
My Opinion ※શͯݹͷҙݟͰ͋Γɺ࣮ࡍͷެࣜݟղ ͱҧ͍·͢ɻίϯτͰ͢ɻ
TypeScript αϙʔτ • Զ check ػೳ͕ͳ͍ͷʹNode/Bun͕αϙʔτͬͯݴͬͪΌͬͯΔ͚Ͳ͍͍ͷʁͱ ࢥͬͨΑɻ • ҰํͰαϙʔτͬͯ໘͍͘͞ͳͱࢥͬͨɻ •
ͱΓ͋͑ͣݴ͑Δͷ͏TypeScript͕ಉࠝ͞Ε͍ͯΔ͜ͱʹڝ૪༏Ґੑແ͍ؾ͕͢Δɻ • ͩͬͯผʹࣗͨͪͰͪΌΜͱΓ͍ͨਓtsc͔ΒͪΌΜͱڥ࡞Δ͠ɺͦΕ͕ݏͳਓͰ ͋ͬͯviteͱ͔next.jsͱ͔ͰΓ࢝ΊͨΒೖͬͯΔΜͩΜɻɻɻ • ͳ͙Γॻ͖ͰTypeScript࣮ߦ͍ͨ࣌͘͠Β͍͔ʁศརͳͷͬͯɻ
ࡾݸͷ࣭
ύʔϛογϣϯରԠͬͯ Ͳ͏ࢥ͍ͬͯ·͔͢ʁ
Node.js: ࣮ͯ͠Έ·ͨ͠ɻͰ Deno ͱҧͬͯΦϓτ ΠϯͰޙ͔Βݫ͘͠Ͱ͖ΔΑ͏ͳΦϓγϣϯ͕ ͚ΒΕ͚ͨͩͰ͢ɻ σϑΥϧτηΩϡΞ͡Όͳ͍Ͱ͢Ͷɻطଘͷ npm͕յΕͨΒΒͷΤίγεςϜऴΘΔΜͰɻ
Deno: ࢲͣͬͱͬͯ·͢Θɻͱ͍͏͔ͦΕ͕࠷ ॳͷίϯηϓτͰ͢Θɻ Secure By Defaultɺ҆શͰγϯϓϧɺ։ൃޮߴ͍ ͕ചΓͷDenoͰ͢ɻΑΖ͓͘͠ئ͍͠·͢
Bun: Permission? ͍ͦΕ͘ͳΒͳ͍ͭͬ͢ ΑͶʁ ͘ͳΒͳ͍ͷ͏ͪΒͳ͍Μ͢Αɻ ηΩϡϦςΟʁʁʁ
Deno: ܅ϚδͰͳ͍Θʔɻɻɻ ͑ɺͲ͏ࢥͬͯΜͷɺࠓͷαϓϥΠνΣʔϯΞλοΫͱ͔͞ɻ ͍͖ͳΓεΫϦϓτͷதͰϚΠχϯάͱ͔͞ΕͪΌ͏Αʁใ ࿙Ӯ͞ΕͪΌ͏Αʁ
Node.js: ͍ɺ܅ͷͱ͜Ζ --allow-all ͯ͠Δਓͨͪͨ͘ ͞ΜݟΔ͠ɺӡ༻ָ͍ͨ͠ਓ͕ͨͪͬͨΒ݁ہ ى͖ΔΜͪΌ͏Μʁ
Bun: SELinux ͱ͔݁ہ disabled ʹͳͬͯͨΓ ͱ͔Ͷɻݖݶཧͦͷͷ͕ਓྨʹૣ͗ͨ͢ ΜΑɻΨνΨνʹݻΊͯޙ͔ΒΦϑʹ͞Ε ͨΓ͢ΔΜΑɻ
Deno: ύʔϛογϣϯཧͰ͖ͳ͍ͭͬͯΖ
My Opinion ※શͯݹͷҙݟͰ͋Γɺ࣮ࡍͷެࣜݟղ ͱҧ͍·͢ɻίϯτͰ͢ɻ
ύʔϛογϣϯ • ͜͜ʹ͍͔ؔͯͭ͘͠ݴ͍͍ͨ͜ͱ͕͋Δ • ·ͣݖݶཧ͚ͩͰαϓϥΠνΣʔϯΞλοΫ͖͗Εͳ͍ɻͳͥͳΒιϑτΣΞͷ։ൃͷͲ͜Ͱࠞ ೖ͢Δ͔JSϓϥοτϑΥʔϜ͚ͩͰ͗Α͏͕ͳ͍͔Βɻ • Docker ʁ 3rd
party script ʁ poly fi ll.io ͕ങऩ͞Εͯͦ͜Λಥ͔ΕͨΒʁͳͲΓ͕ແ͍ • ͲͪΒ͔ͱ͍͏ͱɺଟతʹޚ͢ΔΈ͕ඞཁɻෆԺͳϓϩηεͷࢹɺΞτόϯυͷϦΫΤετ ͕Ͳ͜ʹߦͬͯΔ͔ɺมʹϦιʔε৯ͬͯΔϓϩηε͍ͳ͍͔ͳͲɻ • JSR / npm ͕ͬͯΔΑ͏ͳॺ໊͖Ͱվ͟Μݕূ͕Ͱ͖ΔΈඞཁ • ͳͷͰɺDeno͕ͬͯΔύʔϛογϣϯࣗମͦͷଟԽͷͷҰͭʹ͗͢ͳ͍ɻݴͬͯ͠·͑ɺ͋Δ ͱྑ͍͚Ͳͳͯ͘ΫϦςΟΧϧ͡Όͳ͍ɻ
ύʔϛογϣϯ • ࣍ʹͦͦਓ͕ؒӡ༻͢ΔҎ্ɺָΛͨ͘͠ͳΔɻ • σϑΥϧτ͕ݫ͍͠ͱΦϑʹ͞ΕΔࣄ͕ଟ͍ɻ • SELinux ͔͠Γɺదͳݖݶઃܭ͕ OS /
Platform ͷϨΠϠͰͪΌΜͱͰ͖ͨ ͷΛݟͨ͜ͱ͕ͳ͍ • ͦͦOSͷϢʔβʔͷݖݶཧ͔ͬ͠ΓͰ͖͍ͯͯɺΞϓϦέʔγϣϯ ϓϩηε࣮ߦ͝ͱʹϢʔβʔͷݖݶΓ͚Δͱ͔͕Ͱ͖ΔͳΒͦΕͰྑ͍ ͣɺຖճswitch user͠ͳ͕ΒΔͷେมͩΖ͏͚Ͳɻ
࢛ݸͷ࣭
Bun API ֦ுΤά͗͢͡ΌͶʁʹ͍ͭͯͲ ͏ࢥ͍·͔͢ʁ
Bun: ֦ு͕Τά͍ʁͳʹ͔ͰʁࢲΈΜͳͱ ಉ͡ΰʔϧࢦ͍ͯ͠ͳ͍Μ͢Θɺ࠷͔ͭ ࠷ڧɺࢦͯ͠ΔΜͰɻ
Deno: ͍ɺ͓લશવWinterTCͱ͔ೖΜͶʔΑ ͳɻಠ֦ࣗு͕ଟ͗͢ΔͩΖɻͳΜͩ Console Λ for-of ͰҰߦͣͭճͤΔΑ͏ʹ ͢ΔṖͷ֦ு
Node.js: ͋ͱɺ͓લ Bun.s3 ͱ͔͍ͬͯશવs3͡ΌͶʔ ͠ɺBun.sql ͰPostgresରԠͱ͔ɺAPIͷ໊લͲ͏ ͳͬͯΜͷɻͳΜͰ Bun.xxx ʹͱΓ͋͑ͣੜ ͢ͷ͍Ζɻ
Bun: ฉ͑͜·ͤΜɻศརͩ͠ྑ͘ͳ͍͔ͬ͢ʁ ͑ɺօ͞Μ jsr add ͱ͔ npm install ͱ͔͠ ͳ͍ͱpostgresݺͳ͍ײ͡ʁͦΕͰ͠
͔͍ͷʁࢲɺpostgres࠷ͳΜͰ (50000 req/sec)
Deno: APIͷ໊લ͍͍ΑɻͲ͔ͬͪͬͭʔͱɺWeb API ෩ʹ࡞ͬ ͓͍ͯͯͦΕݺΜͩΒಠࣗͰͥΜͥΜҧ͏ಈ͖͢ΜͳΑɻ fetch ʹ proxy Φϓγϣϯͱ͔ੜͨ͠Γͱ͔͞ɻɻɻ ҙݟ͕͋ΔͳΒWinterTCʹೖͬͯݴ͑Αɻ
Bun: Ͳ͏ͤฉ͍ͯ͘Εͳ͍ͬ͠ΐʁ
Deno: ͦ͏ܾͬͯΊ͚ͭͯಀ͛ΜͳΑ
My Opinion ※શͯݹͷҙݟͰ͋Γɺ࣮ࡍͷެࣜݟղ ͱҧ͍·͢ɻίϯτͰ͢ɻ
Bun API ֦ுΤά͘Ͷ • Τά͍ͬͪΌΤά͍Μ͚ͩͲɺWinterTC࢝·͔ͬͨΓͰԿͰͦΕʹैΘͳ ͖Ό͍͚ͳ͍ͱ͍͏͜ͱͰͳ͍ͷͰͳ͍͔ɾɾɾʁ • ૬ޓޓੑ͕ඞཁͳϑΣʔζ͕དྷͨΒ͓ޓ͍ΓΌ͍͍ͷͰɻݴ͍͑Δͱ·ͩ૬ ޓޓੑΛอͪ·͠ΐ͏ͱݴͬͯϧʔϧΛकΔڧ੍ྗ͕ബ͍ͱ͍͏͔ɺϝϦοτ͕ ͋Μ·Γແ͍͔ΒΒΕ͍ͯͳ͍͚ͩͳؾ͕͢Δɻ
• ඪ४༷͔ͩΒͱ͍ͬͯϒϥβͱঢ়گ͕ҧ͏ؾ͕͢Δ • API ͷηϯεඍົͰ͋Δ͕ɺͱΓ͋͑ͣศརͳͷೖΕ·͔ͬͯͦ͘͜ΒΘΕͳ ͔ͬͨΒফ͍ͯ͘͠ͱ͍͏ٯΤοηϯγϟϧࢥߟ
·ͱΊ • ΈΜͳҧͬͯΈΜͳ͍͍ • લ͔Βൺֱ͢ΔͱେͲ͜ࣅ͖ͯͨɺࠣͳࠩͰ্Լ͍ͯ͠Δ • ੑೳɾ։ൃऀମݧڝ૪͕݈શʹੜ·ΕͯΔͷྑ͍ • ҰํͰ͜ͷػೳ͕͋Δ͔Β͜ΕΛ͍͍͍ͨͬͯ͏ࠩผԽͰ͖Δॴ͕গͳ͍ •
݁ՌNode.js͕ͳΜͱͳ͘ΘΕͯ͠·͏ • ΩϥʔϑΟʔνϟʔ͕ग़͖ͯͯ΄͍͠
None