Slide 1

Slide 1 text

Deno に Web 標準 API を実装する OSS Drink Up at Engineer Cafe pixiv Inc. 森内建太 petamoriken 2024.3.14

Slide 2

Slide 2 text

2 自己紹介 ● Web エンジニア ● ECMAScript や WHATWG を追うのが好き ● Deno へのコミット数ランキング27位らしい petamoriken カスタマーオペレーション &セーフティ本部 オペレーション開発部

Slide 3

Slide 3 text

3 目次 ● Deno とは ● Deno 内部の JavaScript ● AbortSignal.any の例 ● 今実装しているもの

Slide 4

Slide 4 text

4 Deno とは ● 2018年に Node.js 作者 Ryan Dahl さんによって発表された ● JavaScript/TypeScript ランタイム ○ Web 標準 API、Node.js 互換レイヤーを持つ ○ ファイル、ネットワークアクセスなどに権限機能がついており安全 ○ Lint, Format そして LSP 機能などを標準で搭載

Slide 5

Slide 5 text

5 Deno 内部の JavaScript ● Deno API のインターフェースは JavaScript で実装されている ○ Web 標準 API、Node.js 互換レイヤーなど ○ ファイルシステム、ネットワークなど外界とのやり取りは  Rust ● 実行時に都度テキストとして読み込むと時間がかかる 👉 V8 スナップショット機能で JavaScript と ops の初期化処理を高速化

Slide 6

Slide 6 text

6 JavaScript がかければ コントリビュート可能

Slide 7

Slide 7 text

7 AbortSignal.any の例 ● 中止について扱う AbortSignal に新しい Web 標準 API が追加された

Slide 8

Slide 8 text

8 AbortSignal.any の例 ● まず WebIDL を見ながら引数の処理を書く

Slide 9

Slide 9 text

9 AbortSignal.any の例 ● 仕様の差分を見てどうやら Iterable な WeakSet が必要らしい

Slide 10

Slide 10 text

10

Slide 11

Slide 11 text

11 AbortSignal.any の例 ● なんやかんや実装して、レビューに対応して ……

Slide 12

Slide 12 text

12 AbortSignal.any の例 ● 承認されて Deno に取り込まれた 🎉

Slide 13

Slide 13 text

13 AbortSignal.any の例 ● わいわい 🎉

Slide 14

Slide 14 text

14 今実装しているもの ● Web 標準 API にアフィン変換を扱う DOMMatrix などの API が存在する 👉 Deno に experimental な WebGPU があるため、便利かもと提案し実装中