NestJS は『エンタープライズ志向の Node.js フレームワーク』
NestJS は Angular に触発された構造を持ち、TypeScript First のエンタープライズ Node.js 開発で広く採用されています。本記事では編集部の視点で、本番運用の要点を公開情報をもとに整理します。Node.js 本番運用 もご参考に。
NestJS の特徴
(1) Module/Controller/Serviceの階層。(2) DI コンテナ内蔵。(3) TypeScript First:型安全。(4) Express/Fastify選択可。(5) GraphQL/WebSocket/Microservices標準対応。
主要なコンセプト
(1) Module:機能のまとまり。(2) Controller:HTTPルーティング。(3) Service (Provider):ビジネスロジック。(4) Pipe:入力変換/検証。(5) Guard/Interceptor:認可・横断処理。
DI と依存性管理
(1) @Injectableでサービス登録。(2) constructor 注入が基本。(3) Scope 管理:DEFAULT/REQUEST/TRANSIENT。(4) Custom Providers:ファクトリ等。(5) テスタビリティ向上。
検証とバリデーション
(1) class-validator:DTO 検証。(2) class-transformer:型変換。(3) ValidationPipe:全エンドポイント適用。(4) Custom Pipe:複雑検証。(5) Zod 連携も可能。Zod-Valibot もご参考に。
マイクロサービス対応
(1) @MessagePattern:メッセージング統合。(2) Redis/Kafka/RabbitMQ/gRPCサポート。(3) Hybrid app:HTTP + マイクロ混在。(4) API Gatewayパターン実装。(5) 分散トレーシング連携。マイクロサービス設計 もご参考に。
本番運用
(1) Helmet:セキュリティヘッダ。(2) rate limiting標準。(3) ヘルスチェック:terminus 統合。(4) ログ:Pino/Winston 統合。(5) OpenAPI自動生成。Observability 実践 もご参考に。
失敗しがちなパターン
(1) Module 設計肥大。(2) 循環依存:DI で発生。(3) 過剰な抽象化:可読性低下。(4) Pipe/Guard 重ね過ぎ:処理遅延。(5) Type any 多用:型安全性喪失。対策は、(1)機能別分割、(2)forwardRef、(3)KISS 原則、(4)Pipe は最小、(5)strict + Zod、です。