Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Node.js や deno に web compatible な API をほしいって言ったのは我々フロントエンドエンジニアでもあるわけだが、 だからといってなんでも本当にほしいのか、というのは大いに議論の余地がある。

Node.js や deno に web compatible な API をほしいって言ったのは我々フロントエンドエンジニアでもあるわけだが、 だからといってなんでも本当にほしいのか、というのは大いに議論の余地がある。

Node.js や deno に web compatible な API をほしいって言ったのは我々フロントエンドエンジニアでもあるわけだが、 だからといってなんでも本当にほしいのか、というのは大いに議論の余地がある。 @ techfeed 2021/05/26

Yosuke Furukawa
PRO

May 26, 2021
Tweet

More Decks by Yosuke Furukawa

Other Decks in Programming

Transcript

  1. Node.js ΍ deno ʹ web
    compatible ͳ API Λ΄͍ͬ͠
    ͯݴͬͨͷ͸զʑϑϩϯτΤ
    ϯυΤϯδχΞͰ΋͋ΔΘ͚ͩ
    ͕ɺ ͔ͩΒͱ͍ͬͯͳΜͰ΋
    ຊ౰ʹ΄͍͠ͷ͔ɺͱ͍͏ͷ
    ͸େ͍ʹٞ࿦ͷ༨஍͕͋Δɻ

    View Slide

  2. Twitter: @yosuke_furukawa
    Github: yosuke-furukawa

    View Slide

  3. ݩπΠʔτ

    View Slide

  4. ݩπΠʔτ
    /PEFKTWʹBUPC΍CUPB͕HMPCBMʹೖΔɻ
    Ͱ΋࢖Θͳ͍Ͱ΄͍͠ɻ
    BUPCCUPBΛ࢖͍͍ͨͳΒ࢖͍ͨ͘ͳ͍ͱࢥ͏·ͰจࣈΤϯίʔυΛਂ͘ಡ
    ΈਐΊ͍ͯͩ͘͞ɻ

    View Slide

  5. ͳΜͰʮ࢖͏ͳͬͯݴͬͯΔ
    ΋ͷʯΛ৽͍͠ػೳͱͯ͠௥
    Ճ͠ͳ͖Ό͍͚ͳ͍Μɾɾɾʁ

    View Slide

  6. atob / btoa
    • atob / btoa ͸ binary ͱ ASCII ม׵͞Εͨ
    base64 ͱͷ૬ޓม׵Λߦ͏ศརAPI
    • Web API ͱͯ͠༧Ίఆٛ͞Ε͍ͯΔ
    • ͨͩ͠ɺɺɺ

    View Slide

  7. atob / btoa
    • atob ͱ btoa ͸ Unicode ʹ͸ରԠ͍ͯ͠ͳ
    ͍ɺ͋͘·Ͱ ASCII ݍͰ͔͠࢖͑ͳ͍΋ͷ

    View Slide

  8. atob / btoa
    > atob(btoa("͜Μʹͪ͸"))
    Uncaught:
    DOMException [InvalidCharacterError]: Invalid character
    > decodeURIComponent(atob(btoa(encodeURIComponent("͜Μʹͪ͸"))))


    '͜Μʹͪ͸'
    // ͜ͷΑ͏ʹ decode / encode ͯ͠ ASCII Ͱ΋ΤϯίʔυͰ͖ΔΑ͏ʹ͔ͯ͠Β΍
    Δඞཁ͕͋Δɻɻɻɻ

    View Slide

  9. ͜Μͳ͜ͱ͠ͳͯ͘΋

    View Slide

  10. Node.js ʹ͸΋ͱ΋ͱ buffer ͕
    ͋Δ
    const str = "͜Μʹͪ͸";
    const base64 = Buffer.from(str, "utf-8").toString('base64');
    console.log(Buffer.from(base64, "base64").toString('utf-8'));
    // ͜Μʹͪ͸

    View Slide

  11. ຊ౰ʹ࢖͍͍ͨͰ͔͢ʁ

    View Slide

  12. ਖ਼௚จࣈίʔυମܥΛؾʹ͠
    ͳ͖Ό͍͚ͳ͍ͷ͸ӳޠݍͰ
    ΋Ұॹʢֆจࣈͱ͔͋Δ͠ʣ

    View Slide

  13. ຊདྷཉ͍͠෺:
    - fetch
    - http/3
    - etc

    View Slide

  14. ͜Ε͔Β͸ Node.js ΍ deno
    ʹ web compat ͕ཉ͍͔͠Β
    ͱݴͬͯԿͰ΋ೖΕ͍͍ͯͷ
    ͔Λٞ࿦͠Α͏ɻ

    View Slide