Fastify
公式サイトFastifyとは
Fastifyは、Node.jsでWebAPIやサーバーを作るためのフレームワークです。受け取るデータと返すデータの形をあらかじめ宣言し、それに基づいて入力の検証と応答の整形を自動で行う仕組みを中心に設計されています。処理の効率を重視した作りで、必要な機能はプラグインとして追加する方式のため、小さく始めて必要に応じて広げられます。同じ役割のフレームワークにExpressがあり、Fastifyはより新しい設計思想で、TypeScriptとの組み合わせを前提にした開発に向いています。
弊社が採用する理由
弊社では、Node.jsでサーバー側を作る案件のうち、APIサーバーや外部サービスとの連携を担う中継サーバーにFastifyを採用しています。データベース中心の業務システムはPHPとLaravelを基本にしていますが、リアルタイム処理や外部API連携、生成AIの呼び出しなど、Node.jsのほうが扱いやすい処理を切り出す場面があります。Fastifyは入出力の形を宣言する仕組みを持つため、TypeScriptの型やzodの定義、OpenAPIの仕様と一貫させやすく、画面側との契約を厳密に保てます。既存のExpressで作られたシステムの保守にも対応しており、新規に作る部分ではFastifyを選ぶことが多いです。Next.jsで作る画面と同じTypeScriptで書けるため、フルスタックエンジニアが画面からサーバーまで一貫して担当できる点も採用理由です。
向いている案件
- 画面側とは別に用意するAPIサーバー
- 外部サービスや生成AIと連携する中継サーバー
- リアルタイム通知など同時接続の多い処理
- TypeScriptで画面とサーバーを統一したいプロジェクト
保守・移行の観点
FastifyはNode.jsの版と連動して更新されるため、Node.jsの長期サポート版の期限に合わせて更新計画を立てます。プラグイン方式のため、使っているプラグインごとに対応状況を確認する必要があり、依存関係を記録したファイルの管理と定期的な棚卸しが保守の中心です。入出力の宣言に対する自動テストを整備しておくと、更新時に契約が崩れていないことを確認できます。更新はステージング環境で動作を確認してから本番に反映します。
組み合わせて使う技術
よくあるご質問
FastifyとExpressはどちらがよいですか?
どちらもNode.jsのサーバーを作る枠組みで、用途に大きな違いはありません。弊社では新規開発ではTypeScriptとの相性からFastifyを選ぶことが多く、Expressで作られた既存システムはそのまま保守しています。
LaravelのシステムにFastifyのサーバーを追加できますか?
可能です。リアルタイム処理や外部連携など特定の機能だけをFastifyで切り出し、Laravel本体とAPIで連携する構成をご提案することがあります。
関連するサービス
関連する開発ガイド
関連用語: API、ステージング環境、フルスタックエンジニア
監修: Unlogical Systems合同会社(杉並区・西荻窪)公開