PUBLIC
WEB APITYPESCRIPT11 MIN READ

BUILT ON / WEB STANDARDS

HONOAPI

Web標準を、そのままAPIの土台にする

Honoは、RequestやResponse、HeadersといったWeb標準APIを中心に設計された、TypeScript向けの軽量Webフレームワークです。Cloudflare WorkersからNode.jsまで、実行基盤ごとの差異を意識することなく統一された感覚でAPIを構築できます。

01REQUEST要求を受け取る
02ROUTEルートを選ぶ
03MIDDLEWARE共通処理を通す
04RESPONSE結果を返す
REQUEST FLOW

受け取ったHTTPリクエストを、ルート・検証・処理・レスポンスへつなぎます。

CONTENTSこの記事の目次

01 — POSITION

Hono APIとは
何か

Honoは、HTTPメソッドとURLパスをハンドラ関数へ結びつけ、ミドルウェアやコンテキストを活用してリクエストを柔軟に処理するWebフレームワークです。Web APIサーバー、BFF(Backend for Frontend)、プロキシ、エッジアプリケーションなどのバックエンドを、最小限のコードで構成できます。

02 — REQUEST LIFECYCLE

1リクエストを
4段階で見る

フレームワークは、HTTPをアプリの処理へつなぐ交通整理役です。

WEB REQUESTHTTP Clientブラウザ / アプリStandard RequestHONO APPWeb標準ベースの小型コアMiddleware: CORS / Auth / Zod Validatorapp.get('/api', (c) => c.json({...}))TypeScript型推論 & Hono RPC (AppType)RESPONSEJSON / StreamStandard Response200 OK / HeadersRUNS ANYWHERE (共通コードで動作するアダプタ群)Cloudflare Workers / Fastly Compute / Deno / Bun / Node.js / AWS Lambda
ARCHITECTURE

Web標準のRequest/Responseを扱い、ミドルウェアパイプラインを経て高速に応答。マルチランタイムに移植可能です。

CLIENT → APPLICATIONHTTP / JSON
01REQUEST

要求を受け取る

ランタイムからWeb標準のRequestオブジェクトがアプリへ渡されます。

02ROUTE

ルートを選ぶ

HTTPメソッドとパスに一致するルーティングハンドラを特定します。

03MIDDLEWARE

共通処理を通す

ロギング、CORS制御、認証、入力バリデーションなどを順に適用します。

04RESPONSE

結果を返す

ContextオブジェクトからJSONやテキストをWeb標準のResponseとして返します。

PIPELINE

横断的な認証・ログ・エラー処理は、各ルートへ共通して組み込めます。

03 — CORE FEATURES

Hono APIを
特徴づける3点

同じAPIフレームワークでも、設計の中心に置くものが違います。

01WEB STANDARD

HTTPを共通語にする

Request、Response、URL、Headersなど、ブラウザやモダンランタイムが共有する標準APIをそのまま活用します。標準のResponseオブジェクトを直接返せるため、フレームワーク固有の癖がなく見通しの良い設計になります。

02MULTI-RUNTIME

配置先を固定しない

Cloudflare Workers、Deno、BunなどではWeb標準のインターフェースでそのままネイティブに動作し、Node.jsでも公式アダプタを介して同じコードを実行できます。インフラ固有の処理を外側に逃がし、コアロジックをポータブルに保てます。

03MIDDLEWARE + RPC

小さく始めて型を伸ばす

豊富な組み込みミドルウェアやZodなどの外部バリデータを必要に応じて柔軟に追加できます。さらにAppTypeとHono Clientを組み合わせることで、サーバーの入出力型をフロントエンドのTypeScriptクライアントへシームレスに共有できます。

04 — MINIMUM API

検証してJSONを返す

TypeScriptの型だけに頼らず、外部から届くJSONを実行時にも検証します。

src/index.tsHONO + ZOD
import { Hono } from "hono"
import { zValidator } from "@hono/zod-validator"
import { z } from "zod"

const app = new Hono()

const taskSchema = z.object({
  title: z.string().min(1),
  priority: z.enum(["low", "high"]).default("low"),
})

const createTask = app.post(
  "/tasks",
  zValidator("json", taskSchema),
  (c) => {
    const input = c.req.valid("json")
    return c.json({ id: "task_01", ...input }, 201)
  }
)

export type AppType = typeof createTask
export default app

01VALIDATE Zodで受信したJSONを実行時に厳密に検証

02CONTEXT 検証済みの型安全な値をc.req.validから取得

03RPC TYPE AppTypeの型定義をクライアント側でそのまま再利用可能

05 — GOOD FIT

どんなAPIに
向いているか

TypeScriptの型資産を活かしつつ、エッジワーカーやサーバーレスなどのモダンな実行環境で素早くAPIを動かしたい場面に最適です。

01EDGE API

利用者の近くで返したい

認証ゲートウェイ、高速なリダイレクト処理、軽量な集約APIなど、レイテンシを重視してエッジに配置する構成と抜群の相性を誇ります。

02TYPESCRIPT BFF

フロントと型を共有したい

TypeScriptのモノレポ構成において、フロントエンド専用のBFFとクライアントの間で入出力の型安全性を一貫して保ちたい場面に向いています。

03PORTABLE SERVICE

配置先を後から選びたい

Web標準の仕様に準拠して実装することで、Cloudflare WorkersからNode.jsコンテナへの移行など、将来のインフラ変更にも柔軟に対応できます。

06 — WATCH OUT

採用前に知る
3つの注意点

フレームワークが自動で担う範囲と、アプリ側で決める範囲を分けます。

01

TypeScriptの型だけでは入力を守れない

型定義はコンパイル時に消去されるため、実行時のセキュリティ防御にはなりません。外部からのリクエストにはHono ValidatorやZodを組み合わせ、不正な値がハンドラに到達する前に入口で遮断する設計が必要です。

02

すべてが完全に同じ環境ではない

基本的なRequestやResponseの扱いは共通ですが、ローカルファイルへのアクセス、WebSocket、環境変数の読み込み、データベース接続バインディングなどは配置先ごとに仕様が異なります。プラットフォーム固有機能との境界を意識して設計します。

03

軽量さはAPI設計を代行しない

フレームワークが軽量だからといって、API設計自体の考慮が不要になるわけではありません。認証・認可のフロー、統一されたエラーレスポンス構造、APIバージョニング、監視、レート制限などは要件に応じて明示的に設計する必要があります。

IN ONE SENTENCE

Hono APIとは?

Web標準のAPIとTypeScriptを活用し、エッジからNode.jsまでポータブルに動作する軽量なWeb APIフレームワーク。

KEEP EXPLORING

WEBFastAPI掲載中WEBAPI掲載中WEBHTTP掲載中CLOUDServerless掲載中

SOURCES / OFFICIAL DOCS

Hono — Documentation overview ↗Web Standards ↗Validation ↗RPC ↗