0
0

[NestJS] NestJSの特徴を整理。

Last updated at Posted at 2024-05-31

参考

予備知識

特徴

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をサポートしています。

  1. Express.js : Node.jsで最も有名なフレームワークです。NestJSと同様にフロントエンドとバックエンドを一貫してTypeScriptで開発できます。
  2. Node.js : JavaScriptのバックエンド実行環境です。フレームワークではありません。非同期処理とイベント駆動型の設計により、同時接続や大量アクセスに強いです。GitHubでのスター獲得数は 100k です。

長所(6)

長所 根拠
保守性が高い TypeScriptの静的型付けによる恩恵です。
開発の柔軟性が高い モジュール構造を採用しているためコードの再利用性が高いです。また、依存性注入(DI)による恩恵も受けています。
テストが実行しやすい テストフレームワークとしてJestが標準搭載されています。
拡張性が高い モジュール構造により、アプリケーションの各部分を個別に拡張・更新することができます。
ビジネスロジックの構築に集中できる アーキテクチャがすでに処理されています。
ドキュメントが充実
エンジニアが確保しやすい TypeScriptが開発言語であり、フロントエンドでTypeScriptを使用する場面は多くあるからです。
  1. 依存性注入(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とは、非同期データストリームを用いるプログラミングのことである。
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