124. Multi-page Apps & HTMX(複数ページアプリとの共存:新旧の技術を「いいとこ取り」する)
原理:Webサイトの「一部」を強化する
全部をHTMXにする必要はない
「HTMXを使うなら、サイト全体を一枚のつながったアプリ(SPA)にしなければならない」……と思っていませんか? 実は、それは間違いです。HTMXの本当の価値は、「既存の普通のWebサイト(MPA / Multi-page Application)の、一部のパーツだけを劇的に使いやすくする」ことができる点にあります。
- サイト全体は昔ながらの「リンクをクリックしてページ移動」。
- でも「検索窓」や「お気に入り追加」だけは、HTMXでサクサクと「部分更新」。 このような、既存の技術とHTMXの共存こそが、最も現実的で強力な使い道です。
実践:無理のない「部分的なプログレッシブ化」
1. アイランド・アーキテクチャ(島の考え方)
ページ全体という大きな海の中に、HTMXで動く「便利な島(アイランド)」を点在させるイメージです。
<!-- 普通のナビゲーション(リロードが発生する) -->
<nav>
<a href="/home">ホーム</a>
<a href="/about">私たちについて</a>
</nav>
<!-- HTMXで動く「島」(リロードが発生しない) -->
<section id="comment-section">
<button hx-get="/api/comments" hx-target="#comment-section">
コメントを読み込む
</button>
</section>
2. ページ遷移をまたぐ時の注意
HTMXで作った「島」は、普通のページ移動(リロード)が起きると、状態がリセットされます。もしページをまたいでも状態を保ちたいなら、歴史管理(111.)や、次に学ぶ「URLパラメータ」の活用が必要になります。
3. ステップ・バイ・ステップ解説
- 「重たい」場所を探す: ページ全体をリロードしているせいで、ユーザーがストレスを感じているパーツ(いいね、フィルタ、チャットなど)を見つけます。
- そこだけHTMX化する: ターゲットをそのパーツ自身(
thisや近くのdiv)に絞って、HTMXを導入します。 - 段階的に広げる: 一部が上手くいったら、次は別のパーツ……というように、少しずつHTMXの島を増やしていきます。
比較:SPA vs MPA+HTMX
フルSPA (React, Next.jsなど)
- 特徴: 最初から全てをJavaScriptで制御する。大規模開発には向くが、構築がとても複雑。
MPA + HTMX
- 特徴: 基本は普通のHTML。必要なところだけをHTMXで「アプリ化」する。
- 利点: 学習コストが低く、既存のサイトにも今日から導入できる。SEOとの相性も抜群(基本がHTMLなので)。
まとめ:初心者のための「段階的な進化」
既存のマルチページアプリをHTMXで強化することは、古い家に最新のスマート家電を導入するような楽しさがあります。
- 「全部」を狙わない: 最初から完璧なSPAを目指すと挫折します。まずは「一つひとつの部品」を便利にすることから始めましょう。
- Web標準との調和: リンク(
<a>)と HTMX のボタンが同じ画面に並んでいても、全く問題ありません。ブラウザは両方を正しく扱ってくれます。 - 身軽な開発: 大掛かりな環境構築は不要です。HTMLを一枚書くだけで、新旧の技術があなたの手の中で一つに溶け合います。
古き良きWebの安定性と、最新の動きの軽快さを。複数ページアプリとHTMXの共存という賢い選択を通じて、最も効率的に、そして最もユーザーに喜ばれる「現代的なWeb体験」を作り上げてください。第6章の締めくくりは、状態をURLに固着させる「URLパラメータ(125. URL Parameters)」です。