🕵️‍♀️

TypeScript Framework

2024/05/02に公開

これは 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

  • Author: @danny-yamamoto
GitHubで編集を提案

Discussion