【NestJS入門】 - NestJSでできることを理解し、環境構築してみよう

Posted: October 02, 2021

NestJSとは

NestJSは、Node.jsのサーバーサイドアプリケーションを構築するためのフレームワークです。
主な特徴として、以下が挙げられます。

  • TypeScriptの完全サポート
  • 内部でExpressかFastifyのどちらかを使用するか決めることができる
  • オブジェクト指向プログラミング、関数型プログラミング)、関数型リアクティブプログラミングの要素を組み合わせることができる
  • DIコンテナをデフォルトで提供
  • テストが容易で疎結合であり、スケーラブル
    • アーキテクチャはAngularに大きく影響を受けている
  • GraphQLをサポートしている
  • すぐに利用開始できるCliツールを備えている
  • マイクロサービスを構築しやすい

上記のように、ExpressなどのNode.js製アプリケーションをさらに抽象化した作りになっており、アプリケーション実装に役立つさまざまな機能を提供しており、TypeScriptもサポートしているため、フロントエンドからの介入も比較的楽なのかなと思います。
また、NestJSはModuleという単位でコードをまとめ、整理することができます。これによりSOLID原則を守ることができ、より保守性の高いコードでいれます。

NestJSでアプリケーション構築

では早速CLIを用いてNestJSのアプリケーションを構築していきましょう。
まずlocalのNode.jsのバージョンを確認しましょう。Nestはnode version が10.13.0以上である必要があります。

$ node -V
v14.17.6 (v10.13.0以上ならOK)

次にnest cliをインストールし、アプリケーションを構築します。

$ npm i -g @nestjs/cli
$ nest new <アプリケーション名>

すると使用するパッケージマネージャーを聞かれますので、好きな方を答えてください

?Which package manager would you ❤️  to use?
npm
> yarn 

しばらくたつとアプリケーションの構築が完了します。
ファイル構成は以下のようになっているかと思います。

nest-cli.json  package.json  src   tsconfig.build.json  yarn.lock
node_modules   README.md     test  tsconfig.json

TypeScriptをサポートしているので、tsconfig.json, tsconfig.build.json が自動生成されています。
また、ESLint・Prettier・Jestの設定もされています。初め導入するのが面倒だったりするので、このへんも助かりますね。
ソースコードはsrc以下に配置されており、

src
├── app.controller.spec.ts
├── app.controller.ts
├── app.module.ts
├── app.service.ts
└── main.ts

のようにデフォルトのコードが存在します。
このアプリのコントローラークラス・そのユニットテスト、サービスクラス、モジュール、エントリファイルが含まれており、それぞれについてはまた別記事にて解説します。
それでは実際にアプリケーションを実行してみましょう。

$ yarn start:dev
or
$ npm run start:dev

お好きなブラウザを開き、http://localhost:3000/ にアクセスしてみましょう。
Hello World!の文字が表示されたでしょうか?
引き続き本ブログではNestJSの機能や実装パターンについて解説していくので、よければこの後の記事もご覧いただけると嬉しいです🙌