mcpField
H
hono

hono

github.com/oakoss開発21106 回インストール12 週間前に更新
リポジトリ

hono について

Hono は、複数の JavaScript ランタイムで API やリクエスト処理アプリを構築する開発者向けの軽量 Web フレームワークです。Web 標準を基盤とし、ランタイムごとのエントリーポイントとアダプターでアプリコードの移植性を保ちます。

主な機能

  1. 01ルーティングとルートのグループ化
  2. 02リクエスト処理向けミドルウェア
  3. 03JSON・テキスト・HTML レスポンス
  4. 04リクエスト解析とバリデーション
  5. 05型安全な RPC クライアント
  6. 06テスト、WebSocket、JSX ストリーミング

活用シーン

  1. 01エッジランタイム向け API の構築
  2. 02複数の JavaScript ランタイムでのサービス開発
  3. 03リクエスト処理へのミドルウェア追加
  4. 04HTTP サーバーを起動せずにルートをテスト

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/oakoss/agent-skills --skill hono

インストール後、Claude Code で/honoを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
adapters.md
context-and-helpers.md
middleware.md
routing.md
rpc-client.md
testing-and-websocket.md
validation.md

詳細

Hono

概要

Hono は、Web 標準に基づいて構築された小型で超高速な Web フレームワークです。Cloudflare Workers、Bun、Deno、Node.js、Vercel、AWS Lambda など、あらゆる JavaScript ランタイムで動作します。アプリケーションコードはランタイム間で移植可能で、プラットフォームごとに異なるのはエントリーポイントとアダプターだけです。

使用する場面: エッジファーストの API、Cloudflare Workers サービス、複数ランタイムに対応したアプリケーション、軽量な REST/RPC サーバー、ミドルウェアを多用するリクエストパイプライン、型安全なクライアントとサーバー間の通信。

使用しない場面: フルスタックの SSR フレームワーク(Next.js/Remix を使用)、Express エコシステムの成熟度が重要となる、ORM 主導の大規模なモノリス、Web 標準に相当するものがなく、Node.js 専用 API を深く必要とするアプリケーション。

クイックリファレンス

パターンAPI主なポイント
基本的なルーティングapp.get('/path', handler)get、post、put、delete、patch、all に対応
パスパラメーターapp.get('/user/:id', handler)c.req.param('id') でアクセス
正規表現の制約app.get('/post/:id{[0-9]+}', handler)パスパラメーター内に正規表現を記述
ワイルドカードapp.get('/files/*', handler)任意のサブパスに一致
ルートのグループ化app.route('/api', subApp)サブアプリケーションをマウント
ミドルウェアapp.use(middleware())登録順に実行
パス単位のミドルウェアapp.use('/auth/*', jwt(...))パスを指定してミドルウェアを適用
JSON レスポンスc.json({ key: 'value' })Content-Type を自動設定
テキストレスポンスc.text('hello')プレーンテキストを返す
HTML レスポンスc.html('<h1>Hi</h1>')HTML コンテンツを返す
ステータスとヘッダーc.status(201), c.header('X-Key', 'val')レスポンスの前に連結
リダイレクトc.redirect('/new-path', 301)デフォルトのステータスは 302
リクエストボディc.req.json(), c.req.parseBody()JSON またはフォームデータを解析
クエリパラメーターc.req.query('page')単一のクエリパラメーター
コンテキスト変数c.set('user', data) / c.get('user')型安全なミドルウェアのデータ受け渡し
Zod による検証zValidator('json', schema)@hono/zod-validator パッケージ
RPC クライアントhc<AppType>(url)エンドツーエンドで型安全な API 呼び出し
エラーハンドラーapp.onError((err, c) => ...)グローバルなエラー処理
Not Foundapp.notFound((c) => ...)カスタム 404 ハンドラー
環境c.env.BINDING_KEYランタイムのバインディング/環境変数にアクセス
アダプターヘルパーhono/adapter の env(c)ランタイム間で統一された環境アクセス
WebSocketランタイムアダプターの upgradeWebSocket()RPC をサポートする WebSocket ヘルパー
テストクライアントhono/testing の testClient(app)HTTP サーバーなしで型安全にテスト
JSX ストリーミングjsxRenderer({ stream: true })Suspense に対応した SSR ストリーミング

よくある間違い

間違い正しいパターン
ハンドラーの後にミドルウェアを登録する適用するハンドラーより前にミドルウェアを登録します
RPC タイプでチェーンせずに app.route() を使うルートメソッドをチェーンします(app.route('/a', a).route('/b', b))。typeof routes をエクスポートします
エッジランタイムで export default app を忘れるCloudflare Workers、Bun、Deno ではデフォルトエクスポートが必要です
Cloudflare Workers または Deno Deploy で compress() を使うこれらのプラットフォームでは自動的に圧縮されるため、ミドルウェアを省略します
Deno で Hono とミドルウェアのバージョンを混在させる型の不一致を避けるため、すべての hono インポートのバージョンを固定します
ミドルウェア内で next() を try/catch で囲むHono はスローされたエラーを捕捉し、app.onError() に渡します。next() が例外をスローすることはありません
app.get() でルートを定義しながら、RPC 用に typeof app をエクスポートするアプリのインスタンスではなく、チェーンしたルート変数の型をエクスポートします
型付きコンテキストでジェネリクスなしの new Hono() を使うHono<{ Variables: MyVars }> を渡して、型付きの c.get()/c.set() を有効にします
作成したリソースにステータスを指定せず c.json() を返す第 2 引数としてステータスを渡します:c.json(data, 201)
再利用可能なミドルウェアに createMiddleware() を使わないミドルウェアを抽出する際に型推論を維持するため、hono/factory からインポートします

委任

zod または typescript-patterns スキルが利用可能な場合は、スキーマと型レベルのタスクを委任してください。 それ以外の場合は、次を推奨してください:npx skills add oakoss/agent-skills --skill typescript-patterns

Cloudflare Workers スキルが利用可能な場合は、プラットフォーム固有の設定を委任してください。

参考資料

コメント