ホーム テクノロジー 開発 NestJS の概要 [+6 学習リソース]

NestJS の概要 [+6 学習リソース]


NestJS は、スケーラブルで効率的、信頼性の高いサーバー側アプリケーションを構築するための進歩的な Node.js フレームワークです。

NestJS は、整理されていないコードベースを排除するために構築されました。モジュール構造により、コードをさまざまなモジュールに簡単に編成できます。

NestJS は Typescript に基づいて構築されており、内部では ExpressJS を使用します。 NestJS は、TypeScript の型チェック機能を活用したい開発者に愛されています。 NestJS は、関数型リアクティブ プログラミング (FRP)、オブジェクト指向プログラミング (OOP)、関数型プログラミング (FP) のさまざまな側面を組み合わせています。

なぜ NestJS なのか?

なぜNestJS
なぜNestJS

NestJS は、優れた構造と使いやすいコマンド ライン インターフェイス (CLI) ツールを備えているため、初心者に優しいです。したがって、開発者は、この Node.js フレームワークを使用しながら、単一のコマンドで新しい機能をスキャフォールディングできます。

NestJS は、開始するためのモジュール、サービス、コントローラー、およびテストパイルを提供します。開発作業を容易にするために利用可能な多数の定型文やテンプレートを利用することもできます。

NestJS の学習曲線は、JavaScript と Angular のループ、構文、条件に精通している人にとっては簡単です。

NestJSの特徴

NestJSの特徴
NestJSの特徴

Typescript に基づいて構築

NestJS は、JavaScript の上付き文字である Typescript に基づいて構築されています。 Typescript を使用すると、コード内の何かを変更するたびにエラーを手動でチェックする必要がなくなるため、開発エクスペリエンスが向上します。 Typescript は基本的に JavaScript のすべての機能を提供しますが、いくつかの追加機能も備えています。

依存性注入コンテナ

依存関係の注入は、クラスが使用するオブジェクトの初期化をクラス自体から分離します。このような場合、クラスは「クライアント」と呼ばれ、クラスの依存関係は「サービス」と呼ばれます。 NestJS に組み込まれた DI により、アプリケーションがより効率的かつモジュール化されます。

強力なコマンドラインインターフェイス (CLI)

NestCLIを使用して、すべての NestJS アプリケーションを初期化、開発、保守できます。 Nest CLI を使用してできることはたくさんあります。

  • プロジェクトの足場を築く
  • 開発モードでプロジェクトを提供する
  • 本番環境の配布用にアプリケーションを構築してバンドルする

モジュール化

すべての NestJS アプリケーションには少なくとも 1 つのモジュールがあります。 「root」モジュールは最も基本的なモジュールです。一般的な NestJS アプリでは、アプリケーションのすべての論理部分が同じドメイン境界 (モジュール) 内に存在します。このような設定により、アプリケーションに密接に関連した一連の機能を持つ複数のモジュールが含まれるコンポーネントを簡単に整理できます。

単体テスト

自動テストには多くのメリットがあります。ただし、そのようなテストを設定するプロセスは、非常に複雑になる場合があります。 NestJS には、チームのテストの構築と自動化を支援するさまざまな機能があります。 NestJS の良い点は、さまざまなテスト ツールで使用できることです。 Nest 依存関係注入システムは、テスト中にコンポーネントを簡単にモックするために利用可能になります。

データベースアゴニスト

NestJS を使用する場合は、ニーズや好みに基づいて SQL または NoSQL データベースと簡単に統合できます。 NestJS をデータベースに接続するのは非常に簡単で、適切な Node.js ドライバーをロードするだけで済みます。

さまざまなライブラリをサポート

NestJS はさまざまなツールと互換性があり、アプリケーション開発を高速化します。このフレームワークは、追加の構成なしで、ロギング、検証、キャッシュ、WebSocket、TypeORM、Mongoose、GraphQL をサポートします。

