【Hono x Cloudflare】爆速で起動するHttpbin互換APIを作って公開した
はじめに
HTTPリクエストやレスポンスの挙動を確認したいとき、皆さんは何を使っていますか?
古くからある便利なツールとして httpbin.org が有名ですが、今回これを Hono で完全に書き直し、Cloudflare Workers 上で動作するバージョンを作成・公開しました。
🌐 公開URL: https://httpbin-hono.naas.workers.dev/
まずはこれを見てください
このプロジェクトの最大の特徴は、「誰でもボタン一つで、自分専用の爆速Httpbin環境を持てる」 ことです。
以下のボタンをクリックしてCloudflareアカウントと連携するだけで、あなたの管理下にHttpbinがデプロイされます(Cloudflareの無料アカウントが必要です)。
サーバーの構築も、Dockerコンテナの管理も不要です。ただ押すだけです。
なぜ作ったのか
私はAPI開発やHTTPクライアントのテストでたまにHttpbinを利用しています。しかし、長年使っているといくつか悩みが出てきました。
-
レスポンス速度の課題: オリジナルの
httpbin.orgはEC2でホストされていますが、物理的な距離や共有環境の影響か、日本からの利用ではレスポンスに時間がかかることがあり、開発のリズムが削がれることがありました。 -
セキュリティとプライバシー: パブリックな
httpbin.orgは便利ですが、業務で開発中のAPIキーやトークン、あるいは顧客データに近いモックデータを外部サーバーに送信するのは、セキュリティ要件の高い環境では躊躇われることがあります。
「もっと爆速で、かつコストをかけずに完全に自分のコントロール下におけるセルフホスト版が欲しい」
そう思ったのが開発のきっかけです。
Hono x Cloudflare Workers という解
この課題を解決するために選んだ技術スタックが Hono と Cloudflare Workers です。
1. どこでも動くポータビリティ (Hono)
HonoはWeb標準に準拠して作られているため、Cloudflare Workersに限らず、AWS Lambda, Google Cloud Functions, Azure Functions, あるいはNode.jsやBunなど、あらゆるランタイムで動作します。
これはつまり、 「あなたの会社ですでに契約している安価なFaaS」 や既存のインフラ環境に、コードをほぼ書き換えることなくそのまま持ち込めることを意味します。ベンダーロックインを回避し、組織の事情に合わせて最もコスト効率の良い場所で動かすことができます。
※ 本プロジェクト自体は現在Cloudflare Workers向けの設定(wrangler.toml)のみを含んでいますが、Honoのアダプターを入れ替えるだけで他環境への移植が容易に行なえます。
2. 爆速レスポンス & 超低コスト (Cloudflare Workers)
Cloudflare Workersは世界中のエッジロケーションで動作するため、物理的な距離による遅延を最小限に抑えられます。
また、「Isolateモデル」を採用している点も高速化の鍵です。これは従来のDockerコンテナのようにOSレベルから起動するのではなく、Chromeブラウザのタブを新しく開くように超軽量なプロセスを立ち上げる仕組みです。そのため、コールドスタート(起動の遅延)によるオーバーヘッドが物理的にほぼ発生しません。
実際にデモサイトを触っていただければわかりますが、ほぼ全てのレスポンスが20ms以内 に返ってきます。サーバー側の処理時間はほぼゼロに等しく、通信ラグ以外の待ちを感じさせません。これでテスト時の「待ち」ストレスから解放されました。
さらに、圧倒的なコストパフォーマンスも見逃せません。Cloudflare Workersは1日10万リクエストまで無料枠があり、個人の開発用途や小規模なチーム利用であれば、実質無料で運用し続けることが可能です。サーバー維持費を気にせず、自分専用の高性能なAPIテスト環境を持てるのは大きな魅力です。
AI駆動開発
実は「Httpbinを自作したい」という構想はずっと前からありました。しかし、Httpbinには非常に多くのエンドポイント(/ip, /user-agent, /headers, /status/:code ...)があり、それらを一つ一つ実装していくのは正直面倒でした。
そこで今回は、AI (Cursor / GitHub Copilot) の力を全面的に借りて開発を行いました。
特筆すべきは、単に実装コードを書かせただけでなく、テストコードの移植においてもAIが絶大な威力を発揮した点です。
これには、Hono自体のテスト容易性も大きく貢献しています。
Honoのアプリケーションは、インポートするだけで標準の Fetch API と同じインターフェース (app.request) で呼び出すことができます。
サーバーを起動するオーバーヘッドなしに、関数を呼ぶ感覚でテストが書けるため、AIに大量のテストケースを生成させても実行・検証がスムーズでした。
「動く仕様書」をAIに作らせる
開発フローは以下の繰り返しでした。
- AIにオリジナルのHttpbinの実装コードやテストコード(Python)を読み込ませて仕様を把握させる。
- 「これを再現するHono向けのテストコード(Vitest)を書いて」 と指示する。
- AIがエッジケースやパラメータ検証を含めたテストを生成する。
- そのテストを通すようにHonoの実装コードを生成させる。
このプロセスにより、以下のメリットがありました。
- 挙動の担保: テストが通ることで、オリジナルのHttpbinとの互換性が常に保たれている安心感がありました。
- 単調作業からの解放: ステータスコードごとのレスポンスや、ヘッダーのパースといった退屈でミスしやすい実装・テスト記述をAIが肩代わりしてくれました。
- 高速なフィードバック: 実装と同時にテストが揃うため、「動く仕様書」として機能し、リファクタリングも強気に行えました。
結果として、面倒で放置していたプロジェクトを、短期間かつ高い品質で完成させることができました。
おわりに
Honoで書き直された新しいHttpbinは、オリジナルの良さはそのままに、現代的なエッジコンピューティングの恩恵をフルに受けられるツールになりました。
- APIのテスト環境が欲しい方
- 自社の既存インフラやFaaS環境でHttpbinを動かしたい方
- Cloudflare WorkersとHonoの実装サンプルを見たい方
ぜひ、デモを触ってみたり、ご自身のCloudflare環境にデプロイしてみてください。
もしバグを見つけたり、「この機能も欲しい」という要望があれば、GitHubのIssueやPRをお待ちしています。
https://github.com/nakanoasaservice/httpbin-hono
Special Thanks
最後に、オリジナルの素晴らしいツールである httpbin を生み出してくれた Kenneth Reitz 氏に深く感謝します。本プロジェクトは、偉大なオリジナルに対するリスペクトとオマージュとして作成されました。
Discussion