Honoは、軽量・高速・型安全をテーマにした次世代Webフレームワークです。Node.js・Bun・Deno・Cloudflare Workers・Vercel Edge Functionsなど、あらゆるJavaScriptランタイムで動作します。本記事では、Honoの特徴と基本的な使い方を入門向けに解説します。
Honoとは
HonoはExpressのようなシンプルなAPIを持ちつつ、Web標準APIに基づいているためあらゆるエッジ環境で動作します。日本人開発者yusukebe氏が主導しており、ドキュメント・コミュニティも活発です。
主な特徴
- 超軽量:ランタイム依存なしで14KB前後
- 高速:独自ルータ(RegExpRouter / TrieRouter)で高ベンチマーク
- 型安全:TypeScriptに最適化されたAPI
- マルチランタイム:Cloudflare Workers / Bun / Deno / Node / Lambdaで同一コード動作
- OpenAPI / Zod連携によるスキーマ駆動が容易
セットアップ
npm create hono@latest my-api
cd my-api
npm install
npm run dev
基本ルーティング
import { Hono } from 'hono';
const app = new Hono();
app.get('/', (c) => c.text('Hello Hono!'));
app.get('/users/:id', (c) => {
const id = c.req.param('id');
return c.json({ id, name: 'Alice' });
});
app.post('/users', async (c) => {
const body = await c.req.json();
return c.json({ created: body }, 201);
});
export default app;
ミドルウェア
import { logger } from 'hono/logger';
import { cors } from 'hono/cors';
import { jwt } from 'hono/jwt';
app.use('*', logger());
app.use('/api/*', cors());
app.use('/api/*', jwt({ secret: process.env.JWT_SECRET! }));
Zodで型安全なバリデーション
import { zValidator } from '@hono/zod-validator';
import { z } from 'zod';
const schema = z.object({ name: z.string().min(1) });
app.post('/users', zValidator('json', schema), (c) => {
const data = c.req.valid('json'); // 型推論で安全
return c.json({ created: data });
});
Cloudflare Workersへのデプロイ
npx wrangler deploy
wrangler.tomlを整えるだけで、エッジに数秒でデプロイできます。コールドスタートがほぼゼロのため、APIのレスポンスがNode.js環境より一段高速になることも珍しくありません。
こんなプロジェクトに向く
- Cloudflare Workers / Vercel Edge にAPIを置きたい
- Express代替で軽量・型安全なフレームワークを探している
- BFFやMicroserviceの小さなAPIを多数立てたい
まとめ
Honoは、Web標準APIの上で動く軽量・高速・型安全を兼ね備えたフレームワークです。Cloudflare Workersへの一発デプロイ体験は、一度試すと手放せなくなる手軽さ。Expressを使い慣れた人ほど移行がスムーズに感じられるはずです。