NestJS初心者向け:AppModule / Controller / Serviceの基本構成と動作の流れ
投稿日: 2025年07月29日
現在、Nest.jsキャッチアップ中です!
今回はNestJSを学び始めた方に向けて、アプリの構成を支える3つの主要ファイルAppModule
/ Controller
/ Service
の役割と流れを見ていきましょう!!
関連記事もあるので、良かったらどうぞ!
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 {}
NestJSアプリの**設定の中心(エントリーポイント)**になるクラスです。
📌 NestJSでは、すべての部品は「モジュール」に登録しないと使えません。
その登録作業をここでしています。
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();
}
}
リクエスト(例: GET /)を受け取り、どの処理を行うかを決めるクラス。
📌 つまり「URLにアクセスされたら、サービスの処理を呼び出して応答する」という、ルーティングの入口です。
ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
}
実際の処理・ビジネスロジックを担当する部分です。
Controllerから呼び出されて、データ生成やDBアクセスなどを行う。
今回は "Hello World!"
を返すだけのシンプルな処理です。
📌 つまり「外から使われる処理を書いておく場所」です。
ここにDB操作やAIの呼び出しなどを書くようになります。
css
コピーする編集する
[ブラウザがアクセス: GET / ]
↓
[AppController.getHello()]
↓
[this.appService.getHello()]
↓
["Hello World!" を返す]
ブラウザで http://localhost:3000/
にアクセスすると…
Hello World!
と表示されるのは、AppService.getHello()
がそう返しているからです。
NestJSは、以下のような特徴で学びやすく、拡張しやすいサーバーアプリを作れるフレームワークです
デコレーターで構造が明確
モジュールベースで大規模開発にも対応
DI(依存性注入)でテストや再利用がしやすい
Expressベースで柔軟なカスタマイズが可能