ServBayでKoa.jsプロジェクトを作成・実行する方法
ServBayは、macOS向けに設計されたローカルWeb開発環境です。Node.jsランタイムや各種データベースといった開発者に必要なソフトウェアパッケージが統合されており、この記事ではServBayを活用してKoa.jsプロジェクトを迅速に作成・運用・管理する方法を解説します。
Koa.jsとは?
Koa.jsは、Express.jsチームが開発したNode.jsベースの次世代Webフレームワークです。シンプルかつ表現力豊かで強力な機能に定評があり、WebアプリケーションやAPI構築に最適です。Koa.jsは現代的なJavaScript機能、特にasync/await
構文を最大限に活用し、非同期処理やミドルウェアの記述を非常にシンプルにします。これにより、コードが明瞭かつメンテナンスしやすくなります。
Koa.jsの主な特徴
- async/awaitベース: コア設計が
async/await
を中心に据えており、非同期フロー制御が直感的になります。 - 軽量なコア: コアライブラリは極めてコンパクトで基本機能のみを提供し、拡張はモジュール式のミドルウェアで行えます。
- 強力なミドルウェア: カスケード(層状)ミドルウェア方式で、リクエスト処理フローが明確かつ柔軟です。
- Web特化: WebアプリやAPI開発にフォーカスし、不要な機能を一切提供しません。
Koa.jsを活用することで、高パフォーマンスかつ保守性に優れたWebサービスを効率よく開発できます。
ServBayでKoa.js開発環境を構築する
ServBayはNode.js開発者向けに、Node.jsランタイムや主要データベースサービスが統合されたすぐに使える環境を提供します。さらに**ウェブサイト(Website)**機能を利用すれば、カスタムドメインやSSL証明書でローカルKoa.jsプロジェクトへ簡単にアクセスできます。
前提条件
作業を始める前に、以下を準備してください。
- ServBayのインストール: ServBay公式サイトから最新版をダウンロードしてインストールします。
- Node.jsパッケージのインストール: ServBayアプリを起動し、**パッケージ(Packages)**管理画面で必要なNode.jsバージョンをインストールします(未インストールの場合は選択後「インストール」ボタンをクリック)。
- ServBayの基本操作を理解: ServBayでのサービス起動/停止やウェブサイト(Website)の管理方法を把握します。
Koa.jsプロジェクトの作成
ここではServBay推奨のウェブサイトルートディレクトリ /Applications/ServBay/www
にプロジェクトファイルを配置します。
プロジェクトディレクトリの初期化
ターミナル(Terminal)アプリを開き、ServBayのウェブルートへ移動後、新しいプロジェクトフォルダ(例:
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
で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アプリの基本形です。2つのミドルウェア(リクエストログ出力、ルートパスへのレスポンス)を持ち、
PORT
環境変数またはデフォルト3000番ポートで待機します。
開発モードでの起動
開発中は、ローカルのNode.jsプロセスでKoa.jsアプリを実行し、ServBayの**ウェブサイト(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ウェブサイト(Website)リバースプロキシ設定
localhost:8585
上で稼働するKoa.jsアプリへカスタムドメインでアクセスできるよう、ServBayで**ウェブサイト(Website)**にリバースプロキシ設定を行います。- ServBayアプリを開く
- **ウェブサイト(Website)**画面に進む
- 左下の「+」ボタンで新しいサイトを追加
- サイト設定を入力
- 名前(Name):
ServBay Koa.js Dev Site
- ドメイン(Domain):
servbay-koa-dev.servbay.demo
(.servbay.demo
で終わるドメインを推奨・SSL証明書自動発行あり) - 種類(Type):
リバースプロキシ(Reverse Proxy)
- IPアドレス(IP Address):
127.0.0.1
(ローカルのNode.jsプロセス) - ポート(Port):
8585
(Koa.jsアプリの待受ポート) - ドキュメントルート(Document Root): リバースプロキシの場合は空欄可、またはプロジェクトパス
/Applications/ServBay/www/servbay-koa-app
- 名前(Name):
- 保存をクリック
- 変更適用の案内が表示されたら「適用」をクリック
この設定により、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開発サイト追加(※英語版を選択)をご参照ください。
Koa.js開発サイトへのアクセス
ブラウザで
https://servbay-koa-dev.servbay.demo
へアクセスします。正常に設定できていれば、「Hello from ServBay Koa.js App!」という表示が見えるはずです。
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ウェブサイト(Website)リバースプロキシ設定(本番シミュレーション)
本番環境用に新規サイトをServBayで追加・設定します。
- ServBayアプリを開き、**ウェブサイト(Website)**画面へ
- 左下「+」ボタンで新しいウェブサイトを追加
- サイト設定を入力
- 名前(Name):
ServBay Koa.js Prod Site
- ドメイン(Domain):
servbay-koa-prod.servbay.demo
(独自ドメインをお持ちの場合はそちらも利用可・Let's Encrypt経由でSSL証明書取得可能) - 種類(Type):
リバースプロキシ(Reverse Proxy)
- IPアドレス(IP Address):
127.0.0.1
- ポート(Port):
8586
(本番シミュレートKoa.jsの待受ポート) - ドキュメントルート(Document Root): 空欄またはプロジェクトパス
- 名前(Name):
- 保存・変更適用
.servbay.demo
ドメインを使った場合は引き続きUser CA証明書でSSL対応。もしパブリックな独自ドメインを使う場合でも、ServBayはACME(Let's Encrypt等)経由で無料SSL/TLS証明書を自動取得・管理できます。詳しくはSSLでウェブサイト保護をご参照ください。Koa.js本番サイト(シミュレーション)へのアクセス
ブラウザで
https://servbay-koa-prod.servbay.demo
にアクセスします。開発環境と同じ内容が表示されれば、今度は
8586
ポートで実行中のNode.jsプロセスをServBayがリバースプロキシしていることを意味します。
データベース接続
ServBayはMongoDB、Redis、MariaDB(MySQL互換)、PostgreSQLなど多くの主要データベースをサポートしています。これらはローカルで稼働しており、デフォルト構成の場合はlocalhost
から簡単にアクセスできます。
以下はNode.jsドライバでServBay提供の各種データベースに接続するサンプルです。事前に、ServBayの**パッケージ(Packages)**で必要なデータベースをインストールし起動しておいてください。
MongoDBへの接続
まずKoa.jsプロジェクトディレクトリでMongoDBのNode.jsドライバ(たとえば
mongoose
やmongodb
)をインストールします。bashcd /Applications/ServBay/www/servbay-koa-app npm install mongoose # または npm install mongodb
1
2次に、
app.js
や他のモジュールに接続コードを追加します。javascript// MongooseでMongoDBへ接続 const mongoose = require('mongoose'); // ServBayデフォルトのMongoDBは認証不要。DB名は任意 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
12ServBayインストール直後のMongoDBは
27017
ポートで認証不要・DB名は都度指定可(初回接続時自動作成されます)。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(); // 備考:運用時はconnect完了まで待機して操作することを推奨します(async/awaitなど活用)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20ServBayでのRedisはパスワード不要・6379ポートで稼働しています。
MariaDB(MySQL)への接続
MariaDBはMySQL互換DBです。ServBayからはMariaDBとして提供されているため、MySQL互換のドライバも利用可能です。
MariaDBドライバのインストール:
bashcd /Applications/ServBay/www/servbay-koa-app npm install mariadb # もしくはより互換性の高いnpm install 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
22mysql2
ドライバ(推奨)での接続例: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', // 事前にDB作成要 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パスワードはGUIから確認可能。DB
servbay_koa_app
は事前に作成しておきましょう。PostgreSQLへの接続
PostgreSQLドライバのインストール:
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', // 事前にDB作成要 password: 'password', // ServBayのデフォルトパスワード port: 5432, // PostgreSQL標準ポート }); pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL connection error:', err); return; } console.log('Connected to PostgreSQL'); client.release(); // コネクションをプールへ戻す }); // 備考:ServBayの'user'パスワードは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ポート・ユーザー&パスワードはGUIで確認・設定できます。DB
servbay_koa_app
も事前に作成要。
ServBay上のデータベース管理
コードからの接続以外にも、図形的インターフェースの各種クライアントツールを使ってServBayのDBを管理できます。ServBayのDBは127.0.0.1
またはlocalhost
待機のため、GUIに表示されるポート・ユーザー名・パスワードを使えば接続できます。
- デフォルトパスワード確認・変更: ServBayアプリで該当DBパッケージの設定アイコンから確認・編集できます。
- データベース・ユーザーの作成: TablePlus、DBeaver、pgAdmin、MongoDB Compassなど多様なクライアントツール経由で、データベース・ユーザー・テーブルなどをSQLまたはGUI操作で作成・管理できます。
注意点
- ポート競合: Koa.jsアプリで利用するポート(例 8585、8586)が他アプリと競合していないことを確認してください。
- ServBayの稼働: ServBayおよび対象のNode.jsパッケージ、データベースが起動中か確認してください。
- hostsファイル: ServBayが自動で
hosts
を管理しますが、もしドメイン解決できない場合は/etc/hosts
に必要な記述があるか確認してください。 - ファイアウォール: macOSのファイアウォールや他社製ファイアウォールがServBayやNode.jsの通信を阻害していないかご注意ください。
- ログ確認: 問題発生時はServBayアプリのログタブや、Node.jsプロセスのターミナル出力を確認するとトラブルシューティングに役立ちます。
よくある質問 (FAQ)
Q: なぜServBayのリバースプロキシ経由でKoa.jsアプリにアクセスする必要があるのですか?
A: リバースプロキシ(ServBayのウェブサイト機能)を使うメリットは以下の通りです。
- 本番環境の再現:
localhost:PORT
でなく独自ドメイン(.servbay.demo
や独自ドメイン)で開発でき、本番環境の挙動に近づきます。 - SSLサポート: ServBayがローカルサイトに自動でSSL証明書を発行するため、開発段階からHTTPSの動作検証が可能です。
- 一元管理: ServBay内で複数サイトを統合管理でき、効率的です。
- ポート番号非公開: ブラウザや外部からは標準80/443ポートに見せつつ、内部のみNode.jsの高番ポートへ転送します。
- 本番環境の再現:
Q: リバースプロキシを使わずに
localhost:PORT
から直接アクセスできますか?A: はい、Koa.jsが直接ポート待機していれば
http://localhost:PORT
で直接ブラウザからアクセス可能です。ただしその場合、カスタムドメインや自動SSL、ログ管理などServBayのウェブ機能の恩恵は受けられません。本番環境に近い検証にはリバースプロキシ利用を強く推奨します。Q: ServBayのデータベースデフォルトパスワードは?変更は?
A: デフォルトパスワードはServBayアプリのデータベース画面から確認できます。各DBの設定アイコン(MariaDBやPostgreSQLなど)からパスワード情報を参照・編集可能です。セキュリティ上、デフォルトパスワードの変更を強くおすすめします。
まとめ
この記事では、ServBayを使ってmacOS上でKoa.js開発環境を構築する方法を解説しました。サンプルKoa.jsアプリの作成から、ServBayのウェブサイト機能によるリバースプロキシ設定、カスタムドメイン・HTTPS化、本番環境のシミュレーションまで手順を追って紹介しました。また、ServBayが統合する各種データベースへのNode.jsからの接続例と管理方法も解説しました。
ServBayはNode.js開発者にとって、統合的で管理しやすいローカル開発環境を実現します。これにより煩雑な環境設定に追われず、コーディングに集中することができ、開発効率が大幅に向上します。