本文へ移動

Hono ​

Hono は 日本語で炎🔥を意味する、Web 標準に基づく小さく、シンプルで非常に高速な Web フレームワークです。 Cloudflare Workers、Fastly Compute、Deno、Bun、Vercel、Netlify、AWS Lambda、Lambda@Edge、Node.js など、さまざまな JavaScript ランタイムで動作します。

高速であることだけが特長ではありません。

ts
import { 
Hono
} from 'hono'
const
app
= new
Hono
()
app
.
get
('/', (
c
) =>
c
.
text
('Hono!'))
export default
app

クイックスタート ​

次のコマンドを実行するだけです。

sh
npm create hono@latest
sh
yarn create hono
sh
pnpm create hono@latest
sh
bun create hono@latest
sh
deno init --npm hono@latest

特長 ​

  • 超高速 🚀 — RegExpRouter は非常に高速で、線形ループを使用しません。
  • 軽量 🪶 — hono/tiny プリセットは 14kB 未満です。Hono は依存関係を持たず、Web 標準のみを使用します。
  • マルチランタイム 🌍 — Cloudflare Workers、Fastly Compute、Deno、Bun、AWS Lambda、Node.js で動作します。同じコードをすべてのプラットフォームで実行できます。
  • 必要な機能を標準装備 🔋 — 組み込みミドルウェア、独自のミドルウェア、サードパーティミドルウェア、ヘルパーを利用できます。
  • 快適な開発体験 😃 — シンプルな API と優れた TypeScript サポートで、型を活用した開発ができます。

ユースケース ​

Hono は Express に似たシンプルな Web アプリケーションフレームワークで、フロントエンドは含みません。 CDN のエッジでも動作し、ミドルウェアと組み合わせて大規模なアプリケーションを構築できます。 次のような用途があります。

  • Web API の構築
  • バックエンドサーバーのプロキシ
  • CDN のフロント
  • エッジアプリケーション
  • ライブラリ用の基盤サーバー
  • フルスタックアプリケーション

Hono を使っているプロジェクト ​

プロジェクトプラットフォーム用途
cdnjsCloudflare Workers無料でオープンソースの CDN サービス。API サーバーに Hono を使用。
Cloudflare D1Cloudflare Workersサーバーレス SQL データベース。内部 API サーバーに Hono を使用。
Cloudflare Workers KVCloudflare Workersサーバーレスのキーバリューデータベース。内部 API サーバーに Hono を使用。
BaseAILocal AI Serverメモリーを備えたサーバーレス AI エージェントパイプライン。Web 向けのオープンソース AI エージェントフレームワーク。API サーバーに Hono を使用。
UnkeyCloudflare Workersオープンソースの API 認証・認可サービス。API サーバーに Hono を使用。
OpenStatusBunオープンソースの Web サイト・API 監視プラットフォーム。API サーバーに Hono を使用。
Deno BenchmarksDenoV8 上に構築された安全な TypeScript ランタイム。ベンチマークに Hono を使用。
ClerkCloudflare Workersオープンソースのユーザー管理プラットフォーム。API サーバーに Hono を使用。
PostHogNode.js自律的に進化するプロダクトを構築するためのオープンソースプラットフォーム。MCP サーバーに Hono を使用。

ほかにも次のプロジェクトがあります。

さらに知りたい方は、本番環境で Hono を使っているのは誰?をご覧ください。

1 分でわかる Hono ​

Hono で Cloudflare Workers 向けのアプリケーションを作成するデモです。

Hono アプリケーションを素早く作成し、短いサイクルで開発する様子を示す GIF。

超高速 ​

Cloudflare Workers 向けの他のルーターと比較して、Hono は最速です。

Hono x 402,820 ops/sec ±4.78% (80 runs sampled)
itty-router x 212,598 ops/sec ±3.11% (87 runs sampled)
sunder x 297,036 ops/sec ±4.76% (77 runs sampled)
worktop x 197,345 ops/sec ±2.40% (88 runs sampled)
Fastest is Hono
✨  Done in 28.06s.

その他のベンチマークをご覧ください。

軽量 ​

Hono はとても小さなフレームワークです。hono/tiny プリセットは、minify 後のサイズが 14KB 未満です。多くのミドルウェアやアダプターがありますが、利用したものだけがバンドルされます。比較すると、Express のサイズは 572KB です。

$ npx wrangler dev --minify ./src/index.ts
 ⛅️ wrangler 2.20.0
--------------------
⬣ Listening at http://0.0.0.0:8787
- http://127.0.0.1:8787
- http://192.168.128.165:8787
Total Upload: 11.47 KiB / gzip: 4.34 KiB

複数のルーター ​

Hono には複数のルーターがあります。

RegExpRouter は JavaScript で最速のルーターです。ディスパッチ前に生成した 1 つの大きな正規表現でルートを照合します。SmartRouter と組み合わせることで、すべてのルーティングパターンに対応します。

LinearRouter はルートの登録が非常に高速なので、リクエストごとにアプリケーションを初期化する環境に適しています。PatternRouter はパターンの追加と照合をシンプルに行い、サイズを小さく抑えています。

ルーターの詳細をご覧ください。

Web 標準 ​

Web 標準を使用しているため、Hono は多くのプラットフォームで動作します。

  • Cloudflare Workers
  • Fastly Compute
  • Deno
  • Bun
  • Vercel
  • AWS Lambda
  • Lambda@Edge
  • その他

Node.js アダプターを使用すれば、Node.js でも Hono を実行できます。

Web 標準の詳細をご覧ください。

ミドルウェアとヘルパー ​

Hono には多くのミドルウェアとヘルパーがあります。「少ないコードで、多くのことを実現する」開発を支えます。

Hono は次のミドルウェアとヘルパーを標準で提供します。

例えば、Hono なら ETag とリクエストログを数行で追加できます。

ts
import { Hono } from 'hono'
import { etag } from 'hono/etag'
import { logger } from 'hono/logger'

const app = new Hono()
app.use(etag(), logger())

ミドルウェアの詳細をご覧ください。

開発体験 ​

Hono は快適な「開発体験」を提供します。

Context オブジェクトを通じて Request と Response に簡単にアクセスできます。 Hono は TypeScript で書かれており、「型」を備えています。

例えば、パスパラメーターはリテラル型として推論されます。

Hono が URL パラメーターを正しいリテラル型として扱う様子。「/entry/:date/:id」では、パラメーター名が「date」または「id」として認識されます。

バリデーターと Hono クライアントの hc によって、RPC モードも利用できます。RPC モードでは Zod などの好みのバリデーターを使い、サーバー側の API 定義をクライアントと簡単に共有して、型安全なアプリケーションを構築できます。

Hono スタックをご覧ください。

MIT ライセンスで公開されています。