Slide 1

Slide 1 text

非ブラウザランタイムと Web 標準 fukuoka.ts #2 pixiv Inc. 森内建太 petamoriken 2014.12.27

Slide 2

Slide 2 text

2 自己紹介 ● Web  エンジニア ● Deno コントリビューター ● ECMAScript  や  Web 標準 を追うのが好き petamoriken カスタマーオペレーション &セーフティ本部 オペレーション開発部

Slide 3

Slide 3 text

一人アドカレ完走しました 🎉 おすすめ記事 #1 Normative Changes とは #2 Array.prototype.sort 安定化 #3 プリミティブイテラブルを退ける 規約制定 #8 プロパティ列挙順一律化 #14 Math.sqrt 精度の正確さ保証 #24 IsRegExp の挙動変更(リジェクト)

Slide 4

Slide 4 text

4 様々な標準化団体によって定義される Web のための仕様 HTML, CSS, JS, WAI-ARIA, HTTP など多岐に渡る 近年ではブラウザと同じ JS コードが実行できるように Node.js など非ブラウザランタイムにも取り込まれている 👉 便利になってきたが問題も見えてきた Web 標準

Slide 5

Slide 5 text

5 ● そもそもブラウザ/非ブラウザで求められるものが違う ● 非ブラウザにどこまで正確な Web 標準 API が実装され ているのか不明瞭 ○ やむを得ず独自拡張を入れる場合がある ○ 特に fetch のギャップが大きい Web 標準を取り入れることによる問題

Slide 6

Slide 6 text

6 「え? fetch() 入れるの? CORS は? Cookie は? FormData や URLSearchParams は?? WPT (Web Platform Tests) は通す の?」などの、およそ想像通りの反応をみると、そこにあったイ ンピーダンスミスマッチは「Fetch を入れる」と「fetch() を 入れる」の違いととれる。Web に詳しい人は前者だと思い、 Node メンテナが求めていたのは後者だけだった。Node では名 前を変えるという案もあったが、変えたところで誰も得はしな かっただろう。 https://blog.jxck.io/entries/2022-09-30/XMLHttpRequest.html

Slide 7

Slide 7 text

7 サーバー、エッジといった非ブラウザランタイムで API 相互運用を実現するための W3C コミュニティグループ ● minimum common API 策定 ● fetch のサーバー用サブセット仕様作成 ● 非ブラウザランタイムの知見を Web 標準側へ展開 👉 JS コミュニティ全体での有益化を信念に活動している WinterCG

Slide 8

Slide 8 text

8 WinterCG 参加者

Slide 9

Slide 9 text

9 あのランタイムが参加していないような……

Slide 10

Slide 10 text

10 Bun は JS コミュニティ全体というよりは Bun 自身が便利 であればよいと考えている(ように見える) Web 標準 API を取り入れつつも、基本それらはブラウザの ための API というスタンスで独自拡張を次々に入れている WinterCG 参加の誘いを断っている Bun

Slide 11

Slide 11 text

11 ブラウザで動かない “Bun 用のコード”

Slide 12

Slide 12 text

12 ブラウザで動かない “Bun 用のコード”

Slide 13

Slide 13 text

13 他ランタイムはなるべく独自機能にアクセスする方法を分 けているが Bun は Web 標準 API にそのまま拡張している Bun の独自拡張を標準と勘違いし、他ランタイムに対して 実行できないとバグ報告するユーザーが出始めている 👉 WinterCG と相反する行動を取っている Bun による Web 標準 API 独自拡張問題

Slide 14

Slide 14 text

14 多くのユーザーに使われるのが正義となる側面もある

Slide 15

Slide 15 text

15 ● 非ブラウザランタイムに Web 標準 API が取り入れられ ることによる問題が見えてきた ● WinterCG でサーバー、エッジ用のランタイムの相互 運用性を高めるための活動がされている ● シェア争いの結果によって未来が変わりそう (TC39 や WinterCG で標準化を頑張っている Deno がもっと使われて欲しい……) まとめ