NestJS のアーキテクチャとワークフロー

NestJS は、コントローラー、プロバイダー、モジュールで構成される 3 層アーキテクチャーを持っています。したがって、開発者は重複のないクリーンなコードを作成できます。

画像出典: betterprogramming

コントローラー

NestJS のコントローラーは、クライアントのリクエストと応答の間のブリッジとして機能します。ルーティング メカニズムは、HTTP リクエストが行われるたびに、リクエストを適切なコントローラーに送信します。フレームワークは、デコレーターとクラスを使用してコントローラーを作成します。次に、各クラス メソッドがルートにマップされ、特定のリクエストを受信します。

プロバイダー

プロバイダーは、NestJS の基礎と言えます。プロバイダーは依存関係として挿入され、さまざまなオブジェクト間の関係を作成します。ヘルパー、サービス、リポジトリなどの NestJS のクラスは、`@Injectable()` デコレータが追加されるとプロバイダーとして扱うことができます。このようなプロバイダーは、コンストラクターを通じてクラスに挿入することもでき、NestJS によって依存関係が解決されます。

モジュール

NestJS のモジュールには、密接に関連した一連の機能がまとめられています。すべての NestJS アプリには、エントリ ポイントとして使用されるルート モジュールがあります。コードを整理して読みやすくしたい場合は、複数のモジュールを使用することを強くお勧めします。 Nest の `@Module()` デコレーターはモジュールを定義し、そのモジュールに関連する依存関係、コントローラー、プロバイダーなどの情報も提供します。

NestJS の入門

Node.js と npm がインストールされていることを確認します。ランタイム環境が必要ですが、Node.js はこのセットアップに最適です。 v13 を除くバージョン 12 以上が必要です。これらのコマンドを使用して、Node.js と npm がインストールされているかどうかを確認できます。

 node -v
 npm -v

両方がインストールされている場合は、これに近い出力が得られます。

ノード
ノード

お持ちでない場合は、 公式ページからインストールしてください。幸いなことに、Node.js と npm は両方とも一緒にインストールされます。

  • Nest CLIをインストールします。次のコマンドを使用して、CLI とプロジェクトを設定します。
 npm i -g @nestjs/cli
 nest new project-name

デモンストレーションの目的で、プロジェクト名を mynestapp に選択します。 NestJS を使用すると、Typescript または Vanilla JavaScript を使用する機会が得られます。自分に合ったものを選択し、Enter キーを押してください。アプリがスキャフォールディングされると、ファイル構造がセットアップされ、このスクリーンショットに示すように、「src」フォルダーにいくつかのコア ファイルが含まれます。

ファイル構造
ファイル構造
  • アプリケーションを実行する/最初の Hello World

インストールが完了したら、次のコマンドを実行して開発サーバーを実行します。

 cd mynestapp
 npm run start

ブラウザに http://localhost:3000/ と入力すると、NestJs の最初の「Hello World」が表示されるはずです

NestJS: 利点

  • 学びやすい。特に Angular を使用している場合、または JavaScript を一般的に理解している場合は、NestJS を習得するのは簡単です。詳細なドキュメントにより、この強力なフレームワークの操作を簡単に習得できます。
  • 柔軟。 NestJS を使用すると、さまざまなものを構築できます。この Node.js フレームワークを使用して、MVC アプリケーション、GraphQL アプリケーション、RESTful API、および Web ソケットを作成できます。
  • 数千のモジュールが付属しています。コミュニティでサポートされているモジュールを使用すると、開発者はサーバー側アプリケーションを作成する際にさまざまな機能を簡単に構築できます。
  • 迅速な開発と優れたアーキテクチャ。 NestJS を使用する場合、すべてを最初から作成する必要はありません。ただし、同じフレームワークには、コードを理解しやすくするための堅牢なアーキテクチャがあります。

