プログラミング フレームワーク ソフトウェア 公開日 2026.05.15 更新日 2026.05.15

htmx とは何か?HTML 属性で SPA 的な動きを実現する手法と React との使い分け

htmx は HTML 属性(`hx-get』 `hx-post』など)だけで SPA 的な動きを実現する小さな JavaScript ライブラリです。サーバ側で HTML 断片を返すモデルに戻すことで、`React 一辺倒の SPA 設計に違和感』を感じる現場で再評価されています。考え方・React との違い・採用判断軸を整理します。

先に要点

  • htmx は、`hx-get』 `hx-post』のような HTML 属性だけで部分更新やインタラクションを実現する 小さな JavaScript ライブラリ。フロントエンドフレームワークではなく、HTML を直接拡張する道具。
  • サーバは JSON ではなく HTML 断片を返す。`UI の状態はサーバが知っている』 `クライアント側に状態管理を作りすぎない』 という、SPA 一辺倒の流れと逆方向の設計が特徴。
  • Rails / Laravel / Django / Phoenix / Go のテンプレートエンジンと相性が良く、`サーバ側で HTML を組み立てる文化』を持つ案件で再評価が進んでいる。`React + REST API は重い』と感じる中小規模 Web で特に効く。
  • 万能ではない。` クライアント側で複雑な状態を持つ UI(リッチエディタ、ゲーム、大規模ダッシュボード)』には不向き。`サーバ駆動で十分な UI かどうか』を見極めるのが採用判断の中心。

htmx ってよく聞くけど、React の代わりなの?』 HTML 属性だけで動くって、jQuery と何が違うの?』 `Rails 復権の話と関係ある?』 ── 2023年頃から、SPA フレームワーク疲れの文脈で htmx の名前を見る機会が一気に増えました。

ざっくり言うと、htmx は HTML だけでサーバとの通信を書ける』ようにする小さなライブラリ</strong> です。SPA は重い』 JSON API を作るだけで仕事が倍になる』 状態管理の闇に毎回ハマる』── そんな現場の疲労感に対して、` サーバが HTML を返す古典的な Web の仕組みに、ちょっとだけモダンな部分更新を足す』 というアプローチで応えるのが htmx の立ち位置 です。

この記事では、2026年5月時点の htmx の状況をベースに、何ができるか・React との違い・どこで効くか・どこでは不向きか・採用判断 を、Rails / Laravel / Django などのサーバサイド経験者でも、React 経験者でも追える粒度で整理します。

htmx の核心 — HTML を拡張する小さな JS

htmx の本体は 1ファイルの小さな JavaScript(2026年5月時点で gzip 後 14KB 程度)で、それを読み込むと HTML に `hx-*』属性 が使えるようになります。

<button hx-get="/users/42/profile" hx-target="#profile">プロフィールを開く</button>
<div id="profile">(ここに HTML が差し込まれる)</div>

このボタンを押すと、ブラウザは /users/42/profile』に GET リクエストを送り、返ってきた HTML 断片を #profile』要素の中に差し込む という挙動になります。 `JavaScript を1行も書かずに部分更新ができる』のが、htmx の体験を一言で表す部分です。

代表的な属性

`hx-get』 `hx-post』 `hx-put』 `hx-delete』(HTTP メソッド)、`hx-target』(差し込み先)、`hx-swap』(差し込み方)、`hx-trigger』(発火条件)、`hx-vals』(送信値)。これだけ覚えれば多くの UI は組める。

サーバが返すもの

JSON ではなく HTML 断片。`プロフィールカードの HTML』 `テーブル行の HTML』 `モーダルの中身の HTML』など、`そのまま挿入できる形』で返す。

クライアント側の状態

持たない。`UI の状態 = サーバが返してきた HTML の現在形』。`React の useState で迷う』ような場面が原理的に減る。

SSR との関係

HTML が中心なので、SSR ファーストなフレームワーク(Rails / Laravel / Django / Phoenix / Hono + JSX 等)と自然に組み合わせられる。

SPA を作るために生まれた』のではなく、<strong> SPA を作らずに済むようにするための仕組み』 と捉えると、htmx の存在意義が見えてきます。

ハイパーメディア駆動 — HATEOAS の現代的解釈

htmx の思想的な背景は、`HATEOAS』(Hypermedia As The Engine Of Application State)という Web 本来の設計哲学を、現代的に再解釈したものです。

古典的な Web の発想

` 次に何ができるか』はサーバが返した HTML に含まれている。`このユーザーは編集できるか』 `削除できるか』はサーバが UI に書き込んで返す。クライアントは深いことを知らない。

SPA 時代に失われたもの

