メインコンテンツまでスキップ

第01章 はじめに

1.1 NestJSとは

NestJS は 効率的・スケーラブル・保守性の高いサーバーサイドアプリケーション を構築するためのフレームワーク。

  • TypeScript をフルサポート
  • オブジェクト指向プログラミング(OOP)関数型プログラミング(FP)リアクティブプログラミング(RP) の考え方を取り入れている
  • 内部的には Express をデフォルトで使用(Fastify にも切り替え可能)

1.2 特徴

  • モジュールベースのアーキテクチャ アプリを小さな単位に分割 → 再利用性・テスト容易性が高い
  • 依存性注入(Dependency Injection, DI) クラス間の依存をフレームワークが自動解決 → 疎結合設計が可能
  • 強力なデコレーター構文 @Controller()@Get() などで直感的にルーティングや設定が可能
  • 豊富なエコシステム GraphQL、WebSocket、マイクロサービス、Swagger、認証(JWT / Passport)など公式サポート

1.3 Hello World

インストール

$ npm i -g @nestjs/cli
$ nest new project-name

最小構成の例

https://github.com/nestjs/typescript-starter/tree/master

// main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
// app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
// app.controller.ts
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}

@Get()
getHello(): string {
return this.appService.getHello();
}
}
// app.service.ts
import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
}

➡️ npm run starthttp://localhost:3000/ にアクセスすると "Hello World!" が表示される。


1.4 まとめ

  • NestJS は TypeScriptネイティブでモダンなサーバー開発ができる
  • Express / Fastify をラップしているため学習コストが低い
  • デコレーターやモジュールによる 明確な構造化 が強み