logo

NestJS 11

NestJS 11 の発表:新機能について

Kamil Mysliwiec 氏によって2025年1月22日に発表された、NestJS の最新バージョンである NestJS 11 に関する記事です。このアップデートには、多くのバグ修正、機能強化、そして新しい機能が含まれています。ここでは、特に注目すべきハイライトを見ていきましょう。

NestJS は、エンタープライズグレードの効率的でスケーラブルな Node.js アプリケーションを構築するのに役立つ TypeScript Node.js フレームワークです。

主な新機能

ロガーの機能強化

NestJS のデフォルトロガーである ConsoleLogger が大幅にアップグレードされました。主な改善点:

  • 深くネストされたオブジェクトや配列のフォーマット改善
  • Map および Set のサポート
  • ログプレフィックスのカスタマイズ機能
  • JSON ロギングの組み込みサポート

JSON ロギングの有効化

const app = await NestFactory.create(AppModule, {
  logger: new ConsoleLogger({ json: true }),
});

本番環境では JSON 形式のログが解析・分析に役立ちます。ローカル開発時には colors オプションを true に設定することで可読性を向上できます。

const app = await NestFactory.create(AppModule, {
  logger: new ConsoleLogger({ json: true, colors: true }),
});

マイクロサービスの柔軟性向上

NestJS 11 では、NATS、Kafka、Redis などの 公式トランスポーターが大幅に改善 され、より柔軟なマイクロサービス開発が可能になりました。

unwrap メソッドで基盤のクライアントインスタンスにアクセス

import { NatsConnection } from 'nats';
const serviceRef = app.connectMicroservice({ transport: Transport.NATS });
const connection = serviceRef.unwrap<NatsConnection>();
console.log(connection.info);

on メソッドでイベントリスニング

serviceRef.on<NatsEvents>('disconnect', () => {
  console.log('Client disconnected');
});

status オブザーバブルで状態監視

serviceRef.status.subscribe((status) => {
  console.log('Status:', status);
});

アプリケーションの起動時間の短縮

動的モジュールの識別子生成が最適化され、特に大きな動的モジュールを持つアプリケーションの起動時間が大幅に改善されました。

Express v5 および Fastify v5 のサポート

NestJS 11 は Express v5 と Fastify v5 をサポートし、最新の依存関係に対応しました。

Express v5 への移行時の注意点

  • * ワイルドカードは名前が必要 (/*splat のように記述)
  • ? は使用不可、中括弧 {} を使用
  • 正規表現の文字はサポートされなくなった
@Get('users/*splat')
findAll() {
  return 'This route will work in Express v5';
}

その他のアップデート

  • ライフサイクルフックの実行順序の変更
  • CacheModulecache-manager v6 に対応
  • 新しい ParseDatePipe の追加
  • ConfigService#get の動作改善
  • @nestjs/cqrs の強化

NestJS 11 への移行

NestJS 10 から 11 への移行ガイドが提供されています。アップグレードの詳細については、公式ドキュメントを参照してください。

まとめ

NestJS 11 は、ロギング、マイクロサービス、パフォーマンス最適化、依存関係の最新化など、開発者体験を向上させる重要なアップデートを含んでいます。

logo