設定
アプリケーションの基本設定
Netuno で作成されたすべてのアプリケーションには、データベースへの接続方法、アクセスキー、その他の基本パラメータを定義する固有の設定があります。
Netuno は、アプリケーションが実行されている環境(ローカル、公式サーバー、その他任意の環境)に応じてこれらの設定を整理する、インテリジェントなシステムを採用しています。
アプリケーションの設定は、プロジェクトのルートにある config フォルダに一元化されます。
デフォルトパス: my-app/config
実行環境
config フォルダ内では、ファイルは作成対象の環境に応じて命名されます。Netuno は、その時点で実行されている環境に対応するファイルのみを自動的に読み込みます:
-
開発:
_developmentという名前のファイルは、Netuno の環境が開発に設定されている場合にのみ読み込まれます。 -
本番:
_productionという名前のファイルは、Netuno の環境が本番に設定されている場合にのみ読み込まれます。
設定ファイルの種類
各環境では、連携して動作する 2 種類のファイルを使用できます:
JSON
_development.json_production.json
役割: 静的な定義とパラメータ設定を保存します。
例: データベースの認証情報、外部 API の URL、固定設定を記述します。
JS
_development.js_production.js
役割: 設定が読み込まれる時点でロジックを実行します。
例: 設定を動的に変更したり、アプリケーションが完全に起動する前に必要な初期タスクや処理を実行したりします。
全体環境の定義
アプリケーションが使用すべき設定を認識できるように、Netuno サーバーがどの「モード」で動作しているかを指定する必要があります。このグローバル設定は、Netuno のルートにある単一のファイルで定義されます。
- グローバル設定ファイルを特定します: Netuno がインストールされたルートフォルダに移動します。
config.jsという名前のファイルを見つけて開きます。 - 環境変数を見つけます: ファイル内で
config.envプロパティを探します。 - 目的の環境を設定します: 有効化したい環境に合わせて変数の値を変更します。
開発環境
自身のマシンでプログラミングやテストを行っている間に使用します。
// Netuno のルートにある ./config.js ファイル内
config.env = 'development'
本番環境
プロジェクトが完成し、ユーザー向けの公式サーバーで実行されているときに使用します。
// Netuno のルートにある ./config.js ファイル内
config.env = 'production'
その他の環境(カスタム)
Netuno は柔軟で、カスタム環境名を作成できます。例: test、homologation、staging。
// Netuno のルートにある ./config.js ファイル内
config.env = 'test'
アプリケーションの設定ファイルは
_で始まり、拡張子が.jsonである必要があります。また、同じ環境に対応する拡張子.jsのファイルも必要です。
Git リポジトリ
Git を使用してアプリケーションのコードをバージョン管理する場合、データの安全性を確保することが重要です。
設定ファイルには通常、データベースのパスワード、プライベート API のキーなど、機密情報が含まれます。そのため、実際の設定ファイルを絶対にリポジトリへ送信しないでください。
パスワードの漏えいを防ぎつつ、他の開発者向けにプロジェクトを文書化した状態に保つには、次の 2 つの手順に従ってください:
1. 実際のファイルを隠す
アプリケーションのルートで、.gitignore という名前のファイルを開きます(存在しない場合は作成します)。設定用の .json ファイルのパスを追加して、Git がそれらを完全に無視するようにします。
.gitignore に追加する内容の例:
config/_development.json
config/_production.json
config/_test.json
2. 設定例ファイル
新しい開発者がプロジェクトを簡単に設定できるように、必要なデータを含むサンプルファイルを作成します。
- アプリケーションの config/ フォルダに移動します。
sample.jsonという名前のファイルを作成します。_development.jsonの構造をそのファイルにコピーし、フィールド名のみを残します。
config/sample.json は次のようになります:
{
"database": {
"host": "ここにホストを入力",
"user": "あなたのユーザー名",
"password": "あなたのパスワード"
}
}
コードから設定にアクセスする方法
設定ファイル(_development.json など)で変数やキーを定義した後、アプリケーションのロジックでそれらを使用する必要があります。たとえば、API に接続し、保存されたアクセス トークン を必要とするサービスを作成する場合です。
Netuno では、これらの設定にネイティブリソース _app を通じてアクセスできます。
データの取得方法
サーバーによって実行される任意のコード内(server/services/ フォルダなど)で、_app.config() 関数を使用して、アクティブな設定ファイルにある値を取得します。
どのように紐付くかを理解するために、設定ファイル(config/_development.json)で次のように定義したとします:
{
"name": "私のアプリケーション",
"version": 2
}
"name" キーの値を取得し、サーバーのコンソール(ログ)に出力するには、.js サービスで次のコードを使用します:
// 1. Netuno は JSON ファイル内で "name" キーを探し、その値を取得します。
// 2. 次に、その値を 'appName' という JavaScript 変数に格納します。
let appName = _app.config().getString("name");
// 3. Netuno のターミナルに変数の内容を出力します: "私のアプリケーション"
_log.info(appName);
カスタム設定
データベースやサーバーの標準設定に加えて、独自の設定変数を作成できます。
これは、たとえば「1 ページあたりの最大項目数」や「メール送信間隔」などのビジネスルールを定義するのに非常に便利です。これらのルールが変わるたびにアプリケーションのコードを変更する必要はありません。
これらの変数は、_development.json や _production.json などの JSON 設定ファイル内の "settings" ブロックに保存されます。
JSON の構造と可視性(パブリック vs. プライベート)
設定を作成する際は、ユーザーインターフェース(フロントエンド)から見えるものと、サーバー(バックエンド)のみで保護されるべきものを分離することが重要です。
- プライベート変数:
"settings"ブロック内にあります。サーバーのみがアクセスできます。 - パブリック変数:
"public"サブブロック内にあります。これらは管理エリアのユーザーインターフェース(uiフォルダ)に送信されます。たとえばダッシュボードの開発時などに利用できます。
.json ファイルの構造例:
{
...
"settings": {
"public": {
"itemsPerPage": 10
},
"emailInterval": 10
}
}
コードから設定にアクセスする方法
これらのデータを取得する方法は、コードを記述する場所によって異なります:
1. サーバー / バックエンド(サービス)
一般設定またはプライベート設定にアクセスするには、サーバーコード(server フォルダ内の .js ファイル)で _app.settings() リソースを使用します。
// プライベート変数 "emailInterval" にアクセスします
const emailInterval = _app.settings().getInt("emailInterval");
_log.info("設定されている間隔は次のとおりです: " + emailInterval);
2. インターフェース / フロントエンド(UI)
インターフェースの開発(ui フォルダ内のファイル)では、"public" ブロック内で定義されたすべてにアクセスできます。そのためには、グローバルオブジェクト netuno.config.app.settings を使用します。
// フロントエンドでパブリック変数 "itemsPerPage" にアクセスします
const itemsPerPage = netuno.config.app.settings.itemsPerPage;
console.log("テーブルに " + itemsPerPage + " 件の項目を表示しています。");
まとめ
Netuno の設定システムは、アプリケーションに柔軟性と構造的な安全性を提供します。これにより、次のことが可能になります:
- 複数環境の管理: 独立したパラメータ設定を持つさまざまな実行コンテキスト(開発、本番など)を作成してサポートします。
- 変数のカスタマイズ:
settingsブロックを使用して、ビジネス固有の設定を追加します。 - 責務の分離: バックエンドに限定される設定を、フロントエンドからアクセス可能であるべき設定から分離して保護します。