Slide 1

Slide 1 text

strip types ͱ storage Yosuke Furukawa @tng43 2024/8/8

Slide 2

Slide 2 text

X: @yosuke_furukawa GitHub: yosuke-furukawa

Slide 3

Slide 3 text

CFP ืूதʂʂʂʂʂ

Slide 4

Slide 4 text

strip types / storage • Node.js ͷ৽͍͠ػೳ͕2ͭ௥Ճ͞Εͨ • strip types v22.6.0 ~ • storage v22.4.0 ~

Slide 5

Slide 5 text

strip types • ܕΛιʔείʔυ͔ΒҾ͖ൈ͍ͯ TypeScript ϑΝΠϧΛ JavaScript ϑΝΠϧ ʹม׵ͨ͠͏͑Ͱ࣮ߦ͢Δͱ͍͏΋ͷ • ͜ΕͰ TypeScript ͷϑΝΠϧΛʢҰఆͷ੍໿৚݅Խʹ͓͍ͯ͸ʣͦͷ··࣮ ߦͰ͖ΔΑ͏ʹͳͬͨɻ • Ұఆ৚݅: enum, namespace, decorator ͳͲͷػೳʹؔͯ͠͸ܕΛऔΓআ͘ ͚ͩͰ͸ͳ͘ɺผίʔυΛੜ੒͢Δ΋ͷͳͷͰ͜͜Ͱ͸αϙʔτର৅֎

Slide 6

Slide 6 text

strip types • ͜ͷ݅ʹରͯ͠ͷҰਓࢍ൱ • ࢍ • ૉ੖Β͍͠ʂʂʂʂ TypeScript ࠷ߴʂʂʂʂ • ΍ͬͺΓͶɺͦͷ··ಈ͘ͷͬͯྑ͍ΑͶ • Bun, Deno ͱ͔΋ಉ͡ػೳΛఏڙͯ͠Δ͠ɺ͜ΕͰTypeScriptαϙʔτ Ͱʮ͋Ε͕Ͱ͖ͳ͍ɺ͜Ε͕Ͱ͖ͳ͍ʯͱݴΘΕΔ͜ͱ͕ͳ͍Ͷ

Slide 7

Slide 7 text

strip types • ͜ͷ݅ʹରͯ͠ͷҰਓࢍ൱ • ൱ • ʮͨͩ͊ʔʔʔʔʔʂʂʂʯ • ʮ͍΍ɺܕνΣοΫ͕ͳ͍ͷʹTypeScriptαϙʔτͱ͔ݴͬͯྑ͍Θ͚ ແ͍ͩΖʯ • ͪͳΈʹɺtscon f igͱ͔΋·ͩͳ͍ɻ

Slide 8

Slide 8 text

strip types • ͜ͷ݅ʹରͯ͠ͷҰਓࢍ൱ • ࢍ • ͍΍Ͱ΋ɺDeno΍Bun΋ҰԠstrip͢Δ͚ͩͰ͢Αɻ • Node.js΋ͦΕ͚ͩͰ͍͍ͷͰ͸ʁ • ※ ݫີʹݴ͏ͱDeno͸νΣοΫ͸ΦϓγϣϯͰͯ͘͠ΕΔ

Slide 9

Slide 9 text

strip types • ͜ͷ݅ʹରͯ͠ͷҰਓࢍ൱ • ൱ • tscon f ig.json͕αϙʔτ͞Εͳ͍ͬͯɺඍົͳͱ͜ΖͰಈ͔ͳ͔ͬͨΓ͢ ΔͰʁ • ֦ுࢠɺϑΝΠϧύεɻɻɻ • ͋ͱ tsc ͰͷνΣοΫ͕ͳ͍ͷʹ TS αϙʔτͬͯ • ݴͬͪΌ͏ͷ͸ݫ͍ͬͯ͠

Slide 10

Slide 10 text

strip types • uhyo ͞ΜͷεϥΠυͷ͜ͷลΓΛࢀߟʹɻ https://speakerdeck.com/uhyo/tscon f ig-dot-jsonnoshe-ding-wojian-zhi-sou- hurontoendoxiang-ke-2024xia

Slide 11

Slide 11 text

strip types • TypeScript αϙʔτ͍ͬͯ͏ݴ༿͸৻ॏʹʂʂʂ // DEMO interface Point { x: number; y: number; } function logPoint(p: Point) { console.log(`${p.x}, ${p.y}`); } // logs "12, 26" const point = { x: 12, y: 26 }; logPoint(point); // node --experimental-strip-types foo.ts

Slide 12

Slide 12 text

storage • local storage • session storage • sqlite • ͜ΕΒ͕ೖͬͨ

Slide 13

Slide 13 text

storage // ͜Μͳͷ͕ಈ͘ localStorage.setItem("foo", 1); console.log(localStorage.getItem("foo")); // node --experimental-webstorage --local- storage-file="hoge"

Slide 14

Slide 14 text

storage • ͜ͷ݅ʹରͯ͠ͷҰਓࢍ൱ • ࢍ • ศརͦ͏ʂʂʂʂʂ • ΍ͬͺͶɺbrowserͱͷޓ׵ੑΛ্͛Δͷ͸Node.jsʹͱͬͯ͸ॏཁͩΑ Ͷʂʂʂʂ • ؆୯ʹϑΝΠϧΛอଘͰ͖ΔΑ͏ʹͳΔͷ࠷ߴʂʂ