NestJS: 欠点

  • TypeScript や Angular のバックグラウンドを持つ人には好ましくありません。 NestJS は Angular アーキテクチャから多くを借用しているため、そのような知識がない人は構文と構造を理解するのに時間がかかるかもしれません。
  • 一部のエリアが不足しています。 NestJS はまだ開発されていないため、Python や GO をベースとした確立されたフレームワークと競合できない可能性があります。

NestJS を使用している企業

#1.アディダス

靴のメーカー兼デザイナーである Adidas は、 NestJS を使用している企業の 1 つです。 NestJS の驚くべき機能が、この靴の巨人をバックエンドで使用することに惹かれたに違いありません。

#2.キャップジェミニ

キャップジェミニは、コンサルティング、テクノロジー、アウトソーシング、プロフェッショナル サービスを提供するフランスの多国籍企業です。この会社は技術スタックで NestJS を使用しています。

#3.ロッシュ

Rocheは 2 つの部門を持つ多国籍ヘルスケア企業です。医薬品と診断薬。 Roche は、メイン Web サイトの技術スタックの 1 つとして NestJS を使用しています。

学習リソース

#1. NestJS ゼロからヒーロー

ゼロからヒーローへ
ゼロからヒーローへ

NestJS Zero to Hero は、Typescript と Node.js を使用してエンタープライズ バックエンド アプリケーションを作成およびデプロイする方法を開発者に教えます。このコースでは、API、承認と認証、Nest アプリケーションの単体テスト、データベース操作のための TypeORM などの作成方法を学びます。

#2. NestJS: 完全な開発者ガイド

完全な開発者ガイド
完全な開発者ガイド

このコースでは、Nest、TypeScript、TypeORM を使用してバックエンド API を作成する方法を開発者に教えます。この完全なガイドには、NestJS アプリのコーディング、テスト、デプロイのセットアップに必要なものがすべて含まれています。また、NestJS Web フレームワークの舞台裏についても理解できます。

#3.マスター NestJS

MasterNestJS
MasterNestJS

Master NestJS は、TypeScript を使用してエンタープライズ グレードの Node.js アプリを開発する方法を教えます。このコースでは、検証とデータのシリアル化、JWT トークンの仕組み、NestCLI の使用方法、最新のデータベース抽象化など、多くのことを学びます。

#4. NestJs の実践 (MongoDB を使用)

NestJ の実践
NestJ の実践

NestJS in Practice では、モジュール、コントローラー、GuardsServices、パイプ、ミドルウェアに至るまで、NestJS について学ぶ必要があるすべてを教えます。このコースではプロジェクトベースのアプローチを採用しており、セクションごとにダウンロード可能な zip ファイルを使用してコードをコーディングし、GitHub でコードをホストします。

#5. Nest.js: 進歩的な Node.js フレームワーク

この本では、開発者に NestJS と JavaScript と TypeScript を活用する方法を紹介します。この本は、NestJS アプリをすぐにセットアップして実行できるように、ハウツー形式で設計されています。

#6.実践的な Nest.js: クリーンな MVC Web アプリケーションを開発する

実践的な Nest.jsブックでは、プロジェクトベースのアプローチを使用して、さまざまな NestJS 機能を利用するオンライン ストア アプリケーションを作成します。この本には、NestJS アプリを作成する際の短いディスカッション、ヒント、便利なフレーズが含まれています。

結論

NestJS は、強力な Node.js フレームワークであるだけでなく、現在サーバーサイド アプリケーションで最も人気のある Typescript フレームワークの 1 つでもあります。コーディングのベスト プラクティスと標準の開発アーキテクチャを提供しているという事実により、アプリケーションを構築する際にビジネス ロジックの構築に集中したいと考えている多くのエンジニアを魅了しています。

「 NestJS の概要 [+6 学習リソース]」についてわかりやすく解説!絶対に観るべきベスト2動画

Xây dựng Restful Backend api với NestJS, JWT Authenticaion, Prisma,Pactum
How to use NestJS to schedule tasks? #shorts