Slide 1

Slide 1 text

Node.js, Deno, Bun ࠷৽ಈ޲ͱ ͦͷॴײʹ͍ͭͯ 2025/03/14 @ toranoana.deno

Slide 2

Slide 2 text

X: @yosuke_furukawa GitHub: yosuke-furukawa

Slide 3

Slide 3 text

Node.js ࠷৽ಈ޲ͱઓུ • ࠷৽ಈ޲ • TypeScript strip ϞʔυΛ࠾༻ • require(ESM) Ͱ CJS ͱ ESM ͷஈ֊తҠߦΛαϙʔτ • EOLΛܴ͑ͨޙ΋vulnerableͳϨϙʔτΛ͢Δ͔Ͳ͏͔ͳͲɺ EOLͷExtended Support ʹ͍ͭͯ΋ݴٴ

Slide 4

Slide 4 text

TypeScript strip mode • Denoͱ͔BunͰ΋΍ͬͯΔ .ts ϑΝΠϧͷܕͷ෦෼͚ͩΛநग़ ͯ͠ JavaScript ʹ࣮ͯ͠ߦ͢Δػೳ • ୯ͳΔ strip ͳͷͰܕνΣοΫͱ͔͸͠ͳ͍ • ·ͨ enum ΍ namespace ͳͲͷTSಠࣗͷػೳ͸αϙʔτ͞Ε ͍ͯͳ͍ʢ--experimental-transform-typesΛ͚ͭΔʣ

Slide 5

Slide 5 text

require(ESM) • ES Modules Ͱ΋ require ͔Βݺ΂ΔΑ͏ʹͳΔ • ͨͩ͠ Top level await ͯ͠ΔϞδϡʔϧ͸ର৅֎ • A => B => C ͱґଘ͍ͯ͠Δͱ͖ʹ C ͕ESMʹͳͬͨͱ͜ΖͰ B͕CJSͩͱҠߦͰ͖ͳ͔͕ͬͨɺ͜Ε͔Β͸C͕ESMͰ΋B͔ Β require Ͱݺ΂ΔͷͰҠߦ͕ஈ֊తʹਐΉ

Slide 6

Slide 6 text

EOL Support • EOL͕੾ΕͨޙͰ΋ݹ͍όʔδϣϯʹରͯ͠ Vulnerability Report Λ͍ͯ͘͠ํ޲ʹ • Node.js v16Λ࢖͍ͬͯΔϢʔβʔ͕·ͩ·͍ͩΔ • ݹ͍Node.jsΛ೗ԿʹΞοϓάϨʔυͤ͞Δ͔͕য఺ • ͦΕ͸ͦΕͱͯ͠ɺࠓޙϢʔβʔ͕ͲͷNode.jsͷόʔδϣϯΛ࢖͍ଓ͚͍ͯΔ͔Λཧ ղɾ೺Ѳ͍ͯ͘͠ • HeroDev ͳͲ঎༻ϥΠηϯεͰԆ௕αϙʔτ͢Δஂମ΋ग़͍ͯΔͨΊɺͦΕΒͱ࿈ܞ ΛऔΓͳ͕Β Extended EOL ΋ࢹ໺ʹೖΕ͍ͯ͘ɻ

Slide 7

Slide 7 text

Node.js ࠷৽ಈ޲αϚϦ • ཁ͸ଞͷϓϥοτϑΥʔϜʹޙ௥͍ͰػೳΛ௥Ճ͍ͯ͘͠ • ͞ΒʹEOLΛܴ͑ͨޙͷϨΨγʔͳNode.jsΛ೗ԿʹΞοϓά Ϩʔυ͍͖ͤͯ͞ɺ݈શͳঢ়ଶΛอ͔ͭΛ࣮ࢪ • ঎༻αϙʔτͰ௕͘EOLΛԆ௕͢Δ૊৫΋ग़͖͍ͯͯΔ ྑ͍ͱ͜ΖͲΓͭͭ͠ɺӡ༻໘ͰͷαϙʔτΛڧԽ͍ͯ͘͠

Slide 8

Slide 8 text

Deno ࠷৽ಈ޲ͱઓུ • ࠷৽ಈ޲ • JSR੝Γ্͛ • Node.js Compatibility ޲্ • WASM module / OpenTelemetry ରԠͳͲͳͲ

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

