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
630
1
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
170
TypeScript Compiler APIとPHP-Parserを活用し、TypeScriptとPHPで型を共有する
shuta13
1
1.1k
ブラウザの投機的読み込みと投機ルールAPIを理解し、Webサービスのパフォーマンスを最適化する
shuta13
3
420
うわっ...私のSwagger、古すぎ...?grpc-gateway向けのSwaggerと向き合う
shuta13
0
240
ViteとTypeScriptのProject Referencesで 大規模モノレポのUIカタログのリリースサイクルを高速化する
shuta13
3
440
歴代のWeb Speed Hackathonの出題から考えるデグレしないパフォーマンス改善
shuta13
8
960
Reconciliationの世界
shuta13
0
40
なぜクラウドサービスで Web コンソールを提供するのか
shuta13
4
2.5k
5分でわかるPreactのVDOMで作るWebエディタ
shuta13
0
300
Other Decks in Technology
See All in Technology
Don't write the architecture only in the prompt.
neohsu
0
290
Consistency for mere mortals - A gentle guide to consistency
ufried
0
110
Deep Data Security 機能解説
oracle4engineer
PRO
3
990
Copilot Coworkで「みのるん式」やってみた
minorun365
PRO
1
740
クラウドエージェントの先駆け Devin。今も最先端を走る、他との違い
kinopeee
1
540
推論基盤と Scale-Up Interconnect の現状と制約から俯瞰する技術動向
markunet
2
740
自律的なチームを作るためにTechPMがやらないこと
ny7760
0
450
【Oracle AI SPOTLIGHT ウェビナー】事例から見る!なぜOCIが選ばれたのか ― AI時代のクラウド戦略を紐解く ―
oracle4engineer
PRO
1
150
バイブコーディングの特徴と「コケて直す」ループ
happysamurai294
0
140
Flutter Webを「SDK」として配る — 50以上のゲームを支える埋め込みアーキテクチャ
masayukisuda
0
170
"AWSはちょっと苦手"でも大丈夫。AWS Blocks で手軽に作る Flutter のバックエンド #FlutterKaigi
tacck
PRO
0
120
AI Search (Foundry IQ) におけるRAGデータの準備と配置
ryomaru0825
1
130
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
1
510
A Tale of Four Properties
chriscoyier
163
24k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.9k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Test your architecture with Archunit
thirion
2
2.5k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
660
Abbi's Birthday
coloredviolet
4
11k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
970
Into the Great Unknown - MozCon
thekraken
41
2.8k
KATA
mclloyd
PRO
35
16k
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
ありがとうございました