株式会社オブライト
Software Dev2026-04-08

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+のミドルウェア
Loading diagram...

対応ランタイム一覧

Honoは以下のランタイムおよびプラットフォームで動作します。同一のアプリケーションコードをデプロイ先に応じてビルドするだけで移行が完了します。

ランタイム / プラットフォームアダプタ備考
Cloudflare Workersネイティブ最も推奨される環境
Cloudflare Pageshono/cloudflare-pagesフロントエンド統合
Denohono/denoDeno.serveを使用
Bunhono/bunBun.serveを使用
Node.js@hono/node-serverExpress代替
AWS Lambdahono/aws-lambdaサーバーレス
Lambda@Edgehono/lambda-edgeCDNエッジ実行
Vercelhono/vercelEdge Functions対応
Netlifyhono/netlifyEdge Functions対応
Fastly Computehono/fastlyWasm実行環境

Honoのセットアップ — 5分で始める

Honoの始め方は非常にシンプルです。`npm create hono@latest` コマンド一つでインタラクティブにプロジェクトが作成されます。

bash
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 dev

Cloudflare Workersを選択した場合、`wrangler dev` が起動し、`http://localhost:8787` でローカル開発が始まります。

Hello World — 基本的なコード構造

以下がHonoの最もシンプルなアプリケーション例です。Express/Fastifyに慣れている開発者にも直感的に理解できます。

ts
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のルーティングは直感的かつ強力です。パスパラメータ、クエリ文字列、ワイルドカード、ルートグルーピングに全対応しています。

ts
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` です。リクエストの読み取りからレスポンスの生成まで、すべての操作はこのオブジェクトを通じて行います。

ts
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には本番環境で必要な主要ミドルウェアが標準搭載されています。サードパーティパッケージを追加せずに多くのユースケースに対応できます。

ミドルウェアインポートパス主な用途
loggerhono/loggerHTTPアクセスログ
corshono/corsCORS制御
basicAuthhono/basic-authBasic認証
jwthono/jwtJWT検証
bearerAuthhono/bearer-authBearerトークン認証
cachehono/cacheレスポンスキャッシュ
compresshono/compressgzip/Brotli圧縮
csrfhono/csrfCSRFトークン検証
etaghono/etagETagヘッダー
prettyJSONhono/pretty-jsonJSON整形出力
secureHeadershono/secure-headersセキュリティヘッダー
timeouthono/timeoutタイムアウト制御
validatorhono/validatorリクエストバリデーション

ミドルウェアの実装例

ts
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の公式例
UpstashRedis/Kafkaクライアントのエッジ対応
Ponder.lyリアルタイムイベントトラッキングAPI
IntelliQAIプロキシ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,000Cloudflare Workers
Fastify約60,000Node.js
Express約15,000Node.js
Koa約20,000Node.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移行まで幅広く対応します。まずはお気軽にご相談ください。 ソフトウェア開発サービスの詳細はこちら

お気軽にご相談ください

お問い合わせ