Node.js Compatibility ޲্ • Node.js / npm ͱͷޓ׵ੑΛ޲্ͤ͞Δ • Next.js ͕ Deno Ͱಈͥ͘ʂʂʂ \űŒŕŰŖ!/ • https://deno.com/blog/nextjs-on-deno-deploy • ࠓ΋ੵۃతʹ sqlite ͳͲͷ৽APIΛରԠ͍ͯͬͯ͠Δ

Slide 11

Slide 11 text

WASM Module / Opentelemetry ରԠ • wasm ͕ module ͱͯ͠ import Ͱ͖ΔΑ͏ʹͳͬͨ • OpenTelemetry ϓϩτίϧʹରԠ͠ɺՄ؍ଌੑ্͕͕ͬͨ • etc

Slide 12

Slide 12 text

Deno ࠷৽ಈ޲αϚϦ • ͳΜͱ͍ͬͯ΋JSRΛྲྀߦΒͤΔ • npm ͔ΒΤίγεςϜΛҾ͖ܧ͍͗ͨ • ͦͷͨΊͷ Node.js compat ΞήΞή • աڈͷ URL import ͸ෛͷҨ࢈ Node.js / npm ͔ΒͲΕ͚ͩҨ࢈ΛҾ͖ܧ͛Δ͔͕ࠓޙͷ伴

Slide 13

Slide 13 text

Bun ࠷৽ಈ޲ͱઓུ • ࠷৽ಈ޲ • Perf! Perf! Perf!! ύϑΥʔϚϯεͦ͜ਖ਼ٛʂʂ • ඞཁͳ΋ΜɺͱΓ͋͑ͣશ෦ೖΕͱ͖·ͨ͠ʂʂʂ • Bun.sql, Bun.s3, ࠓ౓͸ Bun.CSRF Ͱcsrf tokenݕূͰ͖ΔΑ͏ʹ͠· ͢ʂʂ • Node.js compatibility ޲্ʂʂʂ

Slide 14

Slide 14 text

Perf! Perf! Perf!! ύϑΥʔϚϯεͦ͜ਖ਼ٛ!! • Bunͷىಈ࣌ؒ͸5ms, Node.js ͸25ms!! 5ഒͩͧ5ഒʂʂ • Bunͷhttp serve ͸59000 req/sec, Deno͸25000req/sec 2.4ഒͩ ͧ!! 2.4ഒ!! (ͪͳΈʹNode͸19000req/sec) • npm install ?? Bun install ͸25ഒ଎͍ͧʂʂʂ • https://bun.sh/docs/cli/install

Slide 15

Slide 15 text

ඞཁͳ΋Μɺશ෦ೖΕͱ͖·ͨ͠!! • Bun.sql ͕ PostgreSQL ͷΫϥΠΞϯτʹʂʂࠓ౓ MySQL ΋࣮૷͢ Δ༧ఆʂʂʢͳΜͪΎ͏໊લͩ...ʣ • Bun.s3 ͕ Amazon S3 ͚ͩ͡Όͳ͘ɺCloudStorage ͱ͔ͷओͩͬͨ Ϋϥ΢υετϨʔδʹରԠʂʂʢͳΜͪΎ͏໊લͩ...ʣ • Bun.CSRF࣮૷ʂʂ Bun.CSRF.generate/verify ͰCSRFରࡦ͕Մೳ ʹʂʂʢ͍Δɾɾɾʁʣ

Slide 16

Slide 16 text

Node.js Compatibility ޲্!!! • Node.js test cases ΛͲΕ͚ͩpass͍ͯ͠Δ͔͕Ұ໨ྎવ • Next.js ? ࠷ॳ͔Βಈ͖·͚͢Ͳ? • ʢ͜͜ຊ౰͸ඍົɺશػೳ͕ಈ͘ͱ͸ݴͬͯͳ͍ʣ

Slide 17

Slide 17 text

Bun ࠷৽ಈ޲αϚϦ • ύϑΥʔϚϯεͦ͜ਖ਼ٛ • ಠಛͷAPIηϯεʢ׳Εͳ͍ʣ • Node.js compat Λ޲্͍ͤͯ͘͞ ύϑΥʔϚϯεͱ͍͏Ұ൪ͷ෢ثΛҾͬఏ͛ͯͲ͜·ͰϢʔβʔΛ ֫ಘͰ͖Δ͔

Slide 18

Slide 18 text

