コンテンツにスキップ

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. ステップ・バイ・ステップ解説

  1. 「重たい」場所を探す: ページ全体をリロードしているせいで、ユーザーがストレスを感じているパーツ(いいね、フィルタ、チャットなど)を見つけます。
  2. そこだけHTMX化する: ターゲットをそのパーツ自身(this や近くの div)に絞って、HTMXを導入します。
  3. 段階的に広げる: 一部が上手くいったら、次は別のパーツ……というように、少しずつ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)」です。