Slide 15

Slide 15 text

storage • ͜ͷ݅ʹରͯ͠ͷҰਓࢍ൱ • ൱ • ʮͨͩ͊͋͋͋͋͋ʔʔʔʔʔʂʂʂʂʂʯ • ʮ͍͍͍͍͍ΒͶ͑͑͑͑͑͑͑͑͑͑͑͑͑͑ʂʂʂʂʂʂʯ • syncͰอଘ͞ΕΔσʔλʹྑ͞Λશ͘ײ͡ͳ͍ • ·ͩasyncʹͳΔͳΒΘ͔ΔɻͰ΋ͦΕͳΒશ͘ผͷ֓೦Ͱ AsyncLocalStorage ͱ͍͏API͕͋Γɺ༻ҙ͠Α͏ʹ΋طʹऔΒΕͯΔɻ(※Θ͔Γʹ͍͘ͱࢦఠ͕͋ͬ ͨͨΊ௥ه)

Slide 16

Slide 16 text

storage • ͜ͷ݅ʹରͯ͠ͷҰਓࢍ൱ • ࢍ • ͑ɺͰ΋Bun͸sqlite࠷ॳ͔Βೖͬͯ·͢Α • cloud f lare workersͱ͔ʹ΋KV Storage͕͋Δ • खܰʹ࢖͑ΔετϨʔδ͸΄͍͠Ͱ͠ΐʁ

Slide 17

Slide 17 text

storage • ͜ͷ݅ʹରͯ͠ͷҰਓࢍ൱ • ൱ • खܰʹϑΝΠϧʹอଘͰ͖Δࣄ͕ϒϩοΩϯάͳAPIʹͳΓɺͦΕ͕໰୊ ͔ͩͬͨΒNode.js͸ඇಉظΛத৺ʹൃల͖ͯͨ͠ͷͰ͸ͳ͍͔ • localStorage͸ͱ΋͔͘ɺsessionStorageͷsession͸ͨͩͷάϩʔόϧ ϝϞϦͳͷͰɺάϩʔόϧม਺ͱಉٛͰ͸ʁϝϞϦϦʔΫ͸ʁʁʁ

Slide 18

Slide 18 text

storage • ҙݟ • ͍ΒͶʔͱ͸ࢥ͕ͬͨɺԿ΋χʔζ͕ͳ͍Θ͚Ͱ͸ͳ͍ • ಛʹͳΜͱͳ͘࠷ۙ͸खܰετϨʔδͱͯ͠sqliteΛ࠾༻͢ΔྲྀΕ͕૿͑ͯ Δ • ݸਓతʹ͸࢖Θͳ͍͕ɺͦ͏͍͑͹͜͏͍͏ͷ͋ͬͨͳͱೝ͓ࣝͯ͘͠ ͱɺͳΜ͔͋ͬͨ࣌ʹΤεέʔϓϋονతʹ࢖͑Δ͔΋͠Εͳ͍

Slide 19

Slide 19 text

Node.jsʹݶΒͣ • զʑ͸৽͍͠࢓༷ɺ৽͍͠ػೳ͕ग़ͯ͘Δͨͼʹʮ΄͍͠ʯͱࢥͬͨΓʮ͍ Βͳ͍ʯͱࢥͬͨΓ͢Δ • ࢓༷͸௥Ճ͢Δͷ͸؆୯Ͱɺӡ༻͢Δͷ͸େมɺ࡟আ͢Δͷ͸΋ͬͱେม • ͔ͩΒ৻ॏʹ͸ͳΔɺࠓ௥Ճ͞ΕͯΔͷ͸શ෦ experimental Ͱ͋Δɻ • ໰୊͸௥Ճ͞Ε͚ͨͩͰ͜Ε͕߃ٱతʹαϙʔτ͞ΕΔͱࢥͬͯ࢖ΘΕ͗͢ ͪΌ͏͜ͱ • Ұ୴࢖ͬͯΈͯཧղ͢Δ෼ʹ͸໰୊ͳ͍

Slide 20

Slide 20 text

Node.jsʹݶΒͣ • ͜Εͬͯ Node.js ʹݶΒͳ͍ • ৭Μͳͱ͜ΖͰى͖ͯΔɺweb΋ͦ͏ͩ͠ɺϑϨʔϜϫʔΫ΋ͦ͏ɻ • ͜͏͍͏ͷʹৼΓճ͞Εଓ͚ΔͱɹJavaScript Fatigue ͱݺ͹ΕΔɻ

Slide 21

Slide 21 text

Node.jsʹݶΒͣ • State of JS 2024 ͷ๯಄ʹॻ͍ͯ͋Δ • ๻Β͸ͣͬͱϑϨʔϜϫʔΫ΍ΤίγεςϜʹৼΓճ͞ΕͯΔ • ͦΕΛࢦͯ͠ fatigueʢർฐʣ ʹؕΔ͜ͱ΋͋Δ • ͨͩͦ͏͍͏ early adapter Λ௥͏ඞཁ͸ͳ͍ • ࣗ෼ͨͪͷϖʔεͰ௥͏͜ͱ͕ॏཁͳΜͩ