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
230
WebAssembly を読み込むベストプラクティス 2026年春版 / Best Practices for Loading WebAssembly (Spring 2026)
petamoriken
5
1.2k
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
280
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
350
フロントエンドの標準仕様をどう追っているか / How I follow the frontend standards specs
petamoriken
4
2.8k
ECMAScript、Web標準の型はどう管理されているか / How ECMAScript and Web standards types are maintained
petamoriken
3
690
DOM Observable
petamoriken
1
390
Other Decks in Programming
See All in Programming
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
360
AWS Transform Customによる Spring Boot 2.xから4.xへのVerUp
satoshi256kbyte
2
120
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
490
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
130
Hono + Inertia + React で LP を構築した話
oukayuka
2
190
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
100
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
110
仕様駆動開発の消費期限
watany
20
9.2k
How I Won Prize Money at a Hackathon Using Codex and Symphony Alpha
yasei_no_otoko
0
130
Oxlintはいいぞ(続)
yug1224
1
500
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.8k
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
140
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
510
Everyday Curiosity
cassininazir
0
300
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
Chasing Engaging Ingredients in Design
codingconduct
0
290
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
550
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
230
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Un-Boring Meetings
codingconduct
0
400
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 がもっと使われて欲しい……)
まとめ