6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NestJSでのサーバーサイドアプリケーション開発のことはじめ

Posted at

はじめに

近年、Webアプリが扱うデータ量や機能は増え続け、サーバーサイドには高いパフォーマンスとスケーラビリティが求められます。そこで注目されているのが、Node.js上で動作するフレームワーク「NestJS」です。

今回の記事は、NestJSの基本的な概念と使い方についてまとめたものになります。

(宣伝コーナー)

現在、弊社では様々な開発プロジェクトが溜まっており、一緒に開発に協力いただけるフリーランスの方を募集しています!

それこそNestJSを使うレベルの大規模開発も多数あります。

大規模な開発経験が豊富な方も、そのようなプロジェクトにチャレンジしていきたい方も、是非下記フォームに回答して、弊社の開発プロジェクトに参加してください!

👉 フォームはこちら

ご回答のほど、お待ちしております!

NestJSとは?(ざっくり)

NestJSは、TypeScriptで書かれたモダンなサーバーサイドフレームワークで、ExpressやFastifyなどをベースに、より高度で大規模なアプリケーション開発をサポートしています。優れたアーキテクチャパターン、強力なDI(依存性注入)の仕組み、デコレーターによる分かりやすいコード記述ができることが特徴です。

NestJSの各概念

NestJSでは、アプリケーションを「モジュール」「コントローラー」「サービス」などの概念で構成します。これは、アプリを整理してスケーラブルに保つ「箱」を用意するイメージです。

モジュール(Module)

モジュールは、関連する機能をひとまとめにする「機能別のフォルダ」的な存在です。

  • 例:ユーザーに関する処理をUsersModule、商品に関する処理をProductsModuleといったように分ける
  • 大規模化しても「どの機能がどこにあるか」がわかりやすくなる

コントローラー(Controller)

コントローラーは、受け取ったリクエストを処理してレスポンスを返す「窓口」役です。

  • ユーザーが/usersにアクセスするとき、コントローラーは「それならユーザー関連の処理をしましょう」とサービスに依頼し、結果を返す
  • UIやHTTPリクエストとのやりとりを担当する前線部隊

サービス(Service)

サービスは、実際のビジネスロジック(データ操作や計算など)を行う、いわば中心部のイメージです。

  • コントローラーが「ユーザーの一覧が欲しい」と指示をすると、サービスがデータベースから情報を取ってきて、コントローラーに返す
  • ロジックをここに集約することで、コントローラーはスリムになり、テストや保守がしやすくなる

このように、モジュールで機能をまとめ、コントローラーが入口、サービスが中核となる構成で、大規模でも迷子になりにくいアプリが作れます。

NestJSの始め方(環境構築)

必要な準備

  • Node.js の準備
  • npmまたはyarnの準備
  • TypeScriptの基本知識(クラス、型など)

Nest CLIを使ったプロジェクト作成

NestJSには専用のCLIがあり、プロジェクト初期化やファイル自動生成が可能です。

  1. CLIのインストール(グローバル)
npm install -g @nestjs/cli
  1. 新規プロジェクト作成(ここでは my-app という名前とします)
nest new my-app

対話プロンプトが走るので、パッケージマネージャー等選択しましょう。

  1. プロジェクトへ移動してサーバー起動
cd my-app
npm run start:dev

http://localhost:3000へアクセスすると動作確認できます。

Nest CLIでのコード自動生成

Nest CLIを使えば、モジュール、コントローラー、サービスなどをコマンドから自動生成できます。これにより、初期設定やファイル作成の手間が減り、目指すべきコード構造を自然に管理できます。

モジュール作成

nest generate module users

src/users/users.module.tsが自動生成されます。

コントローラー作成

nest generate controller users

src/users/users.controller.tsが作成され、users.module.tsにも自動登録。

サービス作成

nest generate service users

src/users/users.service.tsが作成され、同様にモジュールに登録。

簡単なサンプル

以下は、シンプルなNestJSのサンプルコードです。ここではモジュール分割はありませんが、実際にはモジュールを作って機能ごとに整理していくのが基本になります。

// 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 'こんにちは、NestJS!';
  }
}

npm run start:devで起動し、http://localhost:3000にアクセスすれば「こんにちは、NestJS!」が表示されます。

まとめ

NestJSは、Node.jsとTypeScriptを基盤に、高スケーラビリティなサーバーサイドアプリを構築するための強力なフレームワークです。モジュール、コントローラー、サービスといった概念でコードを整理し、DIで依存関係を明確化。CLIでのコード自動生成でスムーズに開発を始められます。

「最初はちょっと覚えること多そう」と思うかもしれませんが、慣れると手放せなく感じるかも、、?

今回は入門的なものですが、今後NestJSを使った実践レベルのコード例も見せていけたらと思います!

おわりに

繰り返しになりますが、弊社では、フリーランスエンジニアの方を募集しております!

熱意を持って新しいプロジェクトに挑戦したい方、様々な大規模開発プロジェクトに興味のある方は、下記フォームにてあなたの経歴をご回答ください!

👉 フォームはこちら

たくさんのご応募、お待ちしております!

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?