Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
非ブラウザランタイムとWeb標準 / Non-Browser Runtimes and W...
Search
petamoriken / 森建
December 27, 2024
Programming
680
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
非ブラウザランタイムとWeb標準 / Non-Browser Runtimes and Web Standards
fukuoka.ts #2
https://fukuoka-ts.connpass.com/event/332933/
petamoriken / 森建
December 27, 2024
More Decks by petamoriken / 森建
See All by petamoriken / 森建
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
210
WebAssembly を読み込むベストプラクティス 2026年春版 / Best Practices for Loading WebAssembly (Spring 2026)
petamoriken
5
1.2k
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
270
Module Harmony
petamoriken
3
1.1k
Denoでフロントエンド開発 2025年春版 / Frontend Development with Deno (Spring 2025)
petamoriken
1
1.6k
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
340
フロントエンドの標準仕様をどう追っているか / How I follow the frontend standards specs
petamoriken
4
2.8k
ECMAScript、Web標準の型はどう管理されているか / How ECMAScript and Web standards types are maintained
petamoriken
3
680
DOM Observable
petamoriken
1
380
Other Decks in Programming
See All in Programming
プロポーザルを書いてもらう
pvcresin
0
480
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
160
Apache Hive: Toward a Cloud Native Lakehouse
okumin
0
190
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
0
130
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.5k
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
320
実装をデザインガイドラインに追従させるための取り組み / 260731-dip-mosh-design-system
dachi023
0
440
テーブルをDELETEした
yuzneri
0
140
Foundation Models frameworkで画像分析
ryodeveloper
1
610
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
180
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
400
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
470
Featured
See All Featured
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
760
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
950
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
66
57k
RailsConf 2023
tenderlove
30
1.5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Deep Space Network (abreviated)
tonyrice
0
250
A designer walks into a library…
pauljervisheath
211
24k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
640
Transcript
非ブラウザランタイムと Web 標準 fukuoka.ts #2 pixiv Inc. 森内建太 petamoriken 2014.12.27
2 自己紹介 • Web エンジニア • Deno コントリビューター • ECMAScript や Web 標準 を追うのが好き petamoriken カスタマーオペレーション
&セーフティ本部 オペレーション開発部
一人アドカレ完走しました 🎉 おすすめ記事 #1 Normative Changes とは #2 Array.prototype.sort 安定化 #3 プリミティブイテラブルを退ける 規約制定
#8 プロパティ列挙順一律化 #14 Math.sqrt 精度の正確さ保証 #24 IsRegExp の挙動変更(リジェクト)
4 様々な標準化団体によって定義される Web のための仕様 HTML, CSS, JS, WAI-ARIA, HTTP など多岐に渡る 近年ではブラウザと同じ JS コードが実行できるように Node.js など非ブラウザランタイムにも取り込まれている
👉 便利になってきたが問題も見えてきた Web 標準
5 • そもそもブラウザ/非ブラウザで求められるものが違う • 非ブラウザにどこまで正確な Web 標準 API が実装され ているのか不明瞭 ◦ やむを得ず独自拡張を入れる場合がある ◦ 特に fetch のギャップが大きい
Web 標準を取り入れることによる問題
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
7 サーバー、エッジといった非ブラウザランタイムで API 相互運用を実現するための W3C コミュニティグループ • minimum common API 策定 • fetch のサーバー用サブセット仕様作成 •
非ブラウザランタイムの知見を Web 標準側へ展開 👉 JS コミュニティ全体での有益化を信念に活動している WinterCG
8 WinterCG 参加者
9 あのランタイムが参加していないような……
10 Bun は JS コミュニティ全体というよりは Bun 自身が便利 であればよいと考えている(ように見える) Web 標準 API を取り入れつつも、基本それらはブラウザの ための API というスタンスで独自拡張を次々に入れている WinterCG 参加の誘いを断っている Bun
11 ブラウザで動かない “Bun 用のコード”
12 ブラウザで動かない “Bun 用のコード”
13 他ランタイムはなるべく独自機能にアクセスする方法を分 けているが Bun は Web 標準 API にそのまま拡張している Bun の独自拡張を標準と勘違いし、他ランタイムに対して 実行できないとバグ報告するユーザーが出始めている 👉 WinterCG と相反する行動を取っている Bun による Web 標準 API 独自拡張問題
14 多くのユーザーに使われるのが正義となる側面もある
15 • 非ブラウザランタイムに Web 標準 API が取り入れられ ることによる問題が見えてきた • WinterCG でサーバー、エッジ用のランタイムの相互 運用性を高めるための活動がされている • シェア争いの結果によって未来が変わりそう (TC39 や WinterCG で標準化を頑張っている Deno がもっと使われて欲しい……)
まとめ