👩‍🚒

Hono + htmx + Cloudflareでアプリケーションを実装してみる

2024/08/20に公開

はじめに

本記事は、@yusukebe 氏が提案する、「Hono + htmx + Cloudflareスタック」を使用したサーバレスアプリケーションを開発する流れを紹介します。
このスタックは、通常API開発に利用される HonoCloudflare に、JavaScript無しで動的なページを構築できる htmx を加えることで、CDNエッジで動作するマルチページアプリケーション(MPA)を作成可能にします。

対象読者は、Hono、htmx、Cloudflareに初めて触れるエンジニアです。

Cloudflareアカウントのセットアップ

Cloudflareのアカウントを持っていない方は、こちら から作成できます。
Freeプランでは、請求情報の入力が不要なため、すぐに利用を開始できるのも良いところです。

Wrangler CLIのセットアップ

Cloudflare Workersを利用するためのCLIである Wrangler をグローバルにインストールします。

npm i -g wrangler

次に、Wranglerに権限を与えるために、下記コマンドを実行してください。

npx wrangler login

ブラウザでCloudflareにログインできれば、Wranglerの設定は完了です。

環境構築

リポジトリのクローン

https://github.com/yusukebe/hono-htmx
まずは、テンプレートリポジトリをクローンします。

git clone git@github.com:yusukebe/hono-htmx.git

このリポジトリをテンプレートとして、実装を進めていきます。

依存関係のインストール

次に、クローンしたプロジェクトの依存関係をインストールします。

npm install

D1の作成

データベースを作成します。データベースの設定は、wrangler.toml ファイルで定義します。テンプレートに含まれる wrangler.sample.toml ファイルを参考にして設定を行いましょう。

https://github.com/yusukebe/hono-htmx/blob/9636122a450468e102953e5e911cc67f73b2255f/wrangler.sample.toml

wrangler d1 create todo

上記コマンドを実行すると、 database_id が払い出されます。このIDを wrangler.toml ファイルの該当箇所に置き換えてください。

SQLの実行

次に、SQLを実行してデータベースを設定します。必要に応じて、 .sql ファイルを編集してください。
ローカルで実行する場合:

wrangler d1 execute todo --local --file=todo.sql

リモートで実行する場合:

wrangler d1 execute todo --remote --file=todo.sql

開発ビルド

開発環境を立ち上げるには、以下のコマンドを実行します。

npm run dev

デプロイ

アプリケーションをデプロイする際は、以下のコマンドでデプロイを行います。

npm run deploy

開発フロー

おわりに

開始からおよそ10分でデプロイまでたどり着けたのは驚きました。ただし、モーダルなどのインタラクティブなUIを作成したり、アップロードできるファイルサイズの対応など、工夫が必要そうだと感じました。軽くてシンプルなアプリケーションを開発する際には最適なスタックです!

参考

Discussion