📝

Hotwireってなんなん。

2025/03/10に公開

Hotwireとの出会い

2025年、初春のある日。
QiitaでJunichi Ito (伊藤淳一)さんのこんな記事をみつけた。
https://qiita.com/jnchito/items/30ab6d7c84ee0a2b928a
Hotwireってなんか聞いたことがある気がする。けどなんなのかわからない。
ということで、調べてまとめてみることにした。

Hotwireとは

とりあえずQiitaの記事通り以下を読んでみる
https://zenn.dev/shita1112/books/cat-hotwire-turbo
Railsにおいて、「SPA風」のアプリケーションを作れる仕組みのことを指す。
Hotwireは、以下の3つで構成されている。

  • Turbo
  • Stimulus
  • Strada

🐱 Hotwireを使うと、フォーム・リンクからのリクエストは全てFetch APIを利用した非同期リクエストになる。このfetchに対して、サーバーはHTMLをレスポンスするんだ。

VueやReactの場合、Fetch APIへのリクエストはJSONでレスポンスされるけど、Hotwireの場合はHTMLがレスポンスされるのがミソっぽい。
バックエンドでレンダリングするので、モデル、バリデーションもサーバーサイド側で用意すればいいんだって。
※前者の場合はフロント側でDOMを構築するので、フロント/バックエンド共に↑を用意する必要がある。

ちなみにRails7系以降は標準で入っている。
以下のgemは必要だけど、その他は特に意識せずこの機能を享受することができるみたい。
https://github.com/hotwired/turbo-rails

何が嬉しい?

これまで同様にRailsを書きながら、より簡単に「SPI風」のアプリを構築することができる。

所感

ちょっとだけ賢くなった。
次はHotwireを実際にアプリで体感してみたい。

参考記事

https://hotwired.dev/
https://www.hotrails.dev/turbo-rails/turbo-rails-tutorial-introduction
https://ja.javascript.info/fetch
https://developer.mozilla.org/ja/docs/Web/API/Document_Object_Model/Introduction

Discussion