Hono完全ガイド — 超軽量・超高速なマルチランタイムWebフレームワークの始め方【2026年版】
Honoは依存関係ゼロ・12KB未満・Web Standards準拠のTypeScriptファーストWebフレームワーク。Cloudflare Workers/Deno/Bun/Node.jsで同一コードが動作し、週間900万ダウンロードを誇る。セットアップから本番運用まで徹底解説。
Honoとは何か? — 超軽量・超高速Webフレームワークの全貌
Honoは依存関係ゼロ・12KB未満で動作するWeb Standards準拠のTypeScriptファーストWebフレームワークです。2021年12月にYusuke Wada氏がCloudflare Workersにインスパイアされて開発を開始し、「炎(ほのお)」を意味する名前の通り、圧倒的な高速性を誇ります。2026年現在、週間900万ダウンロード以上、GitHubスター28K+を達成し、Cloudflare社内でも本番採用されています。
なぜHonoが選ばれるのか — 主要な特徴
Honoが急速に普及している理由は、他のフレームワークにはない独自の強みにあります。以下のテーブルで主要な特徴を整理します。
| 特徴 | 詳細 |
|---|---|
| 依存関係ゼロ | hono/tinyは12KB未満。外部パッケージ不要 |
| Web Standards準拠 | Request/Responseオブジェクトを直接使用 |
| TypeScriptファースト | @types/honoは不要。型定義が標準搭載 |
| マルチランタイム対応 | CF Workers/Deno/Bun/Node.jsで同一コードが動作 |
| エンドツーエンド型安全 | RPCモードでクライアント・サーバー間の型が共有 |
| 高速ルーティング | Trie木ベースのRegExpRouterで約840K req/s |
| ミドルウェアエコシステム | 公式・サードパーティ合わせて100+のミドルウェア |
対応ランタイム一覧
Honoは以下のランタイムおよびプラットフォームで動作します。同一のアプリケーションコードをデプロイ先に応じてビルドするだけで移行が完了します。
| ランタイム / プラットフォーム | アダプタ | 備考 |
|---|---|---|
| Cloudflare Workers | ネイティブ | 最も推奨される環境 |
| Cloudflare Pages | hono/cloudflare-pages | フロントエンド統合 |
| Deno | hono/deno | Deno.serveを使用 |
| Bun | hono/bun | Bun.serveを使用 |
| Node.js | @hono/node-server | Express代替 |
| AWS Lambda | hono/aws-lambda | サーバーレス |
| Lambda@Edge | hono/lambda-edge | CDNエッジ実行 |
| Vercel | hono/vercel | Edge Functions対応 |
| Netlify | hono/netlify | Edge Functions対応 |
| Fastly Compute | hono/fastly | Wasm実行環境 |
Honoのセットアップ — 5分で始める
Honoの始め方は非常にシンプルです。`npm create hono@latest` コマンド一つでインタラクティブにプロジェクトが作成されます。
npm create hono@latest my-app
# テンプレートを選択:
# cloudflare-workers
# cloudflare-pages
# deno
# bun
# nodejs
# aws-lambda
# vercel
# netlify
# fastly
cd my-app
npm install
npm run devCloudflare Workersを選択した場合、`wrangler dev` が起動し、`http://localhost:8787` でローカル開発が始まります。
Hello World — 基本的なコード構造
以下がHonoの最もシンプルなアプリケーション例です。Express/Fastifyに慣れている開発者にも直感的に理解できます。
import { Hono } from 'hono'
const app = new Hono()
// テキストレスポンス
app.get('/', (c) => c.text('Hello Hono!'))
// JSONレスポンス(パスパラメータ付き)
app.get('/api/users/:id', (c) => {
const id = c.req.param('id')
return c.json({ id, name: 'Alice' })
})
// POSTハンドラ
app.post('/api/users', async (c) => {
const body = await c.req.json()
return c.json({ created: true, data: body }, 201)
})
export default appルーティング詳細 — パスパラメータ・クエリ・グルーピング
Honoのルーティングは直感的かつ強力です。パスパラメータ、クエリ文字列、ワイルドカード、ルートグルーピングに全対応しています。
import { Hono } from 'hono'
const app = new Hono()
// パスパラメータ
app.get('/users/:id', (c) => {
const id = c.req.param('id')
return c.json({ id })
})
// 複数パスパラメータ
app.get('/posts/:postId/comments/:commentId', (c) => {
const { postId, commentId } = c.req.param()
return c.json({ postId, commentId })
})
// クエリ文字列
app.get('/search', (c) => {
const q = c.req.query('q')
const page = c.req.query('page') ?? '1'
return c.json({ q, page })
})
// ワイルドカード
app.get('/files/*', (c) => c.text('File route'))
// ルートグルーピング
const api = new Hono()
api.get('/users', (c) => c.json([]))
api.post('/users', (c) => c.json({}, 201))
app.route('/api/v1', api)コンテキスト(c)の使い方 — リクエスト・レスポンス操作
Honoの中心的な概念がコンテキストオブジェクト `c` です。リクエストの読み取りからレスポンスの生成まで、すべての操作はこのオブジェクトを通じて行います。
app.get('/demo', async (c) => {
// リクエスト情報
const method = c.req.method // 'GET'
const url = c.req.url // フルURL
const header = c.req.header('x-custom') // カスタムヘッダー
// レスポンス種別
return c.json({ message: 'JSON response' }) // JSON
return c.text('Plain text') // テキスト
return c.html('<h1>Hello HTML</h1>') // HTML
return c.redirect('/new-path', 301) // リダイレクト
return c.body(stream, { headers: {...} }) // ストリーム
})ミドルウェア入門 — 組み込みミドルウェア一覧
Honoには本番環境で必要な主要ミドルウェアが標準搭載されています。サードパーティパッケージを追加せずに多くのユースケースに対応できます。
| ミドルウェア | インポートパス | 主な用途 |
|---|---|---|
| logger | hono/logger | HTTPアクセスログ |
| cors | hono/cors | CORS制御 |
| basicAuth | hono/basic-auth | Basic認証 |
| jwt | hono/jwt | JWT検証 |
| bearerAuth | hono/bearer-auth | Bearerトークン認証 |
| cache | hono/cache | レスポンスキャッシュ |
| compress | hono/compress | gzip/Brotli圧縮 |
| csrf | hono/csrf | CSRFトークン検証 |
| etag | hono/etag | ETagヘッダー |
| prettyJSON | hono/pretty-json | JSON整形出力 |
| secureHeaders | hono/secure-headers | セキュリティヘッダー |
| timeout | hono/timeout | タイムアウト制御 |
| validator | hono/validator | リクエストバリデーション |
ミドルウェアの実装例
import { Hono } from 'hono'
import { logger } from 'hono/logger'
import { cors } from 'hono/cors'
import { jwt } from 'hono/jwt'
const app = new Hono()
// グローバルミドルウェア
app.use('*', logger())
app.use('*', cors({ origin: 'https://example.com' }))
// 特定ルートのJWT認証
const secret = 'your-secret-key'
app.use('/api/*', jwt({ secret }))
app.get('/api/profile', (c) => {
const payload = c.get('jwtPayload')
return c.json({ userId: payload.sub })
})
export default app実プロダクション事例
Honoは世界中のプロダクションで採用されています。主要な採用事例を以下に示します。
| 企業・プロジェクト | 用途 |
|---|---|
| Cloudflare | 社内APIおよびCloudflare Workersの公式例 |
| Upstash | Redis/Kafkaクライアントのエッジ対応 |
| Ponder.ly | リアルタイムイベントトラッキングAPI |
| IntelliQ | AIプロキシAPIの高スループット処理 |
| ActorCore | ゲームバックエンドのエッジ実行 |
ベンチマーク性能 — Express/Fastifyとの比較
Cloudflare Workers環境でのベンチマークでは、Honoは約840,000 req/sを記録し、Express(Node.js)の約10倍、Fastifyの約3倍の性能を示しています。Trie木ベースのRegExpRouterにより、ルーティングの計算量がO(log n)以下に抑えられているためです。
| フレームワーク | req/s(概算) | 環境 |
|---|---|---|
| Hono | 約840,000 | Cloudflare Workers |
| Fastify | 約60,000 | Node.js |
| Express | 約15,000 | Node.js |
| Koa | 約20,000 | Node.js |
Hono v4の主要機能 — SSG・クライアントコンポーネント・ファイルベースルーティング
Hono v4では、フルスタック開発に向けた大幅な機能拡張が行われました。 - Static Site Generation (SSG): `toSSG()` 関数でビルド時に静的ファイルを生成。CDN配信と相性抜群 - Client Components: `hono/jsx` でJSXベースのUIコンポーネント開発が可能。IslandアーキテクチャでPartial Hydration対応 - ファイルベースルーティング: HonoXフレームワークを使用することで、Next.js風のファイルシステムルーティングが利用可能 - RPC(Remote Procedure Call)モード: クライアント・サーバー間の型を自動共有。zodバリデーションと組み合わせて完全な型安全を実現
次に学ぶべきこと — RPCモード・HonoX・Cloudflare Workers連携
Honoの基本を習得したら、以下のトピックへの深掘りを推奨します。 1. RPCモード: `hc()` ヘルパーでクライアント側からサーバー関数を型安全に呼び出す 2. HonoX: Viteベースのフルスタックフレームワーク。ファイルベースルーティングとIslandアーキテクチャ 3. Cloudflare Workers連携: D1・KV・R2・Workers AIとの統合でサーバーレスバックエンドを構築 4. zodバリデーション: `@hono/zod-validator` でリクエストバリデーションと型推論を同時に実現 5. テスト: `app.request()` メソッドでHTTPリクエストなしにユニットテストが書ける
よくある質問(FAQ)
Q1. HonoはExpressの代替として使えますか? はい。`@hono/node-server` アダプタを使用すれば、Node.js環境でExpressと同様に動作します。APIの設計思想も近く、移行コストは低いです。 Q2. HonoはGraphQLに対応していますか? `@hono/graphql-server` パッケージを使用することで、GraphQL APIを構築できます。Apollo Serverの代替として利用可能です。 Q3. TypeScriptを使わなくてもHonoは使えますか? 使えます。ただしHonoはTypeScriptファーストで設計されており、型補完の恩恵を最大限に受けるためTypeScriptの使用を強く推奨します。 Q4. Honoのルーターは何種類ありますか? 5種類あります。SmartRouter(デフォルト、自動選択)、RegExpRouter(最速)、TrieRouter(メモリ効率重視)、LinearRouter(小規模向け)、PatternRouter(シンプル実装)です。 Q5. Hono単体でデータベース操作はできますか? Hono自体にORMは含まれませんが、Drizzle ORM、Prisma、D1(Cloudflare)など任意のデータベースライブラリと組み合わせて使用できます。 Q6. セッション管理はどうすれば良いですか? `hono/cookie` ミドルウェアでCookie操作が可能です。セッションはCloudflare KVやRedis(Upstash)と組み合わせて実装するのが一般的です。 Q7. HonoとNextAuth(Auth.js)を組み合わせられますか? Auth.jsは現在Honoアダプタの開発が進行中です。独自実装する場合は `hono/jwt` + `hono/cookie` の組み合わせが推奨されます。
Oflightとともに高速なHonoアプリを構築しませんか
Oflightでは、HonoおよびCloudflare Workersを活用したエッジAPIの設計・開発・運用支援を提供しています。超軽量・超高速なWebサービスの構築から、既存Node.jsアプリのHono移行まで幅広く対応します。まずはお気軽にご相談ください。 ソフトウェア開発サービスの詳細はこちら
お気軽にご相談ください
お問い合わせ