第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 start で http://localhost:3000/ にアクセスすると "Hello World!" が表示される。
1.4 まとめ
- NestJS は TypeScriptネイティブでモダンなサーバー開発ができる
- Express / Fastify をラップしているため学習コストが低い
- デコレーターやモジュールによる 明確な構造化 が強み