ύωϧσΟεΧογϣϯ

Slide 19

Slide 19 text

͑ʔɺͰ͸͔͜͜Β ࢲ͕࢘ձͰ৭ʑฉ͍ͯΈ͍ͨͱࢥ͍·͢ɻ

Slide 20

Slide 20 text

ҰਓύωϧσΟεΧογϣϯΛͯ͠Έ·͢ Node.js: ݹ઒ Deno: ݹ઒ Bun: ݹ઒

Slide 21

Slide 21 text

Ұݸ໨ͷ࣭໰

Slide 22

Slide 22 text

WinterCG / WinterTC ʹ͍ͭͯ͸ Ͳ͏ࢥͬͯ·͔͢ʁ

Slide 23

Slide 23 text

Node.js: ·͊جຊతʹϑΥϩʔ͍͔ͯ͘͠ͳɻ Minimum Common API Λ࡞ͬͯΔ James ͞Μ͸ Node ͷ TSC Ͱ΋͋Δ͠Ͷɻ

Slide 24

Slide 24 text

Deno: ඪ४ԽҕһձΛΉ͠Ζੵۃతʹࢧԉ͢Δ Goodbye WinterCG, Welcome WinterTC https://deno.com/blog/wintertc

Slide 25

Slide 25 text

Bun: ඪ४ԽʁͳʹͦΕ͓͍͍͠ͷʁ ৑ஊ৑ஊ͆͆ ·͊WinterCGʹ͸ࢀՃ͠ͳ͍͚Ͳɺ࢓༷͕ ·ͱ·͔ͬͯΒͰ͖Δͱ͜Ζ͔Β΍ͬͯ͜͏ ͔ͳɻͦ΋ͦ΋ಉ͡ΰʔϧ໨ࢦͯ͠ͳ͍͔ͳ

Slide 26

Slide 26 text

WinterTC • WinterCG (Community Group) ͔Β WinterTC (Technical Committee) ʹɻ • WinterTC͸࢓༷ܾΊΛத৺ʹɻCG͸ࠓ΋͜Ε͔Β΋࣮૷ఏҊ Λத৺ʹɻ • WinterTC͕ minimal API ΛܾΊ͍ͯ͘

Slide 27

Slide 27 text

My Opinion ※શͯݹ઒ͷҙݟͰ͋Γɺ࣮ࡍͷެࣜݟղ ͱ͸ҧ͍·͢ɻίϯτͰ͢ɻ

Slide 28

Slide 28 text

WinterTC • ಠ઎ࢢ৔͕࡞ΒΕͨޙʹ2ҐҎԼ͕݁ୗͯ͠࢓༷ͷඪ४ԽΛݴ͍ग़͢ͷ͸ׂͱ͜Ε· Ͱ΋WebͷதͰΑ͋ͬͨ͘ྲྀΕ • ͨͩɺطଘͷWeb API͔ΒͱΓ͋͑ͣ࣋ͬͯ͘Δͷ͸͋Μ·Γྑ͍Α͏ʹࢥ͑ͳ͍ɻ • ݸਓతʹ͸ͦΕͧΕ͕͋Δఔ౓࣮૷ΛਐΊͳ͕ΒϛχϚϜͰඞཁͳAPIΛܾΊ͍ͯ͘ ํ͕͍͍ͷͰ͸ͳ͍͔ɻ • ࢓༷ΛઌʹܾΊΔΜ͡Όͳ͘ɺ࣮૷͔Β࢓༷Λى͜͢Α͏ͳྲྀΕͰ͋Ε͹ɺ bun ΋ ৐ΓؾʹͳΔͷͰ͸ʁ

Slide 29

Slide 29 text

WinterTC • एׯݒ೦͍ͯ͠Δͷ͸ϒϥ΢βͱҧͬͯͦ͜·Ͱͷଟ༷ੑΛϢʔβʔ͕ٻΊ ͯΔͷ͔ඍົͳؾ͕͍ͯ͠Δ఺ • ϒϥ΢β͸ੑೳͱ͔ػೳ໘Ͱͷڝ૪͕աܹԽͨ͜͠ͱʹΑͬͯϢʔβʔ͕ଟ ༷ʹͳΓɺϚϧνϒϥ΢βରԠ͕ٻΊΒΕͨ͜ͱͰඪ४࢓༷͕ඞཁʹͳͬͨ • ҰํͰNode.js/Deno/BunͰ։ൃऀ͕ଟ༷Խ͢Δ࣌୅͕དྷΔͷ͔ʁདྷΔͱ͠ ͨΒͲ͏͍͏ঢ়گͳͷ͔͸Α͘Θ͔͍ͬͯͳ͍ɻϚϧνϓϥοτϑΥʔϜର Ԡ͕ٻΊΒΕΔ࣌୅ʹͳ͔ͬͯΒඪ४Խ͕ඞཁʹͳͬͨΓ͢Δͷ͔ʁ

