NestJS について。
Product の技術選定を行なっている。
今後の開発を見据えて、技術選定を行う。
わたしが考えている技術選定の前提条件は以下の通りである。
- 少人数で適切なスピード感で開発できる。
- メンバーの共通の技術スタックである。
- (1)(2)を満たしつつ、アプリケーションの複雑さを将来に持ち込まない構成である。
現状の方針として考えられるのは
- Framework を活用する。
- ❓
- 開発言語を最小限にする。
- TypeScript
- DDD と modular monolith pattern を採用する。
❓ の Framework について検討した。
今回の code はこちら。
About NestJS
- NestJS は Express をベースした Framework である。1
- 今私が欲しい機能は、大体揃っている。
ChatGPT
NestJS は、Node.js のためのフル機能のサーバーサイドアプリケーションフレームワークです。Angular の開発者が使いやすいように設計されており、Angular のスタイルと構造にインスパイアされたものです。NestJS は、エクスプレスをベースにしており、エクスプレスのパワフルな機能を活用しながら、アプリケーションの構造化と保守性を向上させます。NestJS の主な特徴や利点には以下が含まれます:
モジュールベースのアーキテクチャ: アプリケーションをモジュールに分割し、それぞれのモジュールが独立して機能するように設計されています。これにより、アプリケーションが拡張可能でテストしやすくなります。
依存性注入 (DI): NestJS は、依存性注入を使ってコンポーネントやサービスを管理します。これにより、コードの再利用性とテスト容易性が向上し、コードの冗長性が減ります。
ミドルウェア: NestJS は、エクスプレスのミドルウェアを簡単に統合できるため、リクエストとレスポンスの処理を柔軟に制御できます。
WebSocketsのサポート: NestJS は、WebSocket のサポートも提供しており、リアルタイムな通信アプリケーションの開発が容易です。
スケーラビリティ: NestJS は、標準的な Node.js のスケーラビリティ戦略に従っており、クラスタリング、ロードバランシング、マイクロサービスアーキテクチャなどの手法を使用して、アプリケーションのパフォーマンスを向上させることができます。
NestJS は、TypeScript で書かれており、静的型付け言語の恩恵を受けることができます。このため、開発プロセスがより安全で効率的になります。
Architecture
- NestJS は module で構成できる。
- API の雛形を generate してくれる。誰が実装しても構成を統一できることは大きなメリットだと思う。
nest g resource [name]
- Domain logic は
xxx.service.ts
に実装する。
Schema definition
- NestJS は Web API を OpenAPI2 形式で共有できる。3
- NestJS は Swagger を提供している。GraphQL Playground も。4
- IMO, API は開発した後が重要だと思う。なぜなら、どの会社でも「API の仕様を教えてください。」というやり取りを目にするから。
The OpenAPI specification is a language-agnostic definition format used to describe RESTful APIs. Nest provides a dedicated module which allows generating such a specification by leveraging decorators.
OpenAPI仕様は、RESTful API を記述するために使用される、言語にとらわれない定義フォーマットである。Nestは、デコレータを活用してこのような仕様を生成できる専用モジュールを提供している。
BTW
新しい職場のオンボーディングや業務理解が落ち着いてきた
そして、気づけば GitHub の草が枯れ始めていた 🌱
事業ドメインへの理解(Why)を深めつつ、最適な課題解決の How を提供できるよう Engineer として学びを深めていきたい