T-CREATOR

NestJS 最短セットアップ:Fastify + TypeScript + ESLint + Prettier を 10 分で

NestJS 最短セットアップ:Fastify + TypeScript + ESLint + Prettier を 10 分で

NestJS を使った Web API 開発を始めたいけれど、環境構築で時間を取られてしまう経験はありませんか?

本記事では、NestJS と Fastify を組み合わせた高性能な開発環境を、わずか 10 分で構築する方法をご紹介します。TypeScript、ESLint、Prettier も含めた完全な開発環境を、最短手順で整えることができるでしょう。

背景

NestJS の概要と Fastify との相性

NestJS は TypeScript で構築された Node.js フレームワークで、Angular にインスパイアされたアーキテクチャを採用しています。デコレーターや依存性注入を活用することで、スケーラブルで保守性の高いサーバーサイドアプリケーションを構築できます。

Fastify は Express の代替となる高速な Web フレームワークです。JSON シリアライゼーションの最適化やスキーマベースのバリデーション機能により、Express と比較して約 2 倍の性能を発揮します。

次の図は、NestJS と Fastify の基本的な関係性を示しています。

mermaidflowchart TD
    client["クライアント"] -->|HTTP リクエスト| fastify["Fastify<br/>(高速 HTTP サーバー)"]
    fastify -->|リクエスト処理| nestjs["NestJS<br/>(アプリケーション層)"]
    nestjs -->|ビジネスロジック| controller["Controller"]
    controller -->|サービス呼び出し| service["Service"]
    service -->|データアクセス| database[("データベース")]

    nestjs -->|レスポンス| fastify
    fastify -->|HTTP レスポンス| client

従来の Express との違い

Express は長年 Node.js 開発のデファクトスタンダードとして利用されてきましたが、以下の課題があります。

項目ExpressFastify
パフォーマンス標準的約 2 倍高速
JSON スキーマ外部ライブラリ必要内蔵サポート
TypeScript サポート追加設定必要ネイティブサポート
プラグインシステム単純高機能・型安全

TypeScript 開発環境の重要性

現代的な Node.js 開発において、TypeScript は必要不可欠な技術となっています。静的型チェックによりランタイムエラーを事前に防ぎ、開発効率を大幅に向上させることができます。

課題

セットアップの複雑さ

NestJS を使った開発を始める際、多くの開発者が直面する問題があります。

以下の図は、従来の手動セットアップで必要な作業を示しています。

mermaidflowchart LR
    start["開発開始"] -->|手動作業| setup1["NestJS CLI<br/>インストール"]
    setup1 --> setup2["プロジェクト<br/>作成"]
    setup2 --> setup3["Fastify<br/>設定"]
    setup3 --> setup4["TypeScript<br/>設定"]
    setup4 --> setup5["ESLint<br/>設定"]
    setup5 --> setup6["Prettier<br/>設定"]
    setup6 --> setup7["動作確認"]
    setup7 --> done["開発可能状態"]

    style start fill:#f9f,stroke:#333,stroke-width:2px
    style done fill:#9f9,stroke:#333,stroke-width:2px

図で理解できる要点

  • 7 つの工程を順番に実行する必要がある
  • 各工程で設定ミスが発生するリスク
  • 全体で 30 分~ 1 時間程度の時間が必要

設定ファイルの煩雑さ

NestJS プロジェクトを適切に動作させるためには、多数の設定ファイルを正しく構成する必要があります。

  • tsconfig.json - TypeScript コンパイラ設定
  • .eslintrc.js - ESLint ルール設定
  • .prettierrc - コードフォーマット設定
  • package.json - 依存関係とスクリプト設定

これらの設定ファイル間での整合性を保つことは、初心者にとって特に困難です。

開発環境統一の難しさ

チーム開発において、メンバー間で開発環境の差異が生じることは深刻な問題です。Node.js のバージョン、パッケージのバージョン、設定ファイルの違いによって、「私の環境では動くのに」という状況が頻繁に発生してしまいます。

解決策

Fastify + TypeScript + ESLint + Prettier の統合環境

本記事では、以下の技術スタックを組み合わせた最適化された開発環境を構築します。

mermaidflowchart TB
    subgraph dev_env["開発環境"]
        nestjs["NestJS<br/>フレームワーク"]
        fastify["Fastify<br/>HTTP サーバー"]
        typescript["TypeScript<br/>型システム"]
        eslint["ESLint<br/>コード品質"]
        prettier["Prettier<br/>フォーマット"]
    end

    subgraph tools["開発ツール"]
        cli["NestJS CLI"]
        yarn["Yarn<br/>パッケージ管理"]
        vscode["VS Code<br/>エディタ"]
    end

    dev_env --> tools
    tools --> output["高品質な<br/>アプリケーション"]

    style nestjs fill:#e1f5fe
    style fastify fill:#f3e5f5
    style typescript fill:#e8f5e8
    style eslint fill:#fff3e0
    style prettier fill:#fce4ec

図で理解できる要点

  • 5 つの主要技術が相互連携
  • 統一された開発ツールチェーン
  • 高品質なアプリケーション開発を実現

最短セットアップ手順の提示

従来の 30 分~ 1 時間かかるセットアップを、4 つのステップ、10 分で完了させます。