Slide 30

Slide 30 text

ೋݸ໨ͷ࣭໰

Slide 31

Slide 31 text

TypeScript օ͞Μαϙʔτͯ͠·͚͢Ͳɺ ͓ޓ͍ΛͲ͏ࢥͬͯ·͔͢ʁ

Slide 32

Slide 32 text

Node.js: ͎͘ʔ͆͆αϙʔτ͠·ͨ͆͆͠ ࣮͸5೥Ҏ্લ͔ΒϦΫΤετࣗମ͸͋ͬͨ ͷͰ͕͆͆͢ ͣͬͱٞ࿦ͯͯ͠ࠓͳΜͱͳ͘ํ਑͕·ͱ ·ͬͨͷͰ࣮૷ͯ͠Έͨ࣍ୈͰ͆͆͢ ͝ҙݟืूதͰ͆͆͢

Slide 33

Slide 33 text

Deno: ࠓߋ Node.js ͕αϙʔτͨ͠ͱ͔ݴͬͯΔ ͚Ͳɺαϙʔτͬͯݴ͑ΜͷʁܕνΣοΫػ ೳ͸ͳ͍͠ɻɻɻ ͦΕͰαϙʔτʁ

Slide 34

Slide 34 text

Bun: ·͊ࢲ΋ܕνΣοΫ͸͠ͳ͍ΜͰ͚͢ͲͶw ܕνΣοΫͱ͔ͯ͠΋ύϑΥʔϚϯε্͕Μ ͳ͍͍ͬͯ͏͔ɺཁΓ·͢ʁ Ͳ͏ͤΈΜͳtscೖΕͯvscodeͰνΣοΫ͢ Δͬ͠ΐʁ

Slide 35

Slide 35 text

Deno: ͍΍ɺTypeScript αϙʔτͬͯͦΕͰݴͬ ͯྑ͍ͱࢥͬͯΜͷʁ

Slide 36

Slide 36 text

Node.js: ·ʔ·ʔ·ʔ ͿͬͪΌ͚ࢲ΋ϓϥοτϑΥʔϜଆͰ΍Βͳͯ͘΋ϑ ϨʔϜϫʔΫͱ͔͕΍ͬͯΔΜͰɻ ͦ͜·Ͱੵۃతʹ΍Βͳͯ͘΋ͳʔͱɻ ͋ͱɺtype check (tsc)ͱ transpile (swc)͕ҧ͏πʔϧ ͳΜͰ͚͢ͲͦΕ͸͍͍Μ͔͢ʁʢ͜͜CV ͻΖΏ͖ʣ

Slide 37

Slide 37 text

Bun: ͋ͱ͞ɺJSRͰTypeScriptಈ͔͢ͷ஗͍͔ Βͬͯਪ࿦͠ͳͯ͘΋͍͍Α͏ʹฦΓ஋ͷܕ Λ໌ࣔԽͤ͞Α͏ͱ͢ΔͷɺTypeScriptͷ ମݧଛͳ͏ΜͰɺ΍Ίͯ΋Β͍͍͔ͬͯͬ͢ ʢ͜͜΋ cv ͻΖΏ͖ʣ

Slide 38

Slide 38 text

Deno: ·ɺ·͊ TypeScript Go Ͱૣ͘ͳΕ͹͞ɺ ͦ͏͍͏໰୊΋ղܾ͞ΕΔ͠͞ɺ·͊ࠓ͸ ͪΐͬͱΞϨ͚ͩͲ͞ɻɻɻ

Slide 39

Slide 39 text

My Opinion ※શͯݹ઒ͷҙݟͰ͋Γɺ࣮ࡍͷެࣜݟղ ͱ͸ҧ͍·͢ɻίϯτͰ͢ɻ

Slide 40

Slide 40 text

