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 開発のデファクトスタンダードとして利用されてきましたが、以下の課題があります。
項目 | Express | Fastify |
---|---|---|
パフォーマンス | 標準的 | 約 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 分 |
2 | Fastify 設定 | 3 分 |
3 | TypeScript 環境整備 | 2 分 |
4 | ESLint + 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 開発をスタートしてください。
関連リンク
- article
NestJS 最短セットアップ:Fastify + TypeScript + ESLint + Prettier を 10 分で
- article
NestJS × ExpressAdapter vs FastifyAdapter:レイテンシ/スループットを実測比較
- article
NestJS 依存循環(circular dependency)を断ち切る:ModuleRef と forwardRef の実戦対処
- article
NestJS アーキテクチャ超図解:DI コンテナ/プロバイダ/メタデータを一気に把握
- article
NestJS と GraphQL を組み合わせた型安全な API 開発
- article
【実践】NestJS で REST API を構築する基本的な流れ
- article
【2025 年 10 月版】 Claude Sonnet 4.5 登場! Claude Pro でも使える!Claude Code のアップデート手順まで紹介
- article
Turborepo で Zustand スライスをパッケージ化:Monorepo 運用の初期設定
- article
Nuxt を macOS + yarn で最短構築:ESLint/Prettier/TS 設定まで一気通貫
- article
キャッシュ比較:WordPress で WP Rocket/LiteSpeed/W3TC を検証
- article
Nginx を macOS で本番級に構築:launchd/ログローテーション/権限・署名のベストプラクティス
- article
WebSocket を NGINX/HAProxy で終端する設定例:アップグレードヘッダーとタイムアウト完全ガイド
- blog
iPhone 17シリーズの発表!全モデルiPhone 16から進化したポイントを見やすく整理
- blog
Googleストアから訂正案内!Pixel 10ポイント有効期限「1年」表示は誤りだった
- blog
【2025年8月】Googleストア「ストアポイント」は1年表記はミス?2年ルールとの整合性を検証
- blog
Googleストアの注文キャンセルはなぜ起きる?Pixel 10購入前に知るべき注意点
- blog
Pixcel 10シリーズの発表!全モデル Pixcel 9 から進化したポイントを見やすく整理
- blog
フロントエンドエンジニアの成長戦略:コーチングで最速スキルアップする方法
- review
今の自分に満足していますか?『持たざる者の逆襲 まだ何者でもない君へ』溝口勇児
- review
ついに語られた業界の裏側!『フジテレビの正体』堀江貴文が描くテレビ局の本当の姿
- review
愛する勇気を持てば人生が変わる!『幸せになる勇気』岸見一郎・古賀史健のアドラー実践編で真の幸福を手に入れる
- review
週末を変えれば年収も変わる!『世界の一流は「休日」に何をしているのか』越川慎司の一流週末メソッド
- review
新しい自分に会いに行こう!『自分の変え方』村岡大樹の認知科学コーチングで人生リセット
- review
科学革命から AI 時代へ!『サピエンス全史 下巻』ユヴァル・ノア・ハラリが予見する人類の未来