Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
宣言型部分更新は何を解決しどこへ向かうのか
Search
did0es
October 12, 2026
Technology
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
宣言型部分更新は何を解決しどこへ向かうのか
フロントエンドカンファレンス関西2026の登壇資料です。
did0es
October 12, 2026
More Decks by did0es
See All by did0es
【前編】このAPIいつ使うん?あの機能なに?V8のドキュメント、全部読んでみた
shuta13
0
160
TypeScript Compiler APIとPHP-Parserを活用し、TypeScriptとPHPで型を共有する
shuta13
1
1k
ブラウザの投機的読み込みと投機ルールAPIを理解し、Webサービスのパフォーマンスを最適化する
shuta13
3
400
うわっ...私のSwagger、古すぎ...?grpc-gateway向けのSwaggerと向き合う
shuta13
0
230
ViteとTypeScriptのProject Referencesで 大規模モノレポのUIカタログのリリースサイクルを高速化する
shuta13
3
400
歴代のWeb Speed Hackathonの出題から考えるデグレしないパフォーマンス改善
shuta13
8
940
Reconciliationの世界
shuta13
0
31
なぜクラウドサービスで Web コンソールを提供するのか
shuta13
4
2.5k
5分でわかるPreactのVDOMで作るWebエディタ
shuta13
0
290
Other Decks in Technology
See All in Technology
AgentCoreで実践するハーネスエンジニアリング
yakumo
1
290
生成AIで高い生産性を求められて、 悩み、乗り越えた話
mot_techtalk
2
130
MCPゲートウェイを作って運用してわかったこと — Agent時代の権限管理の現在地
mtpooh
10
3.2k
20260930_Gemma4_Hands-on
tsho
0
240
3つのアプローチで目指す チームを強くするAI駆動開発
thkt
0
130
Google Cloud Next Tokyo 26登壇時のスクリプト
recruitengineers
PRO
0
210
Lambda MicroVMsが分からなすぎたので使い所を1から考えてみた
tsukuboshi
2
430
自主式軟體工廠
philipz
0
240
実体験から学ぶ分析エージェントの開発と運⽤
recruitengineers
PRO
7
1.6k
ai_cording_with_k8s_knowledge.pdf
mochizuki875
1
310
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
540
Codex概要
ymiya55
0
470
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Chasing Engaging Ingredients in Design
codingconduct
0
350
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
910
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
720
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
450
Skip the Path - Find Your Career Trail
mkilby
1
250
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
550
WENDY [Excerpt]
tessaabrams
14
40k
Amusing Abliteration
ianozsvald
1
330
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
66k
Paper Plane (Part 1)
katiecoart
PRO
2
11k
Transcript
宣⾔型部分更新は何を解決し どこへ向かうのか 2026/10/12 did0es
Hirai Shuta | did0es(🗣 ディドス) SWE @ CIU / Next
Experts (Client) @ CyberAgent, Inc. Representative Director, FEC Association / Lead Organizer, FEC Tokyo More: https://did0.es
宣⾔的部分更新(DPU)
今⽇お話すること 1. Web標準におけるDPU 2. DPUに関連した他の技術 3. DPUとWeb標準でSPA開発できるか 4. まとめ
今⽇お話しないこと • DPU以外のWeb標準の詳しい説明 • DPUとAIのかけ合わせ
Web標準におけるDPU
① Web標準におけるDPU DPUについて簡潔に • Chrome 148から実験的に利⽤可能 • ⽂書のコンテンツの組み換え向け機能 • HTML要素とJS
APIによって提供
DPUが⽣まれるまで
① Web標準におけるDPU マークアップの問題点 • HTML:コンテンツ順にかかわらず、上から下に配信 • CSS:コンテンツ順序を変更できるが、a11yに配慮必要
① Web標準におけるDPU JSの問題点 • DOM操作が複雑 • パフォーマンス悪化させやすい
① Web標準におけるDPU ライブラリの問題点 • ⽂書のルールに則るよりも、コンポーネント志向が強い • パフォーマンスが下がりうる ◦ ページが準備できるまで待つ ◦
⾮同期でUIを読み込む ◦ フレームワーク⾃体が重い
これらを解決するDPUのAPI
① Web標準におけるDPU メインの2つのAPI • Patching(順不同ストリーミング) • 動的マークアップの刷新
Patching(順不同ストリーミング)
① Web標準におけるDPU HTMLにプレースホルダを置いて、後からコンテンツを⼊れ替える
① Web標準におけるDPU 記法 その1 • <template> 要素 ◦ 置き換えコンテンツ •
<?marker name> 要素 ◦ 処理命令プレースホルダ ◦ XML以前から存在。HTMLではコメント扱いで無視
① Web標準におけるDPU ⼊れ替え中にフォールバックのコンテンツを表⽰する
① Web標準におけるDPU 記法 その2 • <?start> / <?end> 要素 •
テンプレート置き換え中に表⽰するコンテンツ⽤の処理命令
① Web標準におけるDPU 他のライブラリでいうところのなに • Next.jsのLayout • RemixのRootのLayout • Astroの<slot> •
その他Island Architectureに基づくもの ◦ HotWire ◦ Turbolinks
① Web標準におけるDPU 備考 • WICGのProposal • GoogleChromeLabsによるPolyfill • 制限 ◦
⼊れ替えや挿⼊はMutationObserverによるものなので HTMLパーサーに関与できない
JS向けの⼿段も
動的マークアップの刷新
① Web標準におけるDPU HTMLの動的な挿⼊⽅法 • innerHTML, outerHTML • setHTMLUnsafe • setHTML
• createContextualFragment • insertAdjacentHTML
① Web標準におけるDPU innerHTML, outerHTML • サニタイズなし • Declarative Shadow DOM(DSD)⾮対応
• inner:⼦要素 • outer:⾃⾝含めた全体の要素を置き換え
① Web標準におけるDPU setHTMLUnsafe • innerHTMLの後継 • サニタイズなし • DSDに対応 ◦
⽂字列からShadow Rootを構築できる
① Web標準におけるDPU setHTML • 対象要素の⼦要素を置き換え • サニタイズあり ◦ HTML Sanitizer
APIによるもの ◦ 外部から⼊⼒を受け付けられる
① Web標準におけるDPU createContextualFragment • サニタイズなし • <script>埋め込んで実⾏できる • DocumentFragmentを返す ◦
⽣DOMを書き換えない
① Web標準におけるDPU insertAdjacentHTML • サニタイズなし • 指定した位置にDOMノードを挿⼊ ◦ beforebegin(⾃⾝の前) ◦
afterbegin(最初の⼦要素の前) ◦ beforeend(最後の⼦要素の後) ◦ afterend(⾃⾝の後)
これらを拡張‧刷新
① Web標準におけるDPU 拡張‧刷新の⽅向性 • ストリーミング向けAPIを追加 • サニタイズなしのUnsafeなAPIを拡張 ◦ オプションで有効化は可能 ◦
runScripts を有効化でスクリプトの実⾏も可能
① Web標準におけるDPU setHTML(html, options); • 従来のsetHTMLをオプションで拡張
① Web標準におけるDPU replaceWithHTML(html, options); • outerHTML相当 • オプションで拡張
① Web標準におけるDPU beforeHTML(html, options); • insertAdjacentHTML(ʻbeforebegin’, …) 相当 • オプションで拡張
① Web標準におけるDPU prependHTML(html, options); • insertAdjacentHTML(ʻafterbegin’, …) 相当 • オプションで拡張
① Web標準におけるDPU appendHTML(html, options); • insertAdjacentHTML(ʻbeforeend’, …) 相当 • オプションで拡張
① Web標準におけるDPU afterHTML(html, options); • insertAdjacentHTML(ʻafterend’, …) 相当 • オプションで拡張
① Web標準におけるDPU 備考 • WICGのProposal • GoogleChromeLabsによるPolyfill
DPUのその他のAPI
① Web標準におけるDPU Route matching • CSS向けの拡張 • View Transition APIで実装が難しい領域をカバー
◦ ⼀覧ページ ↔ 詳細ページ
① Web標準におけるDPU CSSでURLをMatchingする • @navigation (from: --home) { ... }
• @navigation (to: --about) { ... } • @navigation (between: --home and --about) { ... } • @navigation (at: url("/exact/?a=b")) { ... }
① Web標準におけるDPU 遷移のイベント的なもので制御 • @navigation (phase: loading) { ... }
• @navigation (phase: ready) { ... } • @navigation (phase: committed) { ... }
① Web標準におけるDPU ユーザーのNav関連のアクションのMatching • @navigation (history: navigate) { ... }
• @navigation (history: reload) { ... } • @navigation (history: traverse) { ... } • @navigation (history: back) { ... } • @navigation (history: forward) { ... }
① Web標準におけるDPU 疑似要素によるURLのMatching • a:link-to(--home) { ... } • a:link-to(url-pattern("/about"))
{ ... } • a:link-to(url("/exact?a=1")) { ... }
DPUに関連した他の技術
② DPUに関連した他の技術 SPAに⽤いられうるWeb標準の例 • DOM Parts API • Web Components
• Declarative Shadow DOM • moveBefore(DOM API) • signals‧AbortSignal • View Transition API • Popover API, Top Layer API etc...
② DPUに関連した他の技術 DPUとの組み合わせ⽅を紹介(⭐マークがついたもの) • ⭐ DOM Parts API • Web
Components • Declarative Shadow DOM • moveBefore(DOM API) • signals‧AbortSignal • ⭐ View Transition API • Popover API, Top Layer API etc...
DOM Parts APIとPatchingの併⽤
② DPUに関連した他の技術 DOM Parts APIの “{{}}” による表現 • 処理命令で “{{}}”
に対する注釈付け • <template>や動的マークアップ向けAPI以外をカバー
② DPUに関連した他の技術 contentrevision属性 • どのページにもあるコンテンツを再読み込みしないようにする • 例:問い合わせのウィジェット
② DPUに関連した他の技術 patchsrc属性 • 外部URLを取得してコンテンツを更新するとき、 JSを外部から読み込むときと同じレベルのセキュアさで⾏える • 例:<img>
View Transition APIと Route Matchingの併⽤
② DPUに関連した他の技術
DPUとWeb標準でSPA開発できるか
③ DPUとWeb標準でSPA開発できるか https://web-standards-spa.did0es.workers.dev
③ DPUとWeb標準でSPA開発できるか 条件 • Chrome最新版(Chrome 154)で動作する ◦ enable-experimental-web-platform-featuresフラグをON • ライブラリを使わない
◦ Polyfillやその他ライブラリなし
③ DPUとWeb標準でSPA開発できるか PoCでDPUと併せて使⽤したWeb標準 • Web Components • Declarative Shadow DOM
• moveBefore(DOM API) • View Transition API • Popover API, Top Layer API
③ DPUとWeb標準でSPA開発できるか 使⽤しなかったWeb標準 • DOM Parts API • signals(TC39 Signals)
デモ
③ DPUとWeb標準でSPA開発できるか https://github.com/shuta13/web-standards-spa
ソースコード解説
ReactやVueは代替されるのか
③ DPUとWeb標準でSPA開発できるか 部分的にそう • Depsを削ることが可能 • ただ、これを抽象化して提供するのが現実的 ◦ 単体で流⾏るようなものとは思えないほどの複雑さ •
結局ReactやVueは需要がある
③ DPUとWeb標準でSPA開発できるか 内部実装でこういったWeb標準を使い始める? • Web標準に重きをおいている、Svelteのようなものが 真っ先に取り⼊れる? • Vue.jsのVapor Mode? •
React CompilerのようなAOTコンパイラ?
まとめ
④ まとめ • Web標準のDPUについて、 従来のDOM APIや既存のライブラリと⽐較しつつ紹介した • DPUがすべて置き換えるわけではないが、⾮常に有⽤ • 逆にUI関連技術がDPUを取り⼊れていく⽅向が⾃然かも
④ まとめ 参考⽂献 • 宣⾔型部分更新(chrome for developers) • WICG Proposal
ありがとうございました