Open4

Nest.js + GraphQL開発メモ

がくがく

自身の技術的な知見を広げるため、Nest.jsとGraphQLの特徴・メリット等を調べながら開発してみる。

がくがく

Nest.jsの特徴

  • TSで開発されたバックエンドのNode.jsフレームワーク。デフォルトでTSをサポートしている。
  • 内部の実行エンジン(コア)をExpressもしくはFastifyから選択して利用できる。デフォルトではExpress。
  • DIコンテナをデフォルトで活用できる
  • デフォルトでjestが用意されており、単体テストやE2Eテストがかんたんにできる
  • アーキテクチャはAngularの影響を強く受けている
  • GraphQLとREST APIの開発をサポートしている
  • マイクロサービスを開発しやすい
  • WebSocketと連携できる

参考

https://docs.nest-book.jp/nestjstte/nestjsno

がくがく

【復習】DIコンテナについて

  • DIコンテナについて復習する前に、、、

DIとは

  • DI(Dependency Injection)は直訳すると「依存性注入」だが、Wikipediaでは以下のように説明されており、「オブジェクト注入」のほうが解釈しやすいと思う。

あるオブジェクトや関数が、依存する他のオブジェクトや関数を受け取るデザインパターンである

  • 注入とは、依存するクラスのインスタンスを外部から渡すこと
  • DIを利用する場合、参照元クラスと参照先クラスの間にインターフェースを用意することで参照先クラスの実装を待たなくても良くなる(= テストしやすいことにもつながる)
  • DIの種類
    • インターフェース注入
    • setter注入
    • コンストラクタ注入

DIコンテナとは

  • (DIを使って)あるクラスの生成時に、依存しているクラスが多い場合に、その依存関係を解決するための仕組み

参考

https://qiita.com/hinom77/items/1d7a30ba5444454a21a8

がくがく

Nest.jsプロジェクトの作成

Nest CLIをインストールし、nest new [プロジェクト名]で簡単にプロジェクト作成ができる。
npm run start:devでローカルでアプリケーション起動。

npm i -g @nestjs/cli
nest new nest-sample-app

(Nest.js、GraphQL含め)以下の記事を参考にさせていただきました。

https://zenn.dev/azukiazusa/articles/e84be9735d357e