ServBayでKoa.jsプロジェクトを作成・運用する方法
ServBayはmacOSおよびWindowsで利用可能なローカルWeb開発環境です。Node.jsランタイムや各種データベースなど、開発者が頻繁に利用するパッケージが統合されています。本記事では、ServBayの便利な開発環境を活用して、Koa.jsプロジェクトを迅速に作成・管理・運用する手順をご紹介します。
Koa.jsとは?
Koa.jsはExpress.jsチームによって開発された、Node.jsベースの次世代Webフレームワークです。そのシンプルさ、表現力、強力な機能が特徴で、WebアプリケーションやAPI構築に最適な選択肢です。Koa.jsは特にasync/await
構文など最新のJavaScript機能を活用しており、非同期処理やミドルウェアの記述が大幅に簡潔になり、より見通しの良い保守性の高いコードが実現できます。
Koa.jsの主な特徴
- async/awaitに最適化: コア設計が
async/await
ベースで、非同期フローが直感的に記述可能。 - 軽量なコア: コアライブラリは非常に小さく、基本機能のみを搭載。機能追加はミドルウェアの組み合わせで行えます。
- 強力なミドルウェア: カスケード式ミドルウェアの仕組みにより、リクエスト処理が柔軟かつ明瞭。
- Webに特化: WebアプリやAPI開発にフォーカスし、不要な追加機能は提供しません。
Koa.jsによって、開発者は高性能かつ保守性に優れたWebサービスを効率的に構築できます。
ServBayでKoa.js開発環境を構築する
ServBayはNode.js開発者向けに必要な環境をワンパッケージで提供し、Node.jsランタイムや各種データベースサービスが統合されています。さらにServBayの**Webサイト(Website)**機能を組み合わせることで、独自ドメインやSSL証明書を使ってローカルKoa.jsプロジェクトへ安全にアクセスできます。
必要な準備
始める前に、以下の準備を済ませてください:
- ServBayのインストール: ServBay公式サイトで最新バージョンをダウンロードしインストール。
- Node.jsパッケージのインストール: ServBayアプリを開き、**パッケージ(Packages)**管理画面で必要なNode.jsバージョンをインストール済みか確認。未導入の場合はチェックしてインストール。
- ServBayの基本操作: サービスの開始/停止、Webサイト(Website)の管理方法を把握。
Koa.jsプロジェクトの作成
ServBay推奨のWebサイトルートディレクトリ(/Applications/ServBay/www
)にプロジェクトファイルを配置します。
プロジェクトディレクトリの初期化
ターミナル(Terminal)を開き、ServBayのWebサイトルートディレクトリに移動、新しいプロジェクトフォルダ(例:
servbay-koa-app
)を作成して移動します。その後、Node.jsプロジェクトを初期化:bashcd /Applications/ServBay/www mkdir servbay-koa-app cd servbay-koa-app npm init -y
1
2
3
4npm init -y
はデフォルトのpackage.json
ファイルを自動生成します。Koa.jsのインストール
プロジェクトルート
servbay-koa-app
でnpmを使ってKoa.jsと型定義(TypeScript利用時)をインストール:bashnpm install koa # TypeScriptを使う場合はこちらも # npm install @types/koa --save-dev
1
2
3アプリのエントリーファイル作成
プロジェクトルート
servbay-koa-app
にapp.js
ファイルを作成し、以下のようなKoa.jsアプリコードを追加します:javascriptconst Koa = require('koa'); const app = new Koa(); // ミドルウェア:リクエスト情報のログ app.use(async (ctx, next) => { const start = Date.now(); await next(); const ms = Date.now() - start; console.log(`${ctx.method} ${ctx.url} - ${ms}ms`); }); // ミドルウェア:ルートパスのリクエスト対応 app.use(async ctx => { ctx.body = 'Hello from ServBay Koa.js App!'; }); // ポート番号:環境変数PORTを優先 const port = process.env.PORT || 3000; // HTTPサーバ起動 app.listen(port, () => { console.log(`Koa.js server running on http://localhost:${port}`); console.log(`Project path: ${__dirname}`); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24このコードは、シンプルなKoaアプリを作成しています。リクエスト時間・パスのログ用と、
/
へのアクセスに"Hello from ServBay Koa.js App!"を返す二つのミドルウェアを設定。PORT
環境変数で指定されたポートか、デフォルト3000
でリクエストを受け付けます。
開発モードに入る
開発時は通常、ローカルのNode.jsプロセスでKoa.jsアプリを起動し、ServBayの**Webサイト(Website)**機能を通じてアクセスします。
Koa.js開発サーバの起動
ターミナルでプロジェクトディレクトリ
servbay-koa-app
に移動、node
コマンドでapp.js
を実行します。ポート競合回避やServBay設定に便利な特定ポート(例:8585
)を指定するのがおすすめ:bashcd /Applications/ServBay/www/servbay-koa-app PORT=8585 node app.js
1
2ターミナルに
Koa.js server running on http://localhost:8585
等と表示されれば、サーバは8585
ポートで正常に起動しています。開発中はこのターミナルウィンドウは開いたままにしてください。ServBayでWebサイト(Website)リバースプロキシを設定
localhost:8585
で稼働しているKoa.jsアプリに独自ドメインでアクセスするため、ServBayで**Webサイト(Website)**のリバースプロキシを設定します。- ServBayアプリを開く
- **Webサイト(Website)**画面へ
- 左下の
+
ボタンで新規Webサイトを追加 - サイト設定入力:
- 名称 (Name):
ServBay Koa.js Dev Site
- ドメイン (Domain):
servbay-koa-dev.servbay.demo
(.servbay.demo
で終わるドメインは推奨。ServBayが自動でSSL証明書を生成します) - タイプ (Type):
リバースプロキシ (Reverse Proxy)
を選択 - IPアドレス (IP Address):
127.0.0.1
(ローカルのNode.jsプロセスを指します) - ポート (Port):
8585
(Koa.jsアプリのリッスンポート) - ドキュメントルート (Document Root): リバースプロキシ型では重要ではありません。空欄orプロジェクトパス
/Applications/ServBay/www/servbay-koa-app
でOK。
- 名称 (Name):
- 保存をクリック
- ServBayが変更適用を促されたら「適用」ボタンをクリック
設定するとServBayがローカルのhostsファイルを自動更新し、
servbay-koa-dev.servbay.demo
を127.0.0.1
に割り当てます。その後、組み込みのCaddyやNginxサーバで当該ドメイン宛のリクエストはlocalhost:8585
へリバースプロキシされます。また.servbay.demo
ドメインならServBay User CAがSSL証明書を自動発行・信頼します。つまりHTTPSでも安全にアクセス可能です。詳細な手順はServBayドキュメントのNode.js開発Webサイト追加の章もご参照ください(英語推奨)。
Koa.js開発サイトへのアクセス
ブラウザで
https://servbay-koa-dev.servbay.demo
にアクセスしてください。正しく設定できていれば、ページには"Hello from ServBay Koa.js App!"と表示されます。つまり、ServBayのWebサイト機能を通じてローカルのKoa.js開発サーバへアクセスできています。
app.js
を編集しNode.jsプロセスを再起動すれば、ブラウザをリロードして変更内容が反映されます。
本番環境のシミュレーション
本番環境を模倣する場合は違うポート/環境変数/起動方法で運用します。ServBayのリバースプロキシ設定も同様に活用可能です。
Koa.js本番サーバ(シミュレーション)の起動
別のターミナルで開発サーバを停止(まだ稼働中なら)、本番運用を模した環境変数とポートで起動します。例:
8586
ポートとNODE_ENV
をproduction
設定:bashcd /Applications/ServBay/www/servbay-koa-app PORT=8586 NODE_ENV=production node app.js
1
2これで
8586
を利用したKoa.jsの本番環境がシミュレーションできます。ServBayでWebサイト(Website)リバースプロキシ(本番環境シミュレーション)
本番環境用新サイトの追加も手順は同様です:
- ServBayアプリを開き、**Webサイト(Website)**画面へ
- 左下の
+
で新規サイト追加 - サイト設定:
- 名称 (Name):
ServBay Koa.js Prod Site
- ドメイン (Domain):
servbay-koa-prod.servbay.demo
(独自ドメインの場合はServBayのACME/Let's Encrypt機能でSSL証明書を取得可能) - タイプ (Type):
リバースプロキシ (Reverse Proxy)
- IPアドレス (IP Address):
127.0.0.1
- ポート (Port):
8586
(本番Koa.jsプロセスのポート) - ドキュメントルート (Document Root): 空欄orパス指定
- 名称 (Name):
- 保存・変更適用
.servbay.demo
ドメインの場合はServBay User CA証明書になります。独自ドメイン利用時はACMEプロトコル(Let's Encrypt等)で無料SSL/TLS証明書を取得・管理し、よりリアルな本番環境に近づきます。詳しくはServBayドキュメントのSSLでサイト保護をご参照ください。Koa.js本番サイト(シミュレーション)へのアクセス
ブラウザで
https://servbay-koa-prod.servbay.demo
にアクセスしてください。開発環境同様のページが表示されますが、今回はリバースプロキシを通じて
8586
ポート上のNode.jsプロセスにリクエストが転送されています。
データベース接続
ServBayはMongoDB・Redis・MariaDB(MySQL互換)・PostgreSQLなど主流データベースを統合。Koa.jsプロジェクトでの接続は非常に容易で、すべてローカル稼働&デフォルト設定ならlocalhost
で利用可能です。
以下、ServBayで稼働する各種データベースへのNode.js(ドライバ使用)接続コード例です。**パッケージ(Packages)**で必要なデータベースがインストールされ、稼働中であることを確認してください。
MongoDB接続
まずKoa.jsプロジェクトディレクトリでMongoDB用Node.jsドライバ(例:
mongoose
やmongodb
)をインストール:bashcd /Applications/ServBay/www/servbay-koa-app npm install mongoose # もしくは npm install mongodb
1
2app.js
または他モジュールに接続コードを追加:javascript// MongooseでMongoDBに接続 const mongoose = require('mongoose'); // ServBayのMongoDBはデフォルトで認証不要、データベース名は任意 mongoose.connect('mongodb://localhost:27017/servbay-koa-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('Connected to MongoDB')) .catch(err => console.error('MongoDB connection error:', err)); // ※実環境では接続処理はアプリ起動ロジック内で実行し // 接続成功後にポートリッスン開始するのが一般的です。
1
2
3
4
5
6
7
8
9
10
11
12
13ServBayのMongoDBは通常
27017
でリッスン、認証不要で直接データベース名指定OK(存在しなければ自動作成されます)。Redis接続
Node.js用Redisクライアントライブラリをインストール:
bashcd /Applications/ServBay/www/servbay-koa-app npm install redis
1
2Redisサーバ接続:
javascript// redisクライアントでRedis接続 const redis = require('redis'); // デフォルトでlocalhost:6379に接続 const client = redis.createClient({ url: 'redis://localhost:6379' // ServBayのRedisポートは6379 }); client.on('connect', () => { console.log('Connected to Redis'); }); client.on('error', (err) => { console.error('Redis connection error:', err); }); // Redisサーバへ接続 client.connect(); // ※本番利用時は、接続成功後にRedis操作を行う必要があります。 // async/await+client.connect()の例も参照。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21ServBayのRedisはデフォルトで
6379
、認証不要です。MariaDB(MySQL)接続
MariaDBはMySQL派生でAPI互換性あり。ServBayにはMariaDBパッケージが同梱、MySQL互換で利用できます。
MariaDB用Node.jsドライバインストール:
bashcd /Applications/ServBay/www/servbay-koa-app npm install mariadb # または推奨 mysql2
1
2mariadb
ドライバで接続:javascript// mariadbクライアントでMariaDB接続 const mariadb = require('mariadb'); // ServBayのMariaDB rootパスワードは 'password' const pool = mariadb.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_koa_app', // 事前に作成済みが理想、必要に応じて適宜変更 connectionLimit: 5 }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB"); conn.release(); // 接続をコネクションプールへ戻す }) .catch(err => { console.error("MariaDB connection error:", err); }); // ※接続プール取得は非同期処理です
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22推奨
mysql2
ドライバで接続:javascript// mysql2クライアントでMariaDB/MySQL接続 const mysql = require('mysql2/promise'); // promise型利用 // ServBayのMariaDB rootパスワードは 'password' const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_koa_app', // 事前作成推奨 waitForConnections: true, connectionLimit: 10, queueLimit: 0 }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB/MySQL using mysql2"); conn.release(); // 接続をプールへ戻す }) .catch(err => { console.error("MariaDB/MySQL connection error:", err); }); // ※ServBayのrootパスワードはGUIのDB設定画面で参照・変更可能。 // 本番運用時はハードコーディングせず環境変数等利用がおすすめです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25ServBayのMariaDBは
3306
でリッスン。デフォルトrootパスワードはServBayのDB管理画面で確認可能。プロジェクト用DBservbay_koa_app
はServBayまたはDBクライアント(TablePlus, DBeaver等)で手動作成してください。PostgreSQL接続
PostgreSQL用Node.jsドライバインストール:
bashcd /Applications/ServBay/www/servbay-koa-app npm install pg
1
2PostgreSQLサーバ接続:
javascript// pgクライアントでPostgreSQL接続 const { Pool } = require('pg'); // ServBayのPostgreSQLデフォルトユーザー 'user'、パスワード 'password' const pool = new Pool({ user: 'user', // ServBay標準ユーザー host: 'localhost', database: 'servbay_koa_app', // 事前作成推奨 password: 'password', // ServBay標準パスワード port: 5432, // ServBayのPostgreSQLポート }); pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL connection error:', err); return; } console.log('Connected to PostgreSQL'); client.release(); // 接続をプールへ戻す }); // ※パスワードはServBay GUIのDB設定画面で参照・変更可能。 // 本番環境ではハードコーディングせず管理することを推奨。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23ServBayのPostgreSQLは
5432
でリッスン。ユーザー名・パスワードはDB管理画面で確認できます。DBservbay_koa_app
は手動で作成が必要です。
ServBay内のデータベース管理
コード接続だけでなく、ServBayの統合GUIや他のDBクライアントツールでデータベース管理も可能。ServBayのDBは127.0.0.1
もしくはlocalhost
でアクセス。GUI表示のポート・ユーザー名・パスワードを使用します。
- デフォルトパスワードの確認・変更: ServBayアプリ内の該当DBパッケージ設定アイコンでroot(MariaDB)やuser(PostgreSQL)のパスワード確認・変更可能。
- データベース/ユーザー作成: TablePlus, DBeaver, pgAdmin, MongoDB Compassなどを使ってServBayのDBへ接続し、SQL命令やGUIで新規DBやユーザー・テーブル等を作成できます。
注意点
- ポート競合: Koa.jsで利用するポート(例:8585, 8586)が他アプリで使用されていないことを確認してください。
- ServBay状態: ServBayアプリ本体・必要なNode.jsパッケージやDBサービスが稼働中であること。
- hostsファイル: ServBayが自動管理しますが、ドメイン解決に問題があれば
/etc/hosts
の該当レコードを確認してください。 - ファイアウォール: macOSの標準・サードパーティ製ファイアウォールがServBayやNode.jsの接続を妨げていないか注意。
- ログ確認: 問題発生時はServBayのログ(アプリのログタブ)と、Node.jsプロセスのターミナル出力を確認してください。
よくある質問(FAQ)
Q:Koa.jsプロジェクトへのアクセスになぜServBayのリバースプロキシを使うの?
A:
- 本番環境の再現: 独自ドメイン(
.servbay.demo
や各自ドメイン)でアクセスすることで、実際の本番運用に近い形式でテスト可能。 - SSLサポート: ServBayはローカルサイトへSSL証明書(ServBay User CAまたはLet's Encrypt)を自動発行してHTTPSテストが可能。
- 一元管理: ServBay内で複数のローカル開発サイトを集中管理できて便利。
- ポート隠蔽: 外部・ブラウザアクセスは通常の80/443ポートに、内部はNode.jsに高番号ポートでリバースプロキシ転送。
- 本番環境の再現: 独自ドメイン(
Q:リバースプロキシを使わず
localhost:PORT
だけでアクセスできる?A: 可能です。Koa.jsが指定ポートでリッスンしていれば、
http://localhost:PORT
で直接アクセス/テストも可能。ただし独自ドメインでのアクセス、SSL自動発行、ログ管理などServBayの各種サイト機能は非活用になります。本番運用に近いデバッグのため、リバースプロキシ利用を推奨します。Q:ServBayのデフォルトDBパスワードは?変更方法は?
A: データベースのデフォルトパスワードは、ServBayアプリのデータベース画面で該当DB(MariaDBやPostgreSQL)横の設定アイコンから確認できます。情報ウィンドウからユーザー・パスワードの参照・変更が可能です。セキュリティのため、なるべくデフォルトパスワードの変更を推奨します。
まとめ
この記事では、macOS上でServBayを活用したKoa.jsの開発環境構築手順をご紹介しました。基本的なKoa.jsアプリを作成し、ServBayのWebサイト機能でリバースプロキシを設定、独自ドメイン・HTTPSでローカルKoa.js開発/本番環境を再現。また、ServBayが統合する主要データベースへの接続方法についても解説しました。
ServBayはNode.js開発者にとって、煩雑な環境構築不要でコード作成に集中できる統合型ローカル開発環境です。ServBayの高機能を最大限活用することで、開発効率が大幅に向上します。