JSON ベースの API では、`いま何ができるか』をクライアント側で再計算する必要がある。`権限ロジックがフロントとバックに二重実装される』のはよくある問題。

htmx が戻す視点

サーバが HTML(= 次のアクションを内包したハイパーメディア)を返す形に戻すと、`今できることはサーバが決めて、クライアントはそれを表示するだけ』にできる。

ハイパーメディアの効用

API バージョニング、フロントとバックの認識ずれ、`画面と整合しないボタンが表示されてしまう』タイプのバグ ─ これらを構造的に減らせる。

昔の Web に戻る』のではなく、<strong> Web 本来の強みを現代的な道具で取り戻す』 というのが htmx の哲学です。 このあたりは作者の Carson Gross が公開している Hypermedia Systems という無料書籍に詳しくまとまっています。

React / SPA との比較

React で書くこと』と htmx で書くこと』を並べると、何が違うかが立体的に見えます。

React + REST API htmx + サーバサイド
状態の場所 クライアントとサーバの両方で持つ 主にサーバ。クライアントは表示専門
サーバが返すもの JSON HTML 断片
必要なフロント実装 コンポーネント / hooks / 状態管理 / ルーティング テンプレート(blade / erb / jinja 等) + 少しの hx-*
JS フットプリント 大きい(数百KB 〜 MB) 小さい(htmx 本体 14KB 程度)
権限ロジック サーバとフロントで二重に書きやすい サーバ側に集約しやすい
得意な UI リッチで動的、複雑な状態の SPA CRUD、業務系、コンテンツサイト
不得意な UI シンプルな業務 UI(オーバーキル感) リッチエディタ、リアルタイム、ゲーム

要点は どこに複雑性を置くか』の選択</strong> です。 React はクライアントに複雑性を引き取って、サーバを薄くする』、htmx は `サーバに複雑性を残し、クライアントを薄くする』。どちらが正解ではなく、業務の性質と既存のスタックに合うほう を選ぶ、という構図になります。

どこで効くか — htmx 向きの案件

実務で htmx が `効く』場面を整理します。

①業務系 Web アプリ

社内ツール、管理画面、CRM、入力フォーム中心の業務システム。`画面遷移 + フォーム送信』の世界で、SPA 化のコストに見合わないケースが多い。

② コンテンツサイト / メディア

ブログ、ニュース、ドキュメントサイトのような `読む』中心の UI。`いいねを押すと色が変わる』程度の動きは htmx で十分。

Rails / Laravel / Django の既存案件

サーバ側で HTML を組み立てる文化が既にある。`React 化のために API を二重実装』するコストを払わずに、現代的な UX に近づけたいケース。

④ 個人開発 / スタートアップの初期

小さいチーム / 1人開発 では、`フロントとバックを別人格で持つ』のはオーバーヘッド。htmx で `1人開発の総工数を縮める』効果が大きい。

シンプルな CRUD + ちょっとした非同期』で済む UI のかなりの部分は、htmx で十分実装できます。 特に <strong> SPA にしたが大して使いこなしていない案件』 ほど、htmx 化のリターンが大きい印象です。

どこで詰まるか — htmx の限界

逆に、htmx が向かないケースもはっきりしています。

①複雑なクライアント側状態

巨大フォームの動的バリデーション、リッチテキストエディタ、グラフィカルなフローエディタ ─ こうした `クライアントが状態を持たないと話にならない』UI は React / Vue / Svelte の領分。

② オフライン対応 / PWA

htmx はサーバ前提なので、`オフラインでも動く UI』は構造的に苦手。PWA + Service Worker 前提の案件は別アプローチが必要。

ネイティブアプリと UI を共有したい

React Native などで `モバイルと同じコンポーネントを Web でも使いたい』案件では、HTML 断片を返す htmx 系では合わない。

④ 大規模なフロントチーム

` 数十人のフロントエンドエンジニアで分業する』ようなチームでは、`コンポーネント単位での分担』を可能にするフレームワーク(React / Vue 等)の方が運用に向く。

htmx だと書けないわけではない』が、書ける範囲を超えると無理が出やすい』というのが正確な表現です。 ` UI 全体の複雑さの真ん中に、クライアント状態がガッツリ存在するかどうか』 が、採用可否の一番大きな判断軸になります。

Rails / Laravel / Django との相性

htmx は サーバ側で HTML を組み立てるフレームワーク と非常に相性がよく、特に Rails / Laravel / Django の案件で再評価が進んでいます。

Rails + Turbo / Stimulus との関係

Rails 公式の Hotwire(Turbo / Stimulus)も `HTML over the wire』の思想で htmx と近い。`Rails ならまず Hotwire、それ以外なら htmx』 という棲み分けが現実的。

