Hono vs Express vs Fastify vs Elysia — 2026年Node.js/Bunフレームワーク徹底比較ガイド
Hono・Express・Fastify・Elysiaを性能・型安全性・エコシステム・学習コストで徹底比較。2026年時点の最新ベンチマークと用途別おすすめ選定ガイド付き。
4フレームワークの結論
2026年時点の結論: エッジ/マルチランタイムならHono、Bun最速ならElysia、Node.js高速安定ならFastify、エコシステム最大ならExpressです。用途に応じて選択しましょう。
4フレームワークのポジショニング
Expressは2010年登場の業界標準で圧倒的なエコシステムを誇ります。Fastifyは2016年登場でNode.js特化の高速フレームワークです。Honoは2021年登場でCloudflare Workers等のエッジ環境に最適化されたマルチランタイム対応フレームワーク。Elysiaは2023年登場でBun専用の最高速フレームワークです。
総合比較テーブル
4フレームワークの主要スペックを一覧します。
| 項目 | Hono | Express | Fastify | Elysia |
|---|---|---|---|---|
| リリース年 | 2021 | 2010 | 2016 | 2023 |
| ランタイム | マルチ | Node.jsのみ | Node.jsのみ | Bun中心 |
| バンドルサイズ | 12〜14KB | 200KB以上 | 50KB以上 | 30KB |
| TypeScript | ネイティブ | DefinitelyTyped | DefinitelyTyped | ネイティブ |
| Web Standards準拠 | 対応 | 非対応 | 非対応 | 対応 |
| 型安全RPC | あり(hc) | なし | なし | あり(Eden) |
| CF Workers性能 | 約84万 req/s | 約18万 req/s | 約21万 req/s | 非対応 |
| GitHub Stars (2026) | 約22K | 約65K | 約33K | 約12K |
各フレームワークの強みを詳しく見る
Express の強みは圧倒的なエコシステムです。npmに数万のExpressミドルウェアが存在し、Passport.js・multer・morgan等の実績あるライブラリが揃います。採用・求人・学習リソースも最も豊富で、枯れた技術として長期運用に向いています。 Fastify はNode.js上で現実的な高速化を提供します。JSONスキーマによる高速なシリアライゼーション、堅牢なプラグインシステム、ライフサイクルフックが整備されており、Node.js上での本番運用実績も豊富です。 Hono はマルチランタイム対応が最大の差別化要素です。同一コードでNode.js・Bun・Deno・Cloudflare Workers・AWS Lambda等で動作します。型安全RPCとWeb Standards準拠により、フルスタック開発の生産性が高いです。 Elysia はBun上での極限パフォーマンスを追求します。Eden RPCによるEnd-to-End型安全、宣言的なバリデーション、マクロシステムが特徴です。Bunエコシステムが前提のため、Node.jsへの移植性は低いです。
パフォーマンスベンチマーク(2026年最新)
同一ハードウェア上での `Hello World` ベンチマーク結果です。環境によって結果は異なりますので参考値としてください。
| ランタイム | Hono | Express | Fastify | Elysia |
|---|---|---|---|---|
| Node.js 22 | 約23万 req/s | 約1.8万 req/s | 約7.2万 req/s | 非対応 |
| Bun 1.2 | 約46万 req/s | 約2.1万 req/s | 約8.5万 req/s | 約98万 req/s |
| Cloudflare Workers | 約84万 req/s | 非対応 | 非対応 | 非対応 |
| Deno 2 | 約31万 req/s | 非対応 | 非対応 | 非対応 |
同じエンドポイントを4フレームワークで実装する
ユーザーIDを受け取りJSONを返す同一のエンドポイントを各フレームワークで実装した場合の比較です。
// Express
app.get('/users/:id', (req, res) => {
res.json({ id: req.params.id })
})
// Fastify
fastify.get('/users/:id', (req, reply) => {
return { id: (req.params as { id: string }).id }
})
// Hono
app.get('/users/:id', (c) => {
return c.json({ id: c.req.param('id') })
})
// Elysia
app.get('/users/:id', ({ params }) => {
return { id: params.id }
})エコシステム比較
成熟度と採用率を測る指標を比較します。
| 指標 | Hono | Express | Fastify | Elysia |
|---|---|---|---|---|
| npm週間DL | 約200万 | 約3,200万 | 約1,100万 | 約30万 |
| GitHub Stars | 約22K | 約65K | 約33K | 約12K |
| 主要クラウド公式サポート | CF Workers, AWS, Deno | AWS, Heroku, Railway | AWS, Heroku | Fly.io, Railway |
| ミドルウェア数 | 公式20以上 | 数万 | 公式200以上 | 公式30以上 |
| 採用実績 | スタートアップ中心 | エンタープライズ含む | 中規模〜大規模 | スタートアップ |
フレームワーク選定フローチャート
Express → Hono 移行ガイド
Expressから移行する際の主要な変換パターンを示します。
// Express: ミドルウェア
app.use('/api', (req, res, next) => {
console.log(req.method, req.path)
next()
})
// Hono: ミドルウェア
app.use('/api/*', async (c, next) => {
console.log(c.req.method, c.req.path)
await next()
})
// Express: エラーハンドラー
app.use((err, req, res, next) => {
res.status(500).json({ error: err.message })
})
// Hono: エラーハンドラー
app.onError((err, c) => {
return c.json({ error: err.message }, 500)
})
// Express: 静的ファイル配信
app.use(express.static('public'))
// Hono: 静的ファイル配信
app.use('/public/*', serveStatic({ root: './' }))学習曲線比較
各フレームワークの習得難易度を段階別に示します。
| スキルレベル | Hono | Express | Fastify | Elysia |
|---|---|---|---|---|
| JavaScript入門者 | 中 | 易 | 中〜難 | 難 |
| Node.js経験者 | 易 | — | 易 | 中 |
| TypeScript経験者 | 易 | 中 | 易 | 易 |
| エッジ環境未経験 | 中 | — | — | — |
| 習得目安時間 | 1〜2日 | 0.5〜1日 | 1〜3日 | 2〜4日 |
2026年 用途別おすすめマトリクス
プロジェクト特性ごとの推奨フレームワークを一覧します。
| ユースケース | 第1推奨 | 第2推奨 | 理由 |
|---|---|---|---|
| Cloudflare Workers API | Hono | — | ネイティブ対応、最軽量 |
| 新規Node.js REST API | Hono / Fastify | Fastify | 型安全・高速 |
| Bun本番API | Elysia | Hono | Bun最速、型安全 |
| レガシーExpressの拡張 | Express | Fastify | 移行コスト最小 |
| マイクロサービス | Hono | Fastify | マルチランタイム・軽量 |
| エンタープライズ大規模 | Fastify | Express | プラグイン・安定性 |
| Next.js API Routes代替 | Hono | — | App Router統合容易 |
| フルスタック型安全 | Hono (RPC) | Elysia (Eden) | コード生成不要 |
FAQ
Q1. 2026年にExpressを新規採用するのはアリですか? A. レガシーシステムとの統合や大量の既存ミドルウェアが必要な場合はアリです。ただし新規プロジェクトであればHonoやFastifyのほうが型安全・パフォーマンス・モダンなDXの面で優れています。 Q2. HonoはBunで動きますか? A. はい。Bunをランタイムとして指定するだけで動作します。ただしBun特化の最高性能を求めるならElysiaのほうがベンチマーク上は有利です。 Q3. ElysiaはNode.jsで使えますか? A. 公式にはBun専用として設計されています。Node.js互換レイヤー経由で動かす試みもありますが、パフォーマンス上のメリットはなくなります。本番Node.js環境ではHonoかFastifyを選択してください。 Q4. Fastifyのプラグインシステムとは何ですか? A. `fastify-plugin` を使ったカプセル化されたプラグイン機能で、データベース接続・認証・ロギング等を独立したモジュールとしてスコープ管理できます。Expressのミドルウェアと異なり、スコープの漏れが防止されます。 Q5. HonoのMiddlewareはExpressと互換性がありますか? A. 直接互換性はありません。ただし `hono/adapter` パッケージを使うことで一部のExpressミドルウェアをHonoで利用できます。完全な互換性は保証されないため、移行時は個別検証が必要です。 Q6. WebSocketのサポートはどうですか? A. Honoは `hono/ws` でCloudflare DurableObjectsとの統合を含む組み込みWSサポートがあります。Fastifyは `@fastify/websocket` プラグイン、Expressは `ws` ライブラリ、Elysiaはネイティブサポートを提供しています。 Q7. テストのしやすさに違いはありますか? A. HonoとElysiaはWeb Standards準拠のため、`app.request()` メソッドで実際のHTTPサーバーを起動せずにルートをテストできます。FastifyはHTTPインジェクション機能を持ちます。Expressのテストには通常supertest等のライブラリが必要です。
Oflightへのご相談
フレームワーク選定から設計・実装・チューニングまで、弊社エンジニアが最適な技術スタックの選択をサポートします。Honoを使ったエッジAPI開発、Express/Fastifyからの移行支援も承っています。まずはお気軽にソフトウェア開発サービスからご連絡ください。
お気軽にご相談ください
お問い合わせ