Cloudflare Workersで使えるシンプルだけど奥が深いフレームワークHonoをためしてみた

Cloudflare Workersで使えるシンプルだけど奥が深いフレームワークHonoを紹介します。
2022.06.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、CX事業本部MAD事業部の森茂です。
Cloudflare Workersで動作するTypeScript製フレームワークHonoを紹介させていただきます。

Honoとは

@yusukebe氏を中心に開発が進められているフレームワークでExpressでアプリケーションを作るような書き方でCloudflare Workersで動くアプリケーションを簡単に組み上げていくことができます。

import { Hono } from 'hono'
const app = new Hono()

app.get('/', (c) => c.text('Hono!!'))

app.fire()

Cloudflare WorkerはService WorkerのためNode.jsに依存したAPIは動作しません。Cloudflare Workers上でアプリケーションを作ろうとすると意外と今までNode.jsのAPIを意識せずに使っていたのだと気付かされます。HonoはNode.jsに依存していたAPIをWeb APIに置き換え、よく利用するAPIは多くのビルトインミドルウェアでカバーされています。また自身でカスタムミドルウェアを用意する際にも便利なユーティリティーとしてたくさんのヘルパー関数も用意されています。

ビルトインミドルウェア一覧(READMEより抜粋)

  • Basic Authentication
  • Cookie parsing / serializing
  • CORS
  • ETag
  • GraphQL Server
  • JWT Authentication
  • Logger
  • Mustache template engine
  • JSON pretty printing
  • Serving static files

ソースコードを使った使い方の紹介をとも思いましたが、GitHubのドキュメントが非常に充実しているのでExpressを利用したことがある方であればすんなり導入できるのではないでしょうか。ぜひ一度ドキュメントも読んでみてください:)

なお、公式にJest入りのミニマムなスターターテンプレートも用意されています。

npx create-cloudflare my-app https://github.com/honojs/hono-minimal

また作者@yusukebe氏のブログで機能や利用方法については詳細に記事にされているのでこちらからもHonoの魅力が伝わってきます。こちらの記事でHonoの機能が網羅されていると思います。

さいごに

ものすごく簡単にではありますが、、Cloudflare Workersで動作するフレームワークHonoを紹介させていただきました。個人的にはRemixをよく利用しているのですが、Remixは機能は豊富ながらRemixというフレームワークの独自の使い方を学習する必要と手間はどうしても発生してしまいます。

その点、Honoはその日からすぐに使えるくらいシンプルでありながら、カスタマイズしようと思えばいろいろと試すこともできる奥深いフレームワークだと感じました。今後リリースされるD1と組み合わせればエッジ環境だけで動作するDBとAPIも構築できてしまいますね:)

Cloudflare Workersで手軽にアプリケーションを作ってみたい方、ぜひ一度Honoを試してみてはいかがでしょうか?