Hono
「炎」と書いて Hono。Cloudflare Workers / Bun / Deno / Node.js / AWS Lambda / Vercel 等 どこでも動く、超軽量・Web 標準ベース・型安全な Web フレームワーク。
これは何か
Hono は「Web Standards のラッパ」。Request / Response / fetch という
ブラウザでも使える標準 API の上に、Express 風の薄いルーティングレイヤを乗せただけ。
- 軽い: コアは数 KB。Cold start が短い。エッジ向き
- 速い: 内部のルータ(RegExp / Trie / Pattern)が極めて高速
- 型安全: ルートのパラメータや RPC が型で繋がる
- 移植性: 同じコードがあらゆるランタイムで動く
- ゼロ依存: コアはサードパーティ依存なし
最小コード
import { Hono } from "hono"
const app = new Hono()
app.get("/", (c) => c.text("Hello Hono!"))
app.get("/json", (c) => c.json({ hello: "world" }))
app.get("/users/:id", (c) => {
const id = c.req.param("id")
return c.json({ id })
})
export default app
これだけで Cloudflare Workers / Bun / Deno / Node.js のどこでも動く(後述のアダプタを経由)。
こんな時に向く
- サーバレス(Cloudflare Workers / Vercel / Lambda)に乗せたい
- 軽い APIを作りたい(Express より軽い、型安全に)
- BFF(Backend For Frontend)の薄いレイヤ
- エッジで動かしたい(地理的に近いところで実行)
- Bun / Deno で標準ベースの API を書きたい
- tRPC のような型安全クライアントが欲しいが、Web 標準の REST も維持したい
こんな時は他の選択肢
- フルスタック RSC が欲しい → Next.js / Remix
- ORM・認証・ファイルアップロードまで全部入り → Nest.js / AdonisJS
- WebSocket がメイン → Hono でも可能だが、Socket.IO 等が枯れている
- GraphQL サーバ → Apollo / GraphQL Yoga(Hono に乗せられる)
30 秒のメンタルモデル
- Web 標準の
Requestを受けてResponseを返す関数を作る - その関数を Hono がルーティングして呼ぶ
- 関数には
c(Context)が渡され、c.reqとc.text/json/html等が使える - Express の
app.use風にミドルウェアを挟める - 各ランタイム用のアダプタでデプロイ
2026 春時点のバージョン感
- Hono 4.x が安定版
- Cloudflare Workers の Smart Placement や Durable Objects との統合
- JSX サポート(React 互換 + サーバーレンダリング)
- OpenAPI / Zod スキーマ統合
- Hono RPC(クライアントへ型を漏らす)
導入
Cloudflare Workers
npm create hono@latest my-app
# テンプレート: cloudflare-workers
cd my-app
npm install
npm run dev
Bun
bun create hono@latest my-app
# テンプレート: bun
Node.js
npm install hono @hono/node-server
import { serve } from "@hono/node-server"
import { Hono } from "hono"
const app = new Hono()
app.get("/", (c) => c.text("Hello"))
serve(app)
このノートの読み方
- 基本(ルーティング) でルートと handler の書き方
- Context で
cの機能 - ミドルウェア で組み込み + 自作
- バリデーション で zod 連携
- RPC で型安全クライアント
- 認証 で JWT / Cookie / Bearer
- アダプタとデプロイ で各ランタイム
- 本番投入前に 注意点・パフォーマンス