NestJSでできることを理解し、環境構築してみよう

Posted: 2021/10/3
NestJS/
概要

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 の機能や実装パターンについて解説していくので、よければこの後の記事もご覧いただけると嬉しいです 🙌