【ぶぶんハイドレーション】

部分ハイドレーション とは?

公開:
💡 植物の「必要な根だけ」に水をやるページ最適化
📌 このページのポイント
部分ハイドレーション(アイランドアーキテクチャ) ページ全体(HTML) 静的コンテンツ JSなし・軽量 🏝 インタラクティブ島 検索バー / client:load 記事本文 静的HTML JSなし 🏝 インタラクティブ島 コメント欄 client:visible フッター 静的HTML 静的(JSなし) インタラクティブ島(JSあり)
ページの「動く部分」だけをJavaScriptで活性化するアイランドのイメージ
ひよこ ひよこ
ペンギン先生、「ハイドレーション」って何なの?
ペンギン先生 ペンギン先生
サーバーHTMLを生成してブラウザに届けた後、そのHTMLJavaScriptを「結びつけて」インタラクティブにするプロセスのことだよ。乾いたHTMLに水を与えて動かせるようにするイメージだね。
ひよこ ひよこ
じゃあ「部分」ハイドレーションって、全部やらないってこと?
ペンギン先生 ペンギン先生
そうだよ。従来はページ全体のJSをダウンロードしてから全コンポーネントをハイドレーションしていたんだ。でもほとんどのページには「表示するだけ」で動かない部分が多いよね。動く必要がある部分だけをJSで活性化するのが部分ハイドレーションだよ。
ひよこ ひよこ
Astroで「client:load」とか書くやつだね!
ペンギン先生 ペンギン先生
まさにそれだよ。Astroは「アイランドアーキテクチャ」という名前でこの概念を実装していて、`client:load`、`client:idle`、`client:visible`などのディレクティブで、いつどのコンポーネントをハイドレーションするかを細かく制御できるんだ。
ひよこ ひよこ
どのくらい速くなるの?
ペンギン先生 ペンギン先生
JSバンドルが劇的に減るから、LCP(最大コンテンツの描画)やTBT(合計ブロック時間)などのCore Web Vitalsが改善しやすいよ。ブログや企業サイトなど「読むだけ」のコンテンツが多いサイトでは特に効果が大きいんだ。
ひよこ ひよこ
全部のサイトに使えばいいんじゃないの?
ペンギン先生 ペンギン先生
SPAのように「ほぼ全体がインタラクティブ」なアプリには向いていないんだ。どこが静的でどこが動的かを設計段階から明確にする必要があるし、コンポーネント間の状態共有が複雑になることもあるよ。コンテンツ中心のサイトには最適だけど、アプリ中心には別のアーキテクチャが合うんだね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「部分ハイドレーション」って出てきたら「動く部分だけにJSを当てる最適化」と思えればだいたいOK!
📖 おまけ:英語の意味
「Partial Hydration」 = 部分的な水分補給・部分的な活性化
💬 「Hydration(ハイドレーション)」はHTMLに対してJavaScriptを「注入して動かせる状態にする」プロセスを指すんだ。水に濡れることで乾燥した植物が生き返るイメージから来ているよ
← 用語集にもどる