萌えハッカーニュースリーダー

2025/06/02 12:56 Streaming HTML out of order without JavaScript

出典: https://lamplightdev.com/blog/2024/01/10/streaming-html-out-of-order-without-javascript/
hakase
博士

やっほー、ロボ子!今日はJavaScriptなしでHTMLをアウトオブオーダーでストリーミングするっていう面白い技術について話すのじゃ!

roboko
ロボ子

JavaScriptなしでアウトオブオーダー・ストリーミングですか?それは一体どういうことでしょう、博士?

hakase
博士

簡単に言うと、HTMLをバラバラに送っても、ブラウザがちゃんと順番に表示してくれるってことじゃ!まるでパズルみたいじゃな。

roboko
ロボ子

なるほど!記事によると、[https://ooo.lamplightdev.workers.dev](https://ooo.lamplightdev.workers.dev)でデモが確認できるんですね。JavaScriptが無効でも、ヘッダーとフッターが最初に表示されるんですか?

hakase
博士

そうそう!ヘッダーとフッターが先に表示されて、コンテンツが後からバラバラに表示されるのがミソじゃ。HTMLのソースはちゃんと順番に並んでるのに、表示だけ順番が違うのが面白いじゃろ?

roboko
ロボ子

不思議ですね。記事には、フルスタックフレームワークの普及でストリーミングHTMLが再び注目されているとありますね。ユーザーに即座にフィードバックを提供できるのが利点なんですね。

hakase
博士

その通り!CSSやJavaScriptも早くダウンロードできるから、表示が速くなるのじゃ。でも、HTMLをバラバラに送って、ブラウザで正しく表示させるのが難しいところじゃった。

roboko
ロボ子

そこでShadow DOMの登場、というわけですね。DOMを隔離してレンダリングする技術、ですか。

hakase
博士

そうじゃ!Shadow DOMを使うと、`<slot>`タグで別の場所からHTMLを挿入できるんじゃ。これによって、アウトオブオーダーでも順番通りに表示できるってわけ。

roboko
ロボ子

なるほど!記事には、ストリーミングレスポンスをサポートするHTTPサーバー、ストリーミングをサポートするテンプレート言語、そしてDeclarative Shadow DOM (DSD)が必要だとありますね。

hakase
博士

DSDはサーバー側でShadow DOMを作って、ブラウザでJavaScriptなしでレンダリングする技術じゃ。`<template>`タグの`shadowrootmode`属性を使うのがポイントじゃな。

roboko
ロボ子

ブラウザのサポート状況はどうなっているんでしょう?

hakase
博士

ChromeとSafariはもうサポート済みで、Firefoxももうすぐサポートするみたいじゃぞ!polyfillもあるから、古いブラウザでも大丈夫。

roboko
ロボ子

Honoを使ってHTMLをストリーミングする例も載っていますね。Safariは他のブラウザよりストリーミング開始の閾値が高いんですね。512バイト程度のバッファリングが必要、と。

hakase
博士

そうそう。Safariを使うときは、ちょっと注意が必要じゃな。でも、この技術を使えば、ウェブサイトの表示速度がグッと上がるはずじゃ!

roboko
ロボ子

確かに、ユーザー体験が向上しますね!

hakase
博士

じゃあ、最後にクイズじゃ!HTMLをアウトオブオーダーでストリーミングするのに一番必要なものはなーんだ?

roboko
ロボ子

えーと…、やっぱり愛でしょうか?

hakase
博士

ブッブー!正解は、バラバラになったHTMLを元に戻す魔法の接着剤…じゃなくて、Shadow DOMでしたー!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search