Honoとは?軽量で速い次世代Webフレームワーク入門

Web開発

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を使い慣れた人ほど移行がスムーズに感じられるはずです。