Fastify は『Express の後継』として確立された選択肢
Fastify は Express の2倍以上のスループットを持つ Node.js フレームワークで、本番採用が広がっています。本記事では編集部の視点で、実務での使い方を公開情報をもとに整理します。Node.js 本番運用 もご参考に。
Fastify の特徴
(1) 高速:Express の2〜3倍(公開情報をもとに)。(2) Schema 駆動:JSON Schema でバリデーション。(3) TypeScript First。(4) プラグインアーキテクチャ。(5) 低オーバーヘッドのロギング(pino)。
基本構造
(1) fastify()でインスタンス化。(2) route 定義:method/url/handler。(3) schema:input/output 検証。(4) register()でプラグイン読込。(5) listen()でサーバー起動。
Schema 駆動開発
(1) request validation:JSON Schema で型安全。(2) response serialization:高速化。(3) OpenAPI 生成:fastify-swagger。(4) TypeBox:TypeScript 型から Schema 生成。(5) Zod 統合:fastify-type-provider-zod。Zod-Valibot もご参考に。
プラグインアーキテクチャ
(1) Encapsulation:プラグイン単位のスコープ。(2) fastify-plugin:親スコープにも公開。(3) 豊富な公式プラグイン:cors/jwt/swagger 等。(4) カスタムプラグイン:独自機能を追加。(5) 依存関係管理:dependencies 宣言。
Hook システム
(1) onRequest/preHandler:認証等。(2) preSerialization/onResponse:応答加工。(3) onError:エラー処理。(4) onClose:クリーンアップ。(5) route 単位 vs グローバル。
本番運用
(1) pino:構造化ログ。(2) graceful shutdown:close-with-grace。(3) OpenTelemetry 統合。(4) rate limiting:@fastify/rate-limit。(5) セキュリティ:@fastify/helmet。Observability 実践 もご参考に。
失敗しがちなパターン
(1) Express ライブラリ流用:互換性問題。(2) Schema を書かない:型安全性失う。(3) プラグインスコープ誤解:依存性問題。(4) 同期処理ブロック:性能優位失う。(5) Hook 順序間違い。対策は、(1)Fastify エコシステム優先、(2)JSON Schema 必須、(3)fastify-plugin 活用、(4)非同期化、(5)公式ドキュ理解、です。