TypeScript αϙʔτ • Զ΋ check ػೳ͕ͳ͍ͷʹNode/Bun͕αϙʔτͬͯݴͬͪΌͬͯΔ͚Ͳ͍͍ͷʁͱ͸ ࢥͬͨΑɻ • ҰํͰαϙʔτͬͯ໘౗͍͘͞ͳͱ΋ࢥͬͨɻ • ͱΓ͋͑ͣݴ͑Δͷ͸΋͏TypeScript͕ಉࠝ͞Ε͍ͯΔ͜ͱʹڝ૪༏Ґੑ͸ແ͍ؾ͕͢Δɻ • ͩͬͯผʹࣗ෼ͨͪͰͪΌΜͱ΍Γ͍ͨਓ͸tsc͔ΒͪΌΜͱ؀ڥ࡞Δ͠ɺͦΕ͕ݏͳਓͰ ͋ͬͯ΋viteͱ͔next.jsͱ͔Ͱ΍Γ࢝ΊͨΒೖͬͯΔΜͩ΋Μɻɻɻ • ͳ͙Γॻ͖ͰTypeScript࣮ߦ͍ͨ࣌͘͠Β͍͔ʁศརͳͷͬͯɻ

Slide 41

Slide 41 text

ࡾݸ໨ͷ࣭໰

Slide 42

Slide 42 text

ύʔϛογϣϯରԠͬͯ Ͳ͏ࢥ͍ͬͯ·͔͢ʁ

Slide 43

Slide 43 text

Node.js: ࣮૷͸ͯ͠Έ·ͨ͠ɻͰ΋ Deno ͱҧͬͯΦϓτ ΠϯͰޙ͔Βݫ͘͠Ͱ͖ΔΑ͏ͳΦϓγϣϯ͕෇ ͚ΒΕ͚ͨͩͰ͢ɻ σϑΥϧτ͸ηΩϡΞ͡Όͳ͍Ͱ͢Ͷɻطଘͷ npm͕յΕͨΒ๻ΒͷΤίγεςϜऴΘΔΜͰɻ

Slide 44

Slide 44 text

Deno: ࢲ͸ͣͬͱ΍ͬͯ·͢Θɻͱ͍͏͔ͦΕ͕࠷ ॳͷίϯηϓτͰ͢Θɻ Secure By Defaultɺ҆શͰγϯϓϧɺ։ൃޮ཰΋ߴ͍ ͕ചΓͷDenoͰ͢ɻΑΖ͓͘͠ئ͍͠·͢

Slide 45

Slide 45 text

Bun: Permission? ͍΍ͦΕ଎͘ͳΒͳ͍΍ͭͬ͢ ΑͶʁ ଎͘ͳΒͳ͍ͷ͏ͪ΍Βͳ͍Μ͢Αɻ ηΩϡϦςΟʁʁʁ

Slide 46

Slide 46 text

Deno: ܅౳ϚδͰͳ͍Θʔɻɻɻ ͑ɺͲ͏ࢥͬͯΜͷɺࠓͷαϓϥΠνΣʔϯΞλοΫͱ͔͞ɻ ͍͖ͳΓεΫϦϓτͷதͰϚΠχϯάͱ͔͞ΕͪΌ͏Αʁ৘ใ ࿙Ӯ͞ΕͪΌ͏Αʁ

Slide 47

Slide 47 text

Node.js: ͍΍ɺ܅ͷͱ͜Ζ΋ --allow-all ͯ͠Δਓͨͪͨ͘ ͞ΜݟΔ͠ɺӡ༻ָ͍ͨ͠ਓ͕ͨͪ࢖ͬͨΒ݁ہ ى͖ΔΜͪΌ͏Μʁ

Slide 48

Slide 48 text

Bun: SELinux ͱ͔΋݁ہ disabled ʹͳͬͯͨΓ ͱ͔Ͷɻݖݶ؅ཧͦͷ΋ͷ͕ਓྨʹૣ͗ͨ͢ ΜΑɻΨνΨνʹݻΊͯ΋ޙ͔ΒΦϑʹ͞Ε ͨΓ͢ΔΜΑɻ

Slide 49

Slide 49 text

Deno: ύʔϛογϣϯ΋؅ཧͰ͖ͳ͍΍ͭ͸໧ͬͯΖ

Slide 50

Slide 50 text

