- TypeScript ネイティブなサーバーサイドフレームワーク
- Express / Fastify をベース
- 特徴:モジュール化、DI、デコレーター、豊富な公式パッケージ
- Module:
@Module() → imports, controllers, providers, exports
- Controller:
@Controller(), @Get(), @Post() → ルーティング
- Provider:
@Injectable() → ビジネスロジック
- DI: constructor で依存を自動注入
- デコレーター →
@Get(), @Param(), @Body()
- Pipe → 変換 & バリデーション(例:
ValidationPipe, ParseIntPipe)
- Guard → 認可(例:
AuthGuard)
- Interceptor → 前後処理(ログ, レスポンス変換, キャッシュ)
- Exception Filter → 例外ハンドリング(
HttpExceptionFilter)
- TypeORM → Entity + Repository で操作
- Prisma → Schema First, 型安全
- Sequelize / Mongoose も利用可能
- ベストプラクティス:Migration 管理、DTO + ValidationPipe
- REST API: Controller + DTO + Service
- GraphQL API: Code First / Schema First
- Swagger:
@nestjs/swagger → 自動 API ドキュメント
- 認証: Passport.js(Local, JWT, OAuth2)
- JWT:
@nestjs/jwt, Authorization: Bearer <token>
- Guard: ロール・権限管理
- CORS:
app.enableCors()
- Helmet:
app.use(helmet())
- Rate Limit:
@nestjs/throttler
- Microservices: gRPC / Redis / Kafka / RabbitMQ
- WebSocket:
@WebSocketGateway(), @SubscribeMessage()
- Scheduling:
@Cron(), @Interval(), @Timeout()
- Queues: Bull(Redis ベース)でジョブ管理
- テスト: Jest(ユニット & E2E)
- ConfigModule:
.env 管理
- キャッシュ:
CacheModule + Redis
- ロギング: Logger(Winston / Pino と統合可)
- Docker: コンテナ化 →
docker run -p 3000:3000
- Kubernetes: Deployment + Service
- Serverless: AWS Lambda, Cloud Functions
- クラウド: AWS ECS/Fargate, GCP Cloud Run, Azure App Service
- Controller / Service / Module を理解
- DB 連携(TypeORM / Prisma)
- Passport.js + JWT 認証
- WebSocket / Queue / Cron Job
- Jest テスト + ConfigModule
- Docker / K8s / CI/CD で本番運用