こんにちはnaoです。最近バックエンドをNest.jsでかくことが多くなってきたので、一度基礎的な概念を振り返ろうと思い、今回記事を書きました。これから学習をしようと思ってる人に参考になれば嬉しいです。

目次
Nest.jsの基礎情報
NestJSとは、公式ドキュメントを引用以下のように書かれています。
Nest (NestJS) is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with and fully supports TypeScript (yet still enables developers to code in pure JavaScript) and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive Programming).
Under the hood, Nest makes use of robust HTTP Server frameworks like Express (the default) and optionally can be configured to use Fastify as well!
Nest provides a level of abstraction above these common Node.js frameworks (Express/Fastify), but also exposes their APIs directly to the developer. This gives developers the freedom to use the myriad of third-party modules which are available for the underlying platform.
Nest (NestJS) は、効率的でスケーラブルなNode.jsサーバー側アプリケーションを構築するためのフレームワークです。 TypeScriptで構築され完全にサポートされています。Nest は内部でExpress (デフォルト) などの堅牢な HTTP サーバー フレームワークを利用しており、オプションでFastifyを使用するように構成することもできます。
Nest は、これらの一般的な Node.js フレームワーク (Express/Fastify) の上に抽象化レベルを提供しますが、その API を開発者に直接公開します。これにより、開発者は、基盤となるプラットフォームで利用可能な無数のサードパーティ モジュールを自由に使用できるようになります。
ここからはひとつひとつ特徴を見ていきましょう。
デフォルトでTypeScriptをサポート
近年、TypeScriptを用いた開発が主流となり、TypeScriptを使わずに開発したくないと感じるエンジニアも多いでしょう。Nest.jsは最初からTypeScriptをサポートしているため、初期設定は不要です。フロントエンドでTypeScriptを使用しているエンジニアには、Nest.jsが取り組みやすいと感じられるでしょう。
Expressを元に作られている
Nest.jsは、デフォルトでExpressというNode.jsのフレームワークをコアとして使用しています。そのため、Expressの手法を活用した開発が可能です。2021年現在、ExpressはJavaScriptを用いたサーバーサイド開発において、Node.jsフレームワークの中で約97%のシェアを持つ、非常に有名な主要フレームワークです。
Angularにインスパイアされている
NestJSのアプリケーション構造は、Angularに強く影響を受けています。
この構造により、機能のアーキテクチャやリファクタリングへの時間やコストを減少させることができ、結果的にユーザーのエンドポイントやサービスの体験設計に集中することが可能となります。
NestJSは、モジュール、サービス、コントローラという3つの核心的な概念で成り立っており、これによってAngularに近い開発体験が得られます。
RestAPI GraphQLAPIとして動作できる
多くの場合、開発ではRestAPIが主流ですが、NestJSを使用すると、GraphQL APIとしても動作させることが可能です。近年、多くの企業でGraphQLが採用されているため、この機能は非常に便利と言えるでしょう。
NestCLIが優秀
Nest.jsの開発では、controller、service、moduleという3つの要素を頻繁にセットで作成します。その際、手動で一つ一つ作成するのではなく、NestCLIを使用すればコマンド一つでこれらを簡単に生成できます。また、この方法ではテストファイルも同時に作成することができるので、非常に効率的です。
まとめ:Nest.jsはいいぞ
今回の記事ではNest.jsの基本的な内容についての記事でした。次回以降からNest.jsを用いたAPI開発をしていこうと思うので、もしそちらも見ていただけたら嬉しいです!