My Opinion ※શͯݹ઒ͷҙݟͰ͋Γɺ࣮ࡍͷެࣜݟղ ͱ͸ҧ͍·͢ɻίϯτͰ͢ɻ

Slide 51

Slide 51 text

ύʔϛογϣϯ • ͜͜ʹؔͯ͠͸͍͔ͭ͘ݴ͍͍ͨ͜ͱ͕͋Δ • ·ͣݖݶ؅ཧ͚ͩͰ͸αϓϥΠνΣʔϯΞλοΫ͸๷͖͗Εͳ͍ɻͳͥͳΒιϑτ΢ΣΞͷ։ൃͷͲ͜Ͱࠞ ೖ͢Δ͔͸JSϓϥοτϑΥʔϜ͚ͩͰ͸๷͗Α͏͕ͳ͍͔Βɻ • Docker ͸ʁ 3rd party script ͸ʁ poly fi ll.io ͕ങऩ͞Εͯͦ͜Λಥ͔ΕͨΒʁͳͲ੾Γ͕ແ͍ • ͲͪΒ͔ͱ͍͏ͱɺଟ૚తʹ๷ޚ͢Δ࢓૊Έ͕ඞཁɻෆԺͳϓϩηεͷ؂ࢹɺΞ΢τό΢ϯυͷϦΫΤετ ͕Ͳ͜ʹߦͬͯΔ͔ɺมʹϦιʔε৯ͬͯΔϓϩηε͸͍ͳ͍͔ͳͲɻ • JSR / npm ͕΍ͬͯΔΑ͏ͳॺ໊෇͖Ͱվ͟Μݕূ͕Ͱ͖Δ࢓૊Έ΋ඞཁ • ͳͷͰɺDeno͕΍ͬͯΔύʔϛογϣϯࣗମ΋ͦͷଟ૚Խͷ࢓૊ͷҰͭʹ͗͢ͳ͍ɻݴͬͯ͠·͑͹ɺ͋Δ ͱྑ͍͚Ͳͳͯ͘΋ΫϦςΟΧϧ͡Όͳ͍ɻ

Slide 52

Slide 52 text

ύʔϛογϣϯ • ࣍ʹͦ΋ͦ΋ਓ͕ؒӡ༻͢ΔҎ্ɺָΛͨ͘͠ͳΔɻ • σϑΥϧτ͕ݫ͍͠ͱΦϑʹ͞ΕΔࣄ͕ଟ͍ɻ • SELinux ͔͠Γɺద੾ͳݖݶઃܭ͕ OS / Platform ͷϨΠϠͰͪΌΜͱͰ͖ͨ ͷΛݟͨ͜ͱ͕ͳ͍ • ͦ΋ͦ΋OSͷϢʔβʔͷݖݶ؅ཧ΋͔ͬ͠ΓͰ͖͍ͯͯɺΞϓϦέʔγϣϯ ϓϩηε࣮ߦ͝ͱʹϢʔβʔͷݖݶ੾Γ෼͚Δͱ͔͕Ͱ͖ΔͳΒͦΕͰ΋ྑ͍ ͸ͣɺຖճswitch user͠ͳ͕Β΍ΔͷେมͩΖ͏͚Ͳɻ

Slide 53

Slide 53 text

࢛ݸ໨ͷ࣭໰

Slide 54

Slide 54 text

Bun API ֦ுΤά͗͢͡ΌͶʁʹ͍ͭͯͲ ͏ࢥ͍·͔͢ʁ

Slide 55

Slide 55 text

Bun: ֦ு͕Τά͍ʁͳʹ͔໰୊Ͱ΋ʁࢲΈΜͳͱ ಉ͡ΰʔϧ໨ࢦ͍ͯ͠ͳ͍Μ͢Θɺ࠷଎͔ͭ ࠷ڧɺ໨ࢦͯ͠ΔΜͰɻ

Slide 56

Slide 56 text

Deno: ͍΍ɺ͓લશવWinterTCͱ͔ೖΜͶʔΑ ͳɻಠ֦ࣗு͕ଟ͗͢ΔͩΖɻͳΜͩ Console Λ for-of ͰҰߦͣͭճͤΔΑ͏ʹ ͢ΔṖͷ֦ு

Slide 57

Slide 57 text

