Skip to content
Artwork for 八百万のOSS
八百万のOSS · September 15 · 1 hr 2 min

#20 Honoはなぜ速い?ルーター8個とファストパスの裏側 | yusukebe

Hono を使っていると「速いフレームワーク」だとなんとなく知っている人は多いはず。でもその速さは、どこから生まれているのでしょうか。今回は Hono の作者 yusukebe さんをゲストに迎え、henteko と catatsuy がベンチマークの裏側を根掘り葉掘り聞いていきます。 Hono には過去のものも含めると 8 個ものルーターが存在し、その筆頭が usualoma さんの 2 回目のプルリクで入った RegExpRouter だったという話から、コアだけを徹底的に小さくしてアダプターやミドルウェアで機能を足すレイヤー設計、Express との Hello World 比較、ベンチマークを「マーケティング」として捉える視点まで。さらに Headers オブジェクトの生成コストを避ける「ファストパス」の考え方、Response.json を採用したのに戻すことになった理由、Bun・Node.js・Deno でベンチ結果がまるで違う現実、bombardier と Elysia 作者のベンチマークを指標にしている理由など、パフォーマンスにこだわる人ほど唸る話が続きます。 聞きどころは、Cloudflare Workers 向けに作ったのに、なぜベンチマークの基準が Bun になったのかという意外な経緯。フレームワークの速さがどう作られるかを知りたいエンジニアにおすすめの回です。 ## 関連リンク - Hono: https://hono.dev/ - Hono(GitHub): https://github.com/honojs/hono - Hono ルーターの解説: https://hono.dev/docs/concepts/routers - Hono ベンチマーク: https://hono.dev/docs/concepts/benchmarks - Hono テストガイド(app.request): https://hono.dev/docs/guides/testing - Hono CLI: https://github.com/honojs/cli - ax(yusukebe 作の AI 時代の curl): https://github.com/yusukebe/ax - usualoma(GitHub): https://github.com/usualoma - Cloudflare Workers: https://developers.cloudflare.com/workers/ - workerd: https://github.com/cloudflare/workerd - Bun: https://bun.sh/ - Deno: https://deno.com/ - JSR: https://jsr.io/ - Hono on JSR: https://jsr.io/@hono/hono - Node.js: https://nodejs.org/ - Fastly Compute: https://www.fastly.com/products/compute - Express: https://expressjs.com/ - Koa: https://koajs.com/ - koa-compose: https://github.com/koajs/compose - Elysia: https://elysiajs.com/ - Bun HTTP Framework Benchmark(Elysia 作者による): https://github.com/SaltyAom/bun-http-framework-benchmark - bombardier: https://github.com/codesenberg/bombardier - autocannon: https://github.com/mcollina/autocannon ───────────── YouTube: https://youtu.be/wsxqCjicT4Q Web: https://yaoyorozu-oss.henteko07.com/ X: https://x.com/yaoyorozu_oss

0:00-1:02:56

transcript

No transcript — this publisher did not publish one.

show notes

Hono を使っていると「速いフレームワーク」だとなんとなく知っている人は多いはず。でもその速さは、どこから生まれているのでしょうか。今回は Hono の作者 yusukebe さんをゲストに迎え、henteko と catatsuy がベンチマークの裏側を根掘り葉掘り聞いていきます。


Hono には過去のものも含めると 8 個ものルーターが存在し、その筆頭が usualoma さんの 2 回目のプルリクで入った RegExpRouter だったという話から、コアだけを徹底的に小さくしてアダプターやミドルウェアで機能を足すレイヤー設計、Express との Hello World 比較、ベンチマークを「マーケティング」として捉える視点まで。さらに Headers オブジェクトの生成コストを避ける「ファストパス」の考え方、Response.json を採用したのに戻すことになった理由、Bun・Node.js・Deno でベンチ結果がまるで違う現実、bombardier と Elysia 作者のベンチマークを指標にしている理由など、パフォーマンスにこだわる人ほど唸る話が続きます。


聞きどころは、Cloudflare Workers 向けに作ったのに、なぜベンチマークの基準が Bun になったのかという意外な経緯。フレームワークの速さがどう作られるかを知りたいエンジニアにおすすめの回です。


## 関連リンク


- Hono: https://hono.dev/

- Hono(GitHub): https://github.com/honojs/hono

- Hono ルーターの解説: https://hono.dev/docs/concepts/routers

- Hono ベンチマーク: https://hono.dev/docs/concepts/benchmarks

- Hono テストガイド(app.request): https://hono.dev/docs/guides/testing

- Hono CLI: https://github.com/honojs/cli

- ax(yusukebe 作の AI 時代の curl): https://github.com/yusukebe/ax

- usualoma(GitHub): https://github.com/usualoma

- Cloudflare Workers: https://developers.cloudflare.com/workers/

- workerd: https://github.com/cloudflare/workerd

- Bun: https://bun.sh/

- Deno: https://deno.com/

- JSR: https://jsr.io/

- Hono on JSR: https://jsr.io/@hono/hono

- Node.js: https://nodejs.org/

- Fastly Compute: https://www.fastly.com/products/compute

- Express: https://expressjs.com/

- Koa: https://koajs.com/

- koa-compose: https://github.com/koajs/compose

- Elysia: https://elysiajs.com/

- Bun HTTP Framework Benchmark(Elysia 作者による): https://github.com/SaltyAom/bun-http-framework-benchmark

- bombardier: https://github.com/codesenberg/bombardier

- autocannon: https://github.com/mcollina/autocannon


─────────────

YouTube: https://youtu.be/wsxqCjicT4Q

Web: https://yaoyorozu-oss.henteko07.com/

X: https://x.com/yaoyorozu_oss