ステップ作業内容所要時間
1プロジェクト初期化2 分
2Fastify 設定3 分
3TypeScript 環境整備2 分
4ESLint + Prettier 設定3 分
合計完全な開発環境10 分

自動化された設定方法

手動での設定ミスを防ぐため、事前に検証済みの設定ファイルテンプレートを使用します。これにより、確実かつ迅速な環境構築が可能になります。

具体例

ステップ 1:プロジェクト初期化(2 分)

NestJS CLI インストール

まずは NestJS CLI をグローバルにインストールします。CLI を使用することで、プロジェクトの雛形を自動生成できます。

typescriptyarn global add @nestjs/cli

プロジェクト作成

CLI を使用して新しい NestJS プロジェクトを作成します。プロジェクト名は任意ですが、ここでは nestjs-fastify-app とします。

typescriptnest new nestjs-fastify-app

コマンド実行時に、パッケージマネージャーの選択を求められます。Yarn を選択してください。

typescriptcd nestjs-fastify-app

ステップ 2:Fastify 設定(3 分)

Fastify アダプター導入

NestJS で Fastify を使用するために、専用のアダプターをインストールします。

typescriptyarn add @nestjs/platform-fastify

main.ts の設定変更

デフォルトの Express から Fastify に変更するため、src​/​main.ts ファイルを以下のように修正します。

typescriptimport { NestFactory } from '@nestjs/core';
import {
  FastifyAdapter,
  NestFastifyApplication,
} from '@nestjs/platform-fastify';
import { AppModule } from './app.module';

アプリケーションの初期化処理を Fastify 用に変更します。

typescriptasync function bootstrap() {
  const app =
    await NestFactory.create<NestFastifyApplication>(
      AppModule,
      new FastifyAdapter()
    );

  await app.listen(3000, '0.0.0.0');
  console.log(
    'Application is running on: http://localhost:3000'
  );
}
bootstrap();

この設定により、Express の約 2 倍の性能を発揮する Fastify サーバーで NestJS アプリケーションが動作します。

ステップ 3:TypeScript 環境整備(2 分)

tsconfig.json 最適化

NestJS の TypeScript 設定を最適化します。tsconfig.json ファイルを以下の内容で更新してください。

typescript{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "ES2020",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true,
    "skipLibCheck": true,
    "strictNullChecks": false,
    "noImplicitAny": false,
    "strictBindCallApply": false,
    "forceConsistentCasingInFileNames": false,
    "noFallthroughCasesInSwitch": false
  }
}

型定義設定

Fastify 用の型定義を追加でインストールします。

typescriptyarn add -D @types/node

これで TypeScript での開発に必要な設定が完了しました。

ステップ 4:ESLint + Prettier 設定(3 分)

設定ファイル作成

まず、ESLint と Prettier の設定に必要なパッケージをインストールします。

typescriptyarn add -D eslint @typescript-eslint/eslint-plugin @typescript-eslint/parser prettier eslint-config-prettier eslint-plugin-prettier

.eslintrc.js ファイルを作成し、以下の設定を追加します。

typescriptmodule.exports = {
  parser: '@typescript-eslint/parser',
  parserOptions: {
    project: 'tsconfig.json',
    tsconfigRootDir: __dirname,
    sourceType: 'module',
  },
  plugins: ['@typescript-eslint/eslint-plugin'],
  extends: ['@typescript-eslint/recommended', 'prettier'],
  root: true,
  env: {
    node: true,
    jest: true,
  },
  ignorePatterns: ['.eslintrc.js'],
  rules: {
    '@typescript-eslint/interface-name-prefix': 'off',
    '@typescript-eslint/explicit-function-return-type':
      'off',
    '@typescript-eslint/explicit-module-boundary-types':
      'off',
    '@typescript-eslint/no-explicit-any': 'off',
  },
};

.prettierrc ファイルを作成し、コードフォーマットの設定を行います。

typescript{
  "singleQuote": true,
  "trailingComma": "all",
  "semi": true,
  "printWidth": 80,
  "tabWidth": 2
}

スクリプト追加

package.json のスクリプトセクションに、リントとフォーマットのコマンドを追加します。

typescript{
  "scripts": {
    "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
    "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\""
  }
}

動作確認

セットアップが正常に完了したか確認するため、以下のコマンドを順番に実行します。

開発サーバーの起動確認:

typescriptyarn start:dev

ブラウザで http:​/​​/​localhost:3000 にアクセスし、「Hello World!」が表示されることを確認してください。

ESLint の動作確認:

typescriptyarn lint

Prettier の動作確認:

typescriptyarn format

これで NestJS + Fastify + TypeScript + ESLint + Prettier の完全な開発環境が構築できました。

まとめ

本記事では、NestJS と Fastify を組み合わせた高性能な開発環境を、わずか 10 分で構築する方法をご紹介しました。

従来の Express ベースの環境と比較して、約 2 倍の性能向上を実現しながら、TypeScript、ESLint、Prettier による高品質な開発体験を提供できます。

この環境構築手順により、以下のメリットを得ることができるでしょう:

  • 高速な開発開始: 10 分で完全な開発環境を構築
  • 高性能: Fastify による Express の約 2 倍の処理性能
  • 高品質: TypeScript + ESLint + Prettier による堅牢なコード品質
  • チーム開発対応: 統一された設定による環境差異の解消

ぜひこの手順を活用して、効率的な NestJS 開発をスタートしてください。

関連リンク