ServBayでLoopBackプロジェクトを設定・実行する
LoopBackとは?
LoopBackは、IBMが開発した高い拡張性を持つオープンソースのNode.jsフレームワークで、APIやマイクロサービスの迅速な構築のために設計されています。モデル駆動型開発(MDD)手法を採用し、開発者が効率的にデータモデルを定義でき、強力なRESTful APIを自動生成します。データソースへの接続、ユーザー認証・認可、APIエクスプローラーなど、豊富な機能を標準搭載し、多様なデータベースやプロトコルに対応しています。
LoopBackの主な特徴とメリット
- モデル駆動開発(MDD):直感的な手順でデータモデルを定義し、フレームワークがAPIエンドポイントやデータバリデーションロジックを自動生成します。
- 多様なデータソース対応:MongoDB、MySQL、PostgreSQL、MariaDBなど主要なデータベースや、RESTfulサービス、SOAPサービスなどにも容易に接続可能です。
- 高機能なCLIツール:LoopBack CLI(コマンドラインインターフェース)は、プロジェクト初期化やモデル定義、データソース構築などの作業を大幅に簡素化します。
- モジュール化と拡張性:柔軟な設計で、コンポーネントや拡張機能を通じてサードパーティライブラリやサービスを連携でき、独自要件にも対応します。
- 充実したセキュリティ機能:認証および認可メカニズムを標準装備し、安全なAPI構築をサポートします。
LoopBackを活用することで、WebアプリのバックエンドやAPI構築の効率が大幅に向上し、高パフォーマンスかつ保守性に優れたアプリケーションを素早く実現できます。
ServBayでLoopBackプロジェクトをセットアップ&実行する
本ガイドでは、ServBayが提供するNode.js環境を利用し、LoopBackプロジェクトの作成・実行手順を詳しく解説します。ServBayの「サイト」機能を用い、ローカルWebサーバーの設定と、リバースプロキシによるLoopBackアプリへの外部アクセス・開発デバッグの流れを紹介します。
LoopBackプロジェクトの作成
LoopBack CLIのインストール
作業開始前に、ServBayでNode.jsパッケージをインストール・有効化済みであることをご確認ください。その後、ターミナルを開き、npm経由でLoopBack CLIツールをグローバルインストールします。
bashnpm install -g @loopback/cli
1プロジェクトの初期化
ServBayの推奨Webサイトルートディレクトリ
/Applications/ServBay/www
に移動し、LoopBack CLIで新たなアプリプロジェクトを作成します。プロジェクト名は小文字とハイフン利用がおすすめです(例:servbay-loopback-app
)。bashcd /Applications/ServBay/www lb4 app servbay-loopback-app
1
2CLIのガイドに従い、REST APIやシリアライザー、認証など必要な機能やプロジェクト構造を選択してください。
依存パッケージのインストール
新規プロジェクトディレクトリに入り、Node.js依存パッケージをインストールします。
bashcd servbay-loopback-app npm install
1
2
LoopBackプロジェクトの出力内容を変更する(任意)
ServBay経由のアプリ動作確認の例として、デフォルトの/ping
エンドポイントを編集し、カスタムレスポンスを返す方法を紹介します。
src/controllers/ping.controller.ts
ファイルの編集プロジェクト内の
src/controllers/ping.controller.ts
を開き、以下のように編集して「/ping」へのリクエスト時に"Hello ServBay!"が返るようにします。typescriptimport {get} from '@loopback/rest'; export class PingController { constructor() {} @get('/ping') ping(): string { // レスポンス内容を "Hello ServBay!" に変更 return 'Hello ServBay!'; } }
1
2
3
4
5
6
7
8
9
10
11
開発モードでアプリを起動する
開発フェーズでは、LoopBack標準の開発サーバーを用いて素早い検証・デバッグが可能です。ここではServBayのリバースプロキシ経由でアクセスします。
開発サーバーを起動
プロジェクトルートでターミナルからLoopBackアプリを起動します。アプリは指定ポートでリクエストをリッスンします。例えば環境変数
PORT
に8585
を指定:bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8585 npm start
1
2起動後、"Server is running at http://[::1]:8585" のような表示がターミナルに出力されます。
ServBayサイト(リバースプロキシ)を設定
ServBayコントロールパネルで「サイト」機能に進み、追加ボタンで新規リバースプロキシサイトを作成します。外部ドメイン/ポートからのリクエストをLoopBackアプリの内部アドレス・ポートへ転送します。
- 名前(Name):例
My first LoopBack dev site
(ServBay内表示用) - ドメイン(Domain):例
servbay-loopback-dev.servbay.demo
(ブラウザアクセス用) - サイトタイプ(Type):
リバースプロキシ(Reverse Proxy)
を選択 - IPアドレス(IP Address):
127.0.0.1
(ループバックローカル) - ポート(Port):
8585
(LoopBackが待ち受けるポート)
設定後、保存してServBayで変更を適用します。ServBayは自動でローカルDNS(
/etc/hosts
変更やServBay Helper Toolによる)やWebサーバー(CaddyまたはNginx)を構成するため、指定ドメインでのアクセスが可能です。ServBayでのリバースプロキシサイト追加方法はNode.js開発用サイトの追加をご覧ください。
- 名前(Name):例
開発アプリへアクセス
Webブラウザで、設定済みドメイン+LoopBackエンドポイント(例:
https://servbay-loopback-dev.servbay.demo/ping
)へアクセスします。ServBayはローカルサイトへ自動でSSL証明書(ServBay User CA または ServBay Public CA)を発行・設定するため、HTTPSで安全にローカル開発サイトを利用できます。これにより、本番環境に近い動作検証や、SSL関連の潜在的な問題を事前に発見することが可能です。ServBayのSSL機能詳細はSSLによるサイトの保護をご参照ください。
本番モードでのデプロイ(任意)
LoopBackアプリが本番環境向けに準備できたら、本番モードで起動できます。本番モードはパフォーマンス優先・デバッグ出力最小となります。
本番サーバーの起動
プロジェクトルートで本番モードでアプリを起動します。例えば
PORT
を8586
、NODE_ENV
をproduction
に指定:bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8586 NODE_ENV=production npm start
1
2ServBayサイト(リバースプロキシ)の本番用設定
ServBayの「サイト」機能で、運用環境用に新規または既存リバースプロキシサイトを編集し、本番モードのLoopBackアプリに向けて設定します。
- 名前(Name):例
My first LoopBack production site
- ドメイン(Domain):例
servbay-loopback-prod.servbay.demo
- サイトタイプ(Type):
リバースプロキシ(Reverse Proxy)
- IPアドレス(IP Address):
127.0.0.1
- ポート(Port):
8586
(本番アプリ用ポート)
設定を保存し、反映させます。
- 名前(Name):例
本番アプリへのアクセス
ブラウザで、本番サイトドメイン(例:
https://servbay-loopback-prod.servbay.demo/ping
)を開き、稼働状況を確認します。ServBayは引き続きHTTPSを自動でサポートします。
データベースとの接続
LoopBackフレームワークはデータソースコネクタを介して多様なデータベースに接続可能です。ServBayではMySQL、MariaDB、PostgreSQL、MongoDB、Redisなど主要DBパッケージを容易に起動でき、LoopBack側で設定できます。
以下に、ServBayが提供する代表的なデータベースへの接続例を示します。ご自身の要件・環境にあわせて設定をカスタマイズしてください。
重要: 以下サンプルのDBユーザー名・パスワードはダミーです。実際には、ServBayコントロールパネルで設定されたrootユーザーのパスワード、または作成済みユーザー情報を使用してください。ユーザー・パスワード管理はServBay管理画面で行えます。
MongoDBへの接続
まず、ServBayでMongoDBパッケージをインストール・起動してください。 LoopBack用MongoDBコネクタをインストール:
bashnpm install --save @loopback/connector-mongodb
1プロジェクトのデータソース設定(通常は
src/datasources/mongodb.datasource.ts
など)を編集します。typescript// src/datasources/mongodb.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mongodb', connector: 'mongodb', // ServBayのMongoDBはデフォルトでlocalhost:27017で稼働 url: 'mongodb://localhost:27017/servbay-loopback-app', // データベース名に合わせて変更 host: 'localhost', port: 27017, user: '', // ユーザー認証を設定した場合はユーザー名を記入 password: '', // ユーザー認証を設定した場合はパスワードを記入 database: 'servbay-loopback-app', // ご利用のDB名に変更 // その他オプション... }; export class MongodbDataSource extends juggler.DataSource { static dataSourceName = 'mongodb'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Redisへの接続
まず、ServBayでRedisパッケージをインストール・起動してください。 LoopBack用のRedisコネクタをインストール(公式に
@loopback/connector-redis
はなく、多くはコミュニティ提供loopback-connector-redis
やNode.jsのredis
ライブラリ+サービス構成で使われます)。bashnpm install --save loopback-connector-redis # または他の適合Redisライブラリ
1プロジェクトでデータソース設定例(
loopback-connector-redis
利用):typescript// src/datasources/redis.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'redis', connector: 'redis', // ServBayのRedisはデフォルトでlocalhost:6379で稼働 url: 'redis://localhost:6379', // その他オプション... }; export class RedisDataSource extends juggler.DataSource { static dataSourceName = 'redis'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17注意:LoopBack 4ではデータソースの扱いがLoopBack 3から異なります。上記はLoopBack 3のコネクタ用設定例のシンプル版ですが、LoopBack 4では
@loopback/repository
の@datasource
デコレーター等を推奨します(公式ドキュメント参照)。なお、host
、port
、user
、password
、database
等の接続パラメータは共通です。MariaDB(またはMySQL)への接続
まず、ServBayでMariaDBまたはMySQLパッケージをインストール・起動してください。ServBayは両方対応。LoopBack用MySQLコネクタはMariaDBにも概ね互換です。 コネクタをインストール:
bashnpm install --save @loopback/connector-mysql
1データソース設定例:
typescript// src/datasources/mariadb.datasource.ts または mysql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mariadb', // または 'mysql' connector: 'mysql', // mysqlコネクタを利用 // url: '', // url形式でも可、または個別にhost, port, database指定も可 host: 'localhost', // ServBayデータベースはデフォルトlocalhost port: 3306, // MariaDB/MySQLの標準ポート user: 'root', // ServBayのMariaDB/MySQL標準ユーザーはroot password: 'password', // << ServBayで設定した実際のDBパスワードを記入 >> database: 'servbay_loopback_app', // ご自分のデータベース名 // その他オプション... }; export class MariaDbDataSource extends juggler.DataSource { static dataSourceName = 'mariadb'; // または 'mysql' constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21注:例の
password: 'password'
はダミーです。実際には、ServBayコントロールパネルのDB管理画面でrootユーザーのパスワードを確認・設定し、その値に書き換えてください。PostgreSQLへの接続
まず、ServBayでPostgreSQLパッケージをインストール・起動してください。 コネクタを追加:
bashnpm install --save @loopback/connector-postgresql
1データソース設定例:
typescript// src/datasources/postgresql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'postgresql', connector: 'postgresql', // url: '', // url形式でも、host/port/databaseの個別指定も可能 host: 'localhost', // ServBayのPostgreSQLはデフォルトlocalhost port: 5432, // PostgreSQL標準ポート user: 'user', // << ServBayで設定したユーザー名に変更 >> password: 'password', // << ServBayで設定した実際のパスワードに変更 >> database: 'servbay_loopback_app', // ご自分のデータベース名に変更 // その他オプション... }; export class PostgresqlDataSource extends juggler.DataSource { static dataSourceName = 'postgresql'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21注:
user: 'user'
とpassword: 'password'
はそれぞれダミーです。実際にはServBayコントロールパネルでPostgreSQL用に作成・設定したユーザー名とパスワードを入力してください。
まとめ
これまでの手順で、ServBayローカル開発環境上でLoopBack Node.jsプロジェクトを新規作成し、各種設定の上、動作させることができました。また、ServBayの「サイト」機能によるリバースプロキシ経由の開発アプリアクセス、さらにはLoopBackからServBayが提供する様々なデータベースに接続する方法も習得できました。
ServBayはLoopBack等のNode.jsフレームワーク向けに、Webサーバー、データベース、各言語実行環境を統合した、安定かつ便利なローカル開発環境を提供します。サイト管理機能、SSL対応、DB統合など、ServBayの豊富な機能を活用することで、ローカル開発・検証・テストの効率と安全性を飛躍的に高めることができます。