LoginSignup
0
0

これは Architectural Decision Record ( ADR) の下書きです。Official ではありません。

そして、NestJS 以外に他 1 つは実装を確認したい。念のために。


Status

  • 提案済み
  • 承認済み
  • 破棄

Context

  • 私たちは Product の構築を進めている。このドキュメントでは、私たちが選択した最終的な Framework とその背後にある理由を説明することを目的としている。
  • 技術選定の前提条件は以下の通りである。
    1. 少人数で適切なスピード感で開発できる必要がある。
    2. メンバーの共通の技術スタックである必要がある。
    3. (1)(2)を満たしつつ、アプリケーションの複雑さを将来に持ち込まない構成である必要がある。
  • (1) は Framework で解決できる。(2) は TypeScript になる。(3) はドメイン駆動設計で進めており、必要に応じて各ドメインを module として分割できる構成が必要になる。
  • (1)(2)(3) を満たす TypeScript の Framework を選定する。以下が 2024/05/02 時点での候補である。
No. Framework Description GitHub Star Boilerplate Case Study
1 NestJS Node.jsのためのフル機能のフレームワークです。Angularの影響を受けており、Angularのような構造化されたアーキテクチャ、依存性注入、およびTypescriptを使用しています。NestJSは、大規模なエンタープライズアプリケーションを構築するためのツールとして設計されており、拡張性とテスタビリティを重視しています。 64,500 yes
- REST
- GraphQL
- Ubie
- KAKEHASHI
2 FeatherJS リアルタイムWebアプリケーションを構築するためのツールキットです。 14,900 no N/A
3 LoopbackJS Node.jsで構築されたオープンソースのフレームワークで、APIを素早く構築し、サービスとして公開するためのツールです。LoopBackは、RESTful APIを簡単に作成するための強力な機能を提供し、データベースや外部サービスとの連携も容易に行えます。 4,800 yes
controller only
N/A
4 AdonisJS Node.jsでWebアプリケーションを構築するためのMVC(Model-View-Controller)フレームワークです。AdonisJSは、Express.jsにインスパイアされており、豊富な機能セットや強力なORM(Object-Relational Mapping)であるLucid ORMを提供しています。 15,500 no N/A
5 Ts.ED Ts.ED は、Express/Koa.js の上にある Node.js および TypeScript フレームワークです。 Ts.ED は、TypeScript (または ES6) でアプリケーションを作成するための Express/Koa の上にあるフレームワークです。コードを読みやすくし、エラーを少なくするための多くのデコレータとガイドラインが提供されます。 2,700 no N/A
6 ExpressoTS 保守性の高いサーバー側アプリケーションを作成するための、開発者に優しい Node.js フレームワークです。 1,600 yes N/A

Decision

  • NestJS を利用する。
  • 要件 (1)(2)(3) に合致する。日本国内での活用事例も多く、ナレッジとして利用できる。

Consequences

  • 学習曲線。NestJS を習得し実装するまでの学習曲線が必要になる。これは個人に依存する。しかし、より軽量な Framework に比べると、機能も多く学ぶべきことが多い。
  • 複雑さ。Boilerplate を使用した場合、Layered Architecture となるため、構造的な複雑さを持ち込むことになる。

Compliance

  • NestJS CLI を使用して Boilerplate を活用しているか Code Review で確認する。

Notes

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0