NestJS

NestJS GraphQLチュートリアル:サーバ構築の基礎

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

GraphQLとは(RESTとの比較)

GraphQLはデータクエリ言語として設計され、クライアントが必要とするデータの構造とフィールドを明確に指定できる点が特徴です。一方でREST APIでは、リソースごとに固定されたエンドポイントが必要であり、過剰なデータ取得(over-fetching)や不足したデータ取得(under-fetching)といった課題がありました。

REST APIの限界とGraphQLの特徴

比較項目 REST API GraphQL
通信回数 リソースごとに複数回必要 1つのエンドポイントで完了
データ構造 固定されたレスポンス形式 クライアントが指定できる柔軟な構造
バージョン管理 APIの変更に伴う破壊的変更リスク スキーマを元に進化可能

GraphQLでは、以下のクエリにより必要なデータのみ取得可能です。


NestJSプロジェクト初期設定方法

NestJSでGraphQLサーバを構築するにはまず、Node.js環境とプロジェクトを作成します。以下に手順をまとめます。

Node.js環境確認とCLIによるプロジェクト生成

1. Node.js v18以降のインストールを推奨します
最新のnpmが動作していることを確認してください。公式ドキュメントでサポートされるバージョンを参照してください。

2. CLIツールによるプロジェクト生成
NestJS CLIを使用して、プロジェクトテンプレートを初期化します。以下のようにコマンドを実行してください。

3. プロジェクト構成確認
package.jsontsconfig.jsonが生成され、プロジェクトベースディレクトリ(src/)が作成されます。


GraphQLモジュールの導入手順

NestJSにGraphQLを統合するには、必要なパッケージをインストールし、GraphQLModuleを設定します。Apollo Serverを選択した理由は、Expressとの親和性と機能的な拡張性があるためです。代替案として@nestjs/graphqlのみでも利用可能です。

必要なパッケージのインストール

以下のコマンドでライブラリを追加してください。


TypeScriptでのスキーマ定義

GraphQLでは、データモデルをTypeScriptで定義し、GraphQL型に変換します。@ObjectType@InputTypeなどのデコレータを使います。

型定義ファイルの作成場所と具体例

以下のように、srcディレクトリ内にmodelsフォルダを作成し、型定義ファイルを配置します。

@ObjectTypeの具体例(user.model.ts)

@InputTypeの具体例(create-user.input.ts)


Resolverの作成と実装

Resolverはクエリやミューテーションを処理するための関数です。現実的な例として、データソース(例:DB)から情報を取得して返しますが、本チュートリアルではモックサービスを使用します。

Query用Resolverの基本構造

src/resolvers/user.resolver.tsに以下のコードを記述してください。

モックサービスの実装例(users.service.ts)


GraphiQLでのクエリテスト方法

GraphQLサーバの起動とGraphiQLでのクエリテスト手順を説明します。

起動コマンド確認

以下のコマンドでサーバを起動してください。http://localhost:3000/graphqlにアクセス可能です。


まとめ

本記事では、NestJSを使用してGraphQLサーバを構築する手順について以下のポイントを解説しました:

  • GraphQLとは何か、REST APIとの違い(柔軟なデータ取得)
  • NestJSプロジェクトの初期設定方法(CLI使用)
  • GraphQLモジュールの導入手順(パッケージインストール)
  • TypeScriptでのスキーマ定義(@ObjectType, @InputTypeデコレータ)
  • Resolverの作成と実装(Query関数の例)
  • GraphiQLでのクエリテスト方法

この記事を参考に、実際にコードを書きながらGraphQLサーバを作成してみてください。具体的な手順を踏むことで、NestJSによるGraphQL構築の基礎が理解できるでしょう。


スポンサードリンク

-NestJS