Node.js: ͋ͱɺ͓લ Bun.s3 ͱ͔͍ͬͯશવs3͡ΌͶʔ ͠ɺBun.sql ͰPostgresରԠͱ͔ɺAPIͷ໊લͲ͏ ͳͬͯΜͷɻͳΜͰ΋ Bun.xxx ʹͱΓ͋͑ͣੜ΍ ͢ͷ΍͹͍΍Ζɻ

Slide 58

Slide 58 text

Bun: ฉ͑͜·ͤΜɻศརͩ͠ྑ͘ͳ͍͔ͬ͢ʁ ͑ɺօ͞Μ jsr add ͱ͔ npm install ͱ͔͠ ͳ͍ͱpostgres΋ݺ΂ͳ͍ײ͡ʁͦΕͰ͠ ͔΋஗͍ͷʁࢲɺpostgres΋࠷଎ͳΜͰ (50000 req/sec)

Slide 59

Slide 59 text

Deno: APIͷ໊લ͸͍͍ΑɻͲ͔ͬͪͬͭʔͱɺWeb API ෩ʹ࡞ͬ ͓͍ͯͯͦΕݺΜͩΒಠࣗͰͥΜͥΜҧ͏ಈ͖͢ΜͳΑɻ fetch ʹ proxy Φϓγϣϯͱ͔ੜ΍ͨ͠Γͱ͔͞ɻɻɻ ҙݟ͕͋ΔͳΒWinterTCʹೖͬͯݴ͑Αɻ

Slide 60

Slide 60 text

Bun: Ͳ͏ͤฉ͍ͯ͘Εͳ͍ͬ͠ΐʁ

Slide 61

Slide 61 text

Deno: ͦ͏΍ܾͬͯΊ͚ͭͯಀ͛ΜͳΑ

Slide 62

Slide 62 text

My Opinion ※શͯݹ઒ͷҙݟͰ͋Γɺ࣮ࡍͷެࣜݟղ ͱ͸ҧ͍·͢ɻίϯτͰ͢ɻ

Slide 63

Slide 63 text

Bun API ֦ுΤά͘Ͷ • Τά͍ͬͪΌΤά͍Μ͚ͩͲɺWinterTC΋࢝·ͬͨ͹͔ΓͰԿͰ΋ͦΕʹैΘͳ ͖Ό͍͚ͳ͍ͱ͍͏͜ͱͰ͸ͳ͍ͷͰ͸ͳ͍͔ɾɾɾʁ • ૬ޓޓ׵ੑ͕ඞཁͳϑΣʔζ͕དྷͨΒ͓ޓ͍΍ΓΌ͍͍ͷͰ͸ɻݴ͍׵͑Δͱ·ͩ૬ ޓޓ׵ੑΛอͪ·͠ΐ͏ͱݴͬͯ΋ϧʔϧΛकΔڧ੍ྗ͕ബ͍ͱ͍͏͔ɺϝϦοτ͕ ͋Μ·Γແ͍͔Β΍ΒΕ͍ͯͳ͍͚ͩͳؾ͕͢Δɻ • ඪ४࢓༷͔ͩΒͱ͍ͬͯ΋ϒϥ΢βͱ͸ঢ়گ͕ҧ͏ؾ͕͢Δ • API ͷηϯε͸ඍົͰ͋Δ͕ɺͱΓ͋͑ͣศརͳ΋ͷೖΕ·͔ͬͯͦ͘͜Β࢖ΘΕͳ ͔ͬͨΒফ͍ͯ͘͠ͱ͍͏ٯΤοηϯγϟϧࢥߟ

Slide 64

Slide 64 text

·ͱΊ • ΈΜͳҧͬͯΈΜͳ͍͍ • ਺೥લ͔Βൺֱ͢Δͱେ෼Ͳ͜΋ࣅ͖ͯͨɺࠣ຤ͳࠩ෼Ͱ্Լ͍ͯ͠Δ • ੑೳɾ։ൃऀମݧڝ૪͕݈શʹੜ·ΕͯΔͷ͸ྑ͍ • ҰํͰ͜ͷػೳ͕͋Δ͔Β͜ΕΛ࢖͍͍͍ͨͬͯ͏ࠩผԽͰ͖Δॴ͕গͳ͍ • ݁ՌNode.js͕ͳΜͱͳ͘࢖ΘΕͯ͠·͏ • ΩϥʔϑΟʔνϟʔ͕ग़͖ͯͯ΄͍͠

Slide 65

Slide 65 text

No content