キッサ カタダ

テクノロジー

RemixのAdapterにHonoを選択した理由

2024-08-29T15:21:03.146Zに公開
2024-09-08T13:01:12.369Z
#Remix
#Hono
<h2 id="h8d027c8ed3">はじめに</h2><p>約5年前にRuby on Railsからソフトウェア開発業界に飛び込んだ私ですが、今ではRemixやHono, Cloudflare, Supabaseといった技術をよく使っています。</p><p>Next.jsも含め、機能が豊富でフレームワーク自体に学習コストが大きい分便利に使える技術も非常に魅力的ですが、最近の私の好みはフレームワークやライブラリは薄く最小限に軽量なものを選択し、なるべくWEB標準の機能を使って(もしくは理解して)使えるような技術です。</p><p>そんな中でRemixというWEB標準の機能を積極的に使えるフルスタックフレームワークに出会い、さらには超軽量でハイパフォーマンスなのにフレームワークとしての層は薄くてシンプルなHonoに出会いました。</p><p>当然RemixとHonoを一緒に使いたい!と考えるわけですが、そもそもRemixとHonoを一緒に使うことの何が嬉しいのか、、RemixのAdapterってそもそもなんだっけという基本的なところまで立ち返ってみたので記事にしました。</p><p>これからRemixとHonoを使ってみたい!RemixのAdapterにどんな技術を選定しようか迷っている方の参考情報になれれば幸いです。</p><h2 id="hc1a7ae78e3">そもそもRemixのAdapterとは</h2><p>RemixのAdapterを理解するためには、Remixがそもそもどんなものかを理解する必要があります。</p><p>まずは公式ドキュメントを読んでみましょう!</p><p><a href="https://remix.run/docs/en/main/discussion/runtimes">https://remix.run/docs/en/main/discussion/runtimes</a></p><p>RemixはSSR(サーバーサイドレンダリング)ができるフレームワークです。</p><p>コンポーネントをレンダリングするサーバーサイド環境は、実際にRemixアプリケーションが動作しているサーバーサイド環境であり、Node.jsサーバーやCloudflare Workers、Deno、Vercelなどのサーバーレス環境です。</p><p>これらのサーバー環境をそのまま使おうとすると、各環境ごとに異なるAPIだったり、仕様だったりが存在するので、採用するサーバーサイド環境によってアプリケーションコードが変わってしまいます。</p><p>そんなサーバーサイド環境の差分を吸収し、どんな環境でも同じようにRemixアプリケーションを開発できるようにするためのものがAdapterなのです。</p><p>create-remixすると、Express + Node.jsアダプターが採用された状態のRemixアプリケーションが構築されます。他にもRemix公式がさまざまな環境に向けた公式アダプターを用意しており、開発者はホスティング環境に合わせてアダプターを選択するだけで通常は問題ありません。</p><p>公式アダプターの一覧は下記ページにまとまっています。</p><p><a href="https://remix.run/docs/en/main/other-api/adapter">https://remix.run/docs/en/main/other-api/adapter</a></p><h2 id="hd91150291c">RemixのAdapterにHonoを選択するメリット</h2><p>ここまでで、RemixにおけるAdapterの役割と、どんな選択肢があるのかを理解いただけたと思います。</p><p>では、なぜRemix公式によって豊富にAdapterが用意されているのにも関わらずHonoをAdapterとして採用するのでしょうか。</p><p>以下は、私がHonoをRemixアプリケーションのAdapterとして採用する上でメリットと考えていることです。</p><ul><li>とにかく軽量でハイパフォーマンスであること</li><li>バンドルサイズが小さいので、エッジコンピューティングとの親和性が高い</li><li>TypeScriptをファーストクラスサポートしている</li><li>Web標準APIを採用しているため、学習コストが低くフレームワーク依存の知識が不要</li><li>マルチプラットフォームに動作するため、実行環境が違ってもコードを再利用できる</li><li>ミドルウェアが豊富なので、必要な時に必要なミドルウェアを実装することで軽量かつスピーディに機能を追加できる</li></ul><p>Honoの公式ドキュメントを見ても分かるとおり、Honoはとにかく軽量でパフォーマンスが良いことをウリにしています。</p><p><a href="https://hono.dev/">https://hono.dev/</a></p><p>軽量さは公式ドキュメントにもデカデカと書いてありますし、作者の<a href="https://x.com/yusukebe/status/1828046951352516628" target="_blank" rel="noopener noreferrer nofollow">yusukebeさんのX</a>にてコア部分が11KBであることが明かされています。</p><p>実際のアプリケーションのパフォーマンスは、少なくともDB操作するAPIのパフォーマンスだったりRemixアプリケーションだけでは担保できない要素も含むため一概には言えませんが、他のアダプターを採用した場合と比べてパフォーマンスも良さそうですね。</p><p>また、個人的には特にWEB標準APIを採用している点もすごく良くて、フレームワークとしての薄さがさまざまなメリットをもたらしてくれるだろうなと感じています。</p><h2 id="h9be0c3393d">おわりに</h2><p>RemixのAdapterにHonoを採用することは、短期的に見ても中長期的に見てもかなりメリットがあるなと感じています!</p><p>今後もHonoの動向はウォッチしつつ、個人で開発しているプロダクトでもガンガン使っていきつつ、本業のバックエンドもHonoでリプレイスできないかと思ってみたり…。</p><p>実際にRemixのAdapterとしてHonoを採用し、Cloudflare環境で動作するようにした時の記事も過去に書いておりますので、よろしければこちらもご覧ください。</p><p><a href="https://www.kissa-katada.com/technology/5meuyt7mb2t">https://www.kissa-katada.com/technology/5meuyt7mb2t</a></p><p>ぜひ皆さんもRemix on Honoを試してみてください!</p>
RK

カタダ リョウタ

キッサカタダマスター兼フロントエンド寄りのソフトウェアエンジニア。

多趣味に生きてます。

RK

カタダ リョウタ

キッサカタダマスター兼フロントエンド寄りのソフトウェアエンジニア。

多趣味に生きてます。

目次