参考
予備知識
特徴
Nest (NestJS) は、効率的でスケーラブルなNode.jsサーバー側アプリケーションを構築するためのフレームワークです。プログレッシブ JavaScript を使用し、 TypeScriptで構築され、TypeScript を完全にサポートしています(ただし、開発者は純粋な JavaScript でコーディングできます)。
OOP (オブジェクト指向プログラミング)、FP (関数型プログラミング)、FRP (関数型リアクティブプログラミング) の要素を組み合わせています。
内部的には、Nest はExpress.js(デフォルト) などの堅牢な HTTP サーバー フレームワークを利用しており、オプションでFastifyも使用するように構成できます。
-
フロントエンドからバックエンドまで、一貫してTypeScriptでの開発を実現するフレームワークです。
-
Node.js上で動作するバックエンド開発のフレームワークです。
-
GitHubでは、NestJS は 64k のスターを獲得しています。(比較対象として、Laravel は 77k です。)
-
Laravel とは異なり、モジュール毎にMVCが存在します。
-
RESTfullAPIの構築を簡単にし、GraphQLをサポートしています。
- Express.js : Node.jsで最も有名なフレームワークです。NestJSと同様にフロントエンドとバックエンドを一貫してTypeScriptで開発できます。
- Node.js : JavaScriptのバックエンド実行環境です。フレームワークではありません。非同期処理とイベント駆動型の設計により、同時接続や大量アクセスに強いです。GitHubでのスター獲得数は 100k です。
長所(6)
長所 | 根拠 |
---|---|
保守性が高い | TypeScriptの静的型付けによる恩恵です。 |
開発の柔軟性が高い | モジュール構造を採用しているためコードの再利用性が高いです。また、依存性注入(DI)による恩恵も受けています。 |
テストが実行しやすい | テストフレームワークとしてJestが標準搭載されています。 |
拡張性が高い | モジュール構造により、アプリケーションの各部分を個別に拡張・更新することができます。 |
ビジネスロジックの構築に集中できる | アーキテクチャがすでに処理されています。 |
ドキュメントが充実 | |
エンジニアが確保しやすい | TypeScriptが開発言語であり、フロントエンドでTypeScriptを使用する場面は多くあるからです。 |
- 依存性注入(DependencyIInjection、DI) : コードの再利用性を高め、モジュール間の独立性を保ちながら、柔軟にアプリケーションを構築できる仕組みです。依存性を後から注入することで、柔軟性を確立します。
短所(2)
短所 | 説明 |
---|---|
学習コストの高さ | NestJSはTypeScriptの使用、依存性注入、モジュール構造など、高度なプログラミング概念を多用しています。 |
日本語情報の少なさ | NestJSは古参のフレームワークと比較するとコミュニティ規模が小さいです。このフレームワークは、2017年にリリースされたものであり、比較的新しいです。 |
NestJSプロジェクトの基本構造(5)
参考記事は こちら
.
├─ main.ts
├─ app.module.ts
├─ app.controller.ts
├─ app.controller.spec.ts
└─ app.service.ts
基本構造 | 説明 |
---|---|
main.ts | プロジェクトのエントリーポイント |
app.module.ts | アプリケーションのルートモジュール |
app.controller.ts | 単一経路を持つ基本的なコントローラ |
app.controller.spec.ts | コントローラのユニットテスト |
app.service.ts | 単一のメソッドを持つ基本的なサービス |
NestJSの基本要素(3)
参考記事は こちら
基本要素 | 説明 |
---|---|
Module | 関連するContorollerやServiceなどをまとめて、NestJSに登録します。 |
Controller | ルーティングの機能を担います。 |
Service | ビジネスロジックを定義します。 |
- モジュールの中に、ControllerとServiceをもちます。
Introduction
参考は[こちら]
NestJSは、オブジェクト指向プログラミング、関数プログラミング、リアクティブプログラミングの組み合わせで構成されます。
1 | 2 | 3 |
---|---|---|
- OOP (Object Oriented Programming、オブジェクト指向プログラミング)
- FP (Functional Programming、関数プログラミング)
- FRP (Functional Reactive Programming、リアクティブプログラミング)
こちらの記事によると、FRPとは、非同期データストリームを用いるプログラミングのことである。