エッジ時代の到来
CDNでHTMLを配信するだけの時代は終わりました。 Cloudflare WorkersやVercel Edge Functionsなどのエッジランタイムで、APIロジックそのものを世界中のエッジサーバーで実行する時代です。
しかし、従来のExpressやFastifyは、エッジ環境での動作を想定していません。 そこで登場したのが、Hono(ほのお) です。
最短で課題解決する一冊
この記事の内容と高い親和性が確認できたベストマッチです。早めにチェックしておきましょう。
Honoが圧倒的に速い理由
1. 超軽量(14KB未満)
Expressは依存関係を含めると数百KBになりますが、Honoは依存ゼロで14KB未満です。 エッジ環境ではバンドルサイズがレイテンシに直結するため、この差は致命的です。
2. Web Standard API準拠
HonoはWeb標準のRequest/Responseを使用します。
これにより、Cloudflare Workers、Bun、Deno、Node.jsなど、あらゆるランタイムで同じコードが動きます。
// Honoの"Hello World"
import { Hono } from 'hono'
const app = new Hono()
app.get('/', (c) => c.text('Hello Hono!'))
// Cloudflare Workersでもそのまま動く
export default app3. 高速なルーティング
ルーターのベンチマークでは、HonoはExpressの約10倍高速です。 エッジ環境では、コールドスタート時間が重要なので、この差は無視できません。
さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
実践:Cloudflare Workers + Honoでフルスタック開発
Cloudflare WorkersとHonoを組み合わせると、驚くほどシンプルにAPIを構築できます。
プロジェクト作成
npm create hono@latest my-api
cd my-api
npm installテンプレート選択時に「cloudflare-workers」を選びます。
DB(D1)との連携
Cloudflare D1(SQL Database)を使ったCRUD APIを作ってみましょう。
import { Hono } from 'hono'
import { cors } from 'hono/cors'
type Bindings = {
DB: D1Database
}
const app = new Hono<{ Bindings: Bindings }>()
app.use('/*', cors())
// GET: ユーザー一覧取得
app.get('/users', async (c) => {
const { results } = await c.env.DB.prepare(
'SELECT * FROM users'
).all()
return c.json(results)
})
// POST: ユーザー作成
app.post('/users', async (c) => {
const { name, email } = await c.req.json()
await c.env.DB.prepare(
'INSERT INTO users (name, email) VALUES (?, ?)'
).bind(name, email).run()
return c.json({ success: true }, 201)
})
export default appデプロイ
npx wrangler deployこれだけで、世界中のエッジロケーションにAPIがデプロイされます。 日本からでも、アメリカからでも、レイテンシは50ms以下です。
さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
ミドルウェアエコシステム
Honoは軽量ながら、豊富なミドルウェアを提供しています。
import { Hono } from 'hono'
import { logger } from 'hono/logger'
import { jwt } from 'hono/jwt'
import { etag } from 'hono/etag'
const app = new Hono()
// ロギング
app.use('*', logger())
// JWT認証
app.use('/api/*', jwt({ secret: 'my-secret' }))
// ETag(キャッシュ制御)
app.use('*', etag())
app.get('/api/protected', (c) => {
const payload = c.get('jwtPayload')
return c.json({ user: payload.sub })
})さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
Expressからの移行
Expressに慣れている開発者なら、Honoの学習コストはほぼゼロです。
// Express風の記法
app.get('/user/:id', (c) => {
const id = c.req.param('id')
return c.json({ id })
})
// ミドルウェアも同じノリ
app.use(async (c, next) => {
console.log(`[${c.req.method}] ${c.req.url}`)
await next()
})さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。
まとめ
Honoは、エッジコンピューティング時代に最適化された、次世代のWebフレームワークです。
「Expressで十分」と思っている方も、一度Honoを試してみてください。 その軽快さと速度、そしてマルチランタイム対応の柔軟性に、きっと驚くはずです。
エッジの炎(Hono)で、あなたのAPIも燃え上がらせましょう🔥
さらに理解を深める参考書
関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。


![Pythonクローリング&スクレイピング[増補改訂版] -データ収集・解析のための実践開発ガイド-](https://m.media-amazon.com/images/I/41M0fHtnwxL._SL500_.jpg)

![プロを目指す人のためのRuby入門[改訂2版] 言語仕様からテスト駆動開発・デバッグ技法まで Software Design plus](https://m.media-amazon.com/images/I/4126HRthTxL._SL500_.jpg)