1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Honoに関する自分なりの理解

Last updated at Posted at 2024-12-29

最近目にすることが増えたHonoについてのメモです。

概要

  • 軽量なWebアプリケーションフレームワークです。
  • 開発者はCloudflareの日本人エンジニアの方です。Cloudflare上の便利に使えるWebアプリケーションフレームワークがなかったことから自作とのこと。
  • Web標準のRequestとResponseを入出力とするfetch関数をエントリポイントとしているため、あらゆるJavaScriptランタイムで動作が可能です。実際にCloudflare Workersをはじめとして、AWS Lambda、Fastly、Deno、Bun、Node.jsで動作します。

様々なランタイムでの動作イメージ

HonoのエントリポイントはWeb標準のfetch関数です。各ランタイムで利用する場合は、専用のアダプターを挟んでランタイムのエントリポイントからfetch関数のインタフェースへの変換を行います。

Cloudflare Workers

Cloudflare Workersの場合、元々Workerのエントリポイントとして期待されるのがfetch関数を持つオブジェクトであるため、特別なアダプターなしでHonoを利用できます。

cf.drawio.png

AWS Lambda

AWS Lambdaの場合、Lambdaのエントリポイントからfetch関数のインタフェースに変換する専用のhandlerを挟む形で利用します。

lambda.drawio.png

Node.js

Node.jsの場合、ランタイム自体にはHTTPS/HTTPのリスナーがないため、専用のリスナーを前段において利用します。

node.drawio.png

まとめ

どのWebアプリケーションフレームワークでもコアの部分がやっていることは下記です。

  1. HTTPS/HTTPのリクエストをリスンすること
  2. 受信したリクエストを適切な実装モジュールにルーティングすること
  3. 実装モジュールに対して、リクエストのコンテキスト情報と、レスポンスのための入れ物を提供すること

Honoでは、1.はコアモジュールとしては提供しません。各種ランタイムが用意するリスナー機能を利用するか、オプショナルなアダプタとして提供します。2.は独自の高速なルーティング機能の実装を提供します。3.はWeb標準のfetch関数をエントリポイントとして提供します。これらの工夫により、様々なランタイムで動作する軽量で高速なWebアプリケーションフレームワークを実現しています。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?