macOSローカル環境でServBayを使ってNestJSプロジェクトを作成・実行する
NestJSは、効率的かつスケーラブルなNode.jsサーバーサイドアプリケーションを構築するための先進的なNode.jsフレームワークです。TypeScriptで記述されており、Angularに触発されたモジュール化アーキテクチャと依存性注入(DI)パターンを採用しています。NestJSは強力なツールと機能を提供し、開発者が保守性・テスト性・高い疎結合性を持つ複雑なアプリケーションを簡単に構築できるようにします。
NestJSの主な特徴とメリット
- モジュール化アーキテクチャ:コードをモジュール単位で整理し、アプリケーションの構造化や理解・保守性を向上させます。
- 依存性注入:パワフルかつ扱いやすいDIシステムによりコードのテスト容易性と保守性を大きく向上。
- TypeScript活用:TypeScriptの静的型チェックやインターフェース、モダンなJavaScript機能をフル活用することで開発効率とコード品質が向上し、実行時エラーも削減。
- 豊富なデコレーター:コントローラー、サービス、モジュール等をデコレーター(Decorators)で定義でき、表現力と可読性に優れます。
- 強力なエコシステム:活発なコミュニティとたくさんのサードパーティ製モジュール・プラグインのサポート。TypeORM、Mongoose、GraphQL、WebSockets、キャッシュ、バリデーションなど主要機能の統合も簡単です。
- 標準ベース:ExpressやFastify等の成熟したHTTPサーバーフレームワークの上で構築されており、互換性と性能にも優れます。
NestJSを活用すれば、SOLID原則やデザインパターンなど、バックエンド開発のベストプラクティスを採用しながら、高性能でエンタープライズクラスのWebアプリやAPI、マイクロサービス等を迅速に構築できます。
ServBayでNestJSプロジェクトを作成し実行する
ServBayは、macOS向けの強力かつ統合されたローカルWeb開発環境で、多数のNode.jsバージョンや主要なデータベース、Webサーバーを内蔵しています。本ガイドでは、ServBayのNode.js環境と「ウェブサイト」機能を活用してNestJSプロジェクトを作成・実行・設定する方法を解説します。ServBayのリバースプロキシ機能を利用し、ローカルのNestJSアプリへ独自のドメイン名でアクセスできるようにします。
事前準備
始める前に、下記の準備を確認してください。
- ServBayのインストール:macOSへServBayをインストール済みであること。
- Node.jsパッケージの有効化:ServBayコントロールパネルの「パッケージ」タブで必要なNode.jsバージョンが選択・インストールされていること。未設定の場合はServBay Node.js利用ガイドに従いセットアップしてください。
NestJSプロジェクトの作成
NestJS CLIのグローバルインストール
ターミナルを開き、npm(Node.jsに同梱)を使ってNestJS CLIをグローバルインストールします。NestJS CLIは、初期化・開発・保守作業を容易にする強力なツールです。
bashnpm install -g @nestjs/cli
1プロジェクトの初期化
ServBayおすすめのウェブサイトルートディレクトリ
/Applications/ServBay/www
に移動します。ここはServBayがデフォルトでWebサイトを格納する場所となっており、後の設定が簡単です。NestJS CLIを使って新規プロジェクトを作成します。bashcd /Applications/ServBay/www nest new servbay-nest-app
1
2コマンド実行後、CLIがプロジェクト作成プロセスをガイドし、パッケージマネージャー(npm, yarn, pnpm)の選択を求めます。npm推奨です。プロジェクトは
/Applications/ServBay/www/servbay-nest-app
に作成されます。プロジェクト依存パッケージのインストール
新たに作成したプロジェクトディレクトリ
servbay-nest-app
に移動し、必要な依存パッケージをインストールします。bashcd servbay-nest-app npm install
1
2nest new
コマンド時点でnpm install
は一度実行されますが、念のため再度実行することでパッケージが正しくインストール・更新されているか確認できます。
NestJSプロジェクトのルート出力内容を編集(任意)
プロジェクトが正常に動作し、ServBay経由でアクセスできるかを確かめるため、デフォルトのルートレスポンスを編集してみましょう。
src/app.controller.ts
ファイルの編集お好きなエディタでプロジェクト配下の
src/app.controller.ts
を開きます。下記のように編集し、ルート(/
)アクセス時に"Hello ServBay!"という文字列を返すようにします。typescriptimport { Controller, Get } from '@nestjs/common'; import { AppService } from './app.service'; // AppServiceを維持している場合 @Controller() export class AppController { constructor(private readonly appService: AppService) {} // AppServiceを利用している場合 @Get() getHello(): string { // return this.appService.getHello(); // AppServiceを使う場合 return 'Hello ServBay!'; // 文字列を直接返却 } }
1
2
3
4
5
6
7
8
9
10
11
12
13上記コードは、HTTP GETリクエストでアプリのルート(
/
)にアクセスがあった場合、指定した文字列を返すシンプルなコントローラーを定義しています。
開発モードでNestJSを実行しServBay経由でアクセスする
NestJSプロジェクトは開発モードで内蔵サーバーを立ち上げ、特定のポートで待受けます。ServBayの「ウェブサイト」機能でリバースプロキシ設定を行うことで、独自ドメインからNestJSアプリへアクセス可能です。
開発サーバーの起動
プロジェクトルート
/Applications/ServBay/www/servbay-nest-app
で以下を実行し、開発サーバーを起動します。PORT
環境変数でリスンするポート番号(例:8585
)を指定できます。bashcd /Applications/ServBay/www/servbay-nest-app PORT=8585 npm run start:dev
1
2npm run start:dev
はNestJSプロジェクトで事前定義されているスクリプトで、ts-node
にTypeScriptコードを実行させ、ファイル変更時に自動リロードを有効にします。サーバーはlocalhost:8585
で待受け状態となります。ServBayウェブサイトのリバースプロキシ設定
ServBayコントロールパネルの「ウェブサイト」タブを開きます。追加ボタン(一般的に
+
)をクリックして新しいウェブサイト設定を作成してください。- 名前(Name):例
My first NestJS dev site
など、識別しやすい名称。 - ドメイン(Domains):例
servbay-nest-test.dev
など、ローカルで使いたい独自ドメインを入力。ServBayは.dev
など主要TLDを自動的にローカル解決しますのでhosts書き換え不要です。 - タイプ(Type):
リバースプロキシ(Reverse Proxy)
を選択。 - IPアドレス(IP Address):通常
127.0.0.1
(ローカルループバック)。 - ポート(Port):NestJSがリッスンするポート番号、ここでは
8585
。
保存すると、ServBayがCaddyやNginx等のWebサーバー設定を自動で更新します。ウェブサイト設定の詳細はServBayウェブサイト追加ガイドも参照ください。
- 名前(Name):例
開発サイトへのアクセス
お使いのブラウザで、設定したドメイン
https://servbay-nest-test.dev
へアクセスします。注意:
- ServBayはローカルで設定したウェブサイトごとに無料のSSL証明書(ServBay User CA発行済)を提供していますので、
https
アクセスが標準です。証明書警告が出る場合はServBay User CAを信頼する必要があります。SSLでウェブサイトを保護するガイドを参照してください。 - NestJSの開発サーバー(
PORT=8585 npm run start:dev
)が稼働していることを必ず確認してください。停止中の場合はドメインアクセスでエラーとなります。
- ServBayはローカルで設定したウェブサイトごとに無料のSSL証明書(ServBay User CA発行済)を提供していますので、
本番ビルド&ServBay経由でのアクセス
NestJSアプリを本番環境(ローカル擬似本番含む)にデプロイする場合、まずビルドを行います。
本番ビルドの作成
プロジェクトルート
/Applications/ServBay/www/servbay-nest-app
で以下コマンドを実行しビルドします。bashcd /Applications/ServBay/www/servbay-nest-app npm run build
1
2npm run build
はTypeScriptコンパイラでソースをdist
ディレクトリに出力します。本番サーバーの起動
ビルド完了後、下記で本番モードのNestJSサーバーを起動します。
node
コマンドでコンパイル済みJavaScriptを実行、ポート番号例として8586
を指定し、NODE_ENV=production
に設定してください。bashcd /Applications/ServBay/www/servbay-nest-app PORT=8586 NODE_ENV=production node dist/main.js
1
2本番モードではファイル監視や自動リロード等はありません。
ServBayウェブサイト リバースプロキシ設定(本番用)
ServBayコントロールパネルの「ウェブサイト」タブへ戻り、本番用として新規追加または編集します。
- 名前(Name):例
My first NestJS production site
- ドメイン(Domains):例
servbay-nest-test.prod
- タイプ(Type):
リバースプロキシ(Reverse Proxy)
- IPアドレス(IP Address):
127.0.0.1
- ポート(Port):
8586
(本番サーバーで指定したポート)
設定を保存してください。
- 名前(Name):例
本番サイトへのアクセス
ブラウザから
https://servbay-nest-test.prod
へアクセスし、本番モードのNestJSアプリを確認します。ServBayがSSL対応も提供しています。
ServBay内蔵データベースへの接続
ServBayは、MariaDB(MySQL互換)、PostgreSQL、MongoDB、Redisなど複数のDBシステムを内蔵・サポートしています。NestJSアプリ開発時にこれらデータベースを簡単に利用できます。
重要: データベースへ接続する前に、ServBayコントロールパネル「パッケージ」タブで該当データベースのパッケージが有効化されているか確認してください。各DBの標準ポート・ユーザー名・パスワードはServBayコントロールパネルや該当ドキュメントで確認できます。本番運用時はデフォルト認証情報の変更や最小権限の専用DBユーザー作成を強く推奨します。
以下に、NestJSで代表的なORM/ライブラリを使いServBay提供の各種DBへ接続するサンプルを記載します。これらはアプリのルートモジュール(AppModule
)や専用DBモジュール内などに設置します。
MongoDBへの接続
@nestjs/mongoose
で接続。まず依存パッケージをインストール。bashnpm install @nestjs/mongoose mongoose
1その後、NestJSモジュールで
MongooseModule
を設定。typescriptimport { Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; // ... その他インポート @Module({ imports: [ MongooseModule.forRoot('mongodb://localhost:27017/servbay-nest-app'), // デフォルトポート27017 // ... 他のモジュール ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13ServBay MongoDBのデフォルト接続先は
mongodb://localhost:27017/
が標準です。必要に応じMongoDB Compassやmongosh
でlocalhost:27017
へ接続しservbay-nest-app
DBを作成してください。Redisへの接続
@nestjs/redis
モジュールを用いて接続。まず必要なパッケージをインストール。bashnpm install @nestjs/redis redis @types/redis
1モジュールで
RedisModule
を設定します。typescriptimport { Module } from '@nestjs/common'; import { RedisModule } from '@nestjs/redis'; // ... その他インポート @Module({ imports: [ RedisModule.forRoot({ url: 'redis://localhost:6379', // デフォルトポート6379 }), // ... 他のモジュール ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15ServBayのRedisサーバーは通常
localhost:6379
です。MariaDB(MySQL互換)への接続
@nestjs/typeorm
でMariaDBを利用。ServBayはMariaDBもMySQLもサポートし、いずれもMySQLプロトコル互換です。mysql
あるいはmariadb
タイプ指定で接続可能。まず関連パッケージをインストール。bashnpm install @nestjs/typeorm mysql2 typeorm
1TypeOrmModuleの設定。
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // ... その他インポート @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mariadb', // もしくは 'mysql' host: 'localhost', port: 3306, // デフォルト3306 username: 'root', // ServBay MariaDB/MySQLデフォルトroot password: 'password', // デフォルトrootパスワード database: 'servbay_nest_app', // 事前作成必須 entities: [], // エンティティクラス配列 synchronize: true, // 開発時のみtrue、本番は注意 }), // ... 他のモジュール ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22注意: ServBay MariaDB/MySQLのrootパスワードはデフォルト
password
です。TablePlus、DBeaver、MySQL CLI等でlocalhost:3306
にroot
/password
で接続し、servbay_nest_app
DBを事前に作成してください。セキュリティ向上のため、本番運用ではrootパスワード変更および権限を限定した専用ユーザーの作成を推奨します。PostgreSQLへの接続
@nestjs/typeorm
でPostgreSQLを利用。依存パッケージをインストール。bashnpm install @nestjs/typeorm pg typeorm
1TypeOrmModuleの設定例。
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // ... その他インポート @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, // デフォルト5432 username: 'servbay', // ServBay PostgreSQLの例。実際のユーザー確認 password: 'password', // デフォルトパスワード例。実際の値は要確認 database: 'servbay_nest_app', // 事前に作成が必要 entities: [], // エンティティクラス配列 synchronize: true, // 開発時のみtrue。本番時は注意 }), // ... 他のモジュール ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22注意: ServBay PostgreSQLのデフォルトユーザー/パスワードはバージョン等によって異なる場合があります。
servbay
やpostgres
が多いですが実際の設定値はコントロールパネルやドキュメントでご確認ください。またDBクライアントツールでlocalhost:5432
に接続し、servbay_nest_app
DBや専用ユーザーを作成します。本番では認証情報変更は必須です。
まとめ
本ガイドを通じて、macOSローカル環境でServBayを活用しNestJSプロジェクトの新規作成・実行・アクセス方法をマスターできます。Node.jsのバージョン切り替えや柔軟なウェブサイト設定(とくにリバースプロキシ)、多彩な内蔵データベースへの接続など、ServBayの統合環境によりNestJSアプリのローカル開発とテストがより簡便かつ強力になります。開発・本番モードの切り替えやカスタムドメイン/HTTPSでの安全なローカルアクセス、大規模データベースとの連携も自在です。