Laravel(Blade)との組み合わせ

Blade テンプレートで HTML 断片を返すコントローラを作るだけ。Inertia / Livewire / htmx の3択になりがちで、`軽さ重視なら htmx』 が選ばれる。

Django との組み合わせ

` django-htmx』のようなヘルパー拡張があり、HTML 断片を返す view を簡単に書ける。`htmx + Django』 はコミュニティでも人気の組み合わせ。

Phoenix / Elixir(参考)

Phoenix LiveView と同じ系統の発想だが、htmx は技術的にもっとシンプル。`プロトコルWebSocket かどうか』が大きな違い。

SPA + REST API』 が標準だった2010年代の流れに対して、サーバが HTML を返す』 系がじわじわ復活していて、その代表的なライブラリの1つが htmx、というのが2026年現在の景色です。

AI 時代の htmx 観

AI 時代に htmx が再評価される文脈もあります。

AI でコードを生成しやすい

`HTML + サーバテンプレート』 はテキストとしてシンプルで、LLM が出力しやすい / 読みやすい構造。`React のコンポーネントツリーを把握させる』より低コスト。

小さなアプリを爆速で立てたい

AI で素早くプロトタイプを作るときに、`SPA を立てる手間』 を省略できる。v0 で UI のたたき台を作る ような流れと、`そのまま手早く動かす』選択肢として並ぶ。

サーバ駆動 UI と AI

` ChatGPT のような UI』 は実は htmx と相性が良い。`サーバが次に表示する HTML を返す』 という発想で、AI チャットや AI ワークフロー UI を素直に作れる。

フロント実装の `軽量化』 圧力

AI で開発スピードが上がるほど、`重い SPA を作る労力に見合うか』 が問われる。`軽い htmx で済むなら htmx』 という判断が経済的に成立しやすくなる。

React か htmx か』 ではなく、<strong> どの UI を htmx で、どの UI を React で書くか』 を意識して選ぶ時代 に入りつつあります。 すべてを SPA で書く時代は徐々に終わり、` 道具を使い分ける成熟期』 に入っている、というのが大きな流れです。

htmx に関するよくある質問

Q. htmx と jQuery の違いは何ですか?

A. jQuery は 任意の DOM 操作を JS で書きやすくする汎用ライブラリ』、htmx は <strong> HTML 属性で部分更新を宣言する専門ライブラリ』です。jQuery は 何でも書ける』 反面、コードが散らかりやすい。htmx は できることが意図的に絞られている』 ので、HTML がそのまま設計図になります。

Q. React を学ばずに htmx だけで仕事できますか?

A. 業務系 / 管理画面中心の案件であれば十分に可能です。 業界全体では React 系のスキルも依然として必須に近い</strong></strong> ので、htmx も覚える』 か `React + htmx 両方の使い分けができる』 立ち位置を目指すのが、キャリア上の柔軟性を保ちやすいです。

Q. SEO に htmx は不利ですか?

A. むしろ 有利に働くことが多い です。サーバが HTML をフルレンダリングして返すモデルなので、SSR / SSG と相性が良く、クローラに優しい』 状態を作りやすい。SPA の JS を実行しないと中身が見えない』 問題と無縁です。

Q. 認証 / 認可はどう扱いますか?

A. サーバ側で従来通りに扱う のが基本です。セッション Cookie + サーバ側のロールチェック』 という Web 標準のやり方で十分。API トークンJWT をクライアントで管理する』 という SPA 的な複雑さを抱える必要が少ないのも htmx の利点です。

Q. JavaScript で複雑な処理を書きたいときはどうしますか?

A. htmx は他の JS ライブラリと併用しやすい設計です。Alpine.js』 のような小さな状態管理ライブラリ、または必要箇所だけ vanilla JS / Hyperscript を使うのが定番です。巨大な状態管理が必要』 ならその時点で `React の方が向く』 と判断するのが健全です。

Q. htmx でリアルタイム更新はできますか?

A. できます。Server-Sent Events(SSE)』 や WebSockets』 のサポートがあり、hx-sse』 hx-ws』 属性で実装できます。チャット / 通知バッジ / リアルタイム集計などは、軽量実装で十分対応できる範囲です。

Q. テストはどう書きますか?

A. サーバ側のテスト が中心になります。/users/42/profile が期待した HTML 断片を返すか』 を統合テストで確認すれば、UI の正しさはほぼ担保できます。E2E テスト(Playwright / Cypress)』 で `クリック → 部分更新が反映される』 ところまでカバーすれば十分なケースが多いです。

参考リンク

あとで見返すならここで保存

読み終わったあとに残しておきたい記事は、お気に入りからまとめて辿れます。