Node.js 環境変数設定ガイド
Node.js では、環境変数を利用してアプリケーションの設定や機密情報を安全に管理することができます。環境変数は、オペレーティングシステムによって提供される動的な値で、アプリケーションの実行時にアクセスできます。
環境変数の設定方法
環境変数の設定方法は、オペレーティングシステムによって異なりますが、一般的には以下の方法があります。
コマンドラインから設定
# Linux/macOS
MY_VARIABLE=my_value node app.js
# Windows
SET MY_VARIABLE=my_value && node app.js
シェルスクリプトから設定
#!/bin/bash
export MY_VARIABLE=my_value
node app.js
.env ファイルを使用
.env
ファイルを作成し、環境変数を定義します。このファイルは、Git などのバージョン管理システムに含めないようにしてください。
MY_VARIABLE=my_value
その後、Node.js アプリケーション内で dotenv
パッケージを使用して、.env
ファイルを読み込むことができます。
require('dotenv').config();
console.log(process.env.MY_VARIABLE);
環境変数の取得
Node.js アプリケーション内で環境変数にアクセスするには、process.env
オブジェクトを使用します。
console.log(process.env.MY_VARIABLE);
環境変数の利用シーン
- デプロイメント環境の切り替え
環境変数を活用して、開発環境、ステージング環境、本番環境などの異なる設定を適用することができます。 - アプリケーションの設定
データベース接続文字列、ポート番号、ログレベルなどの設定を環境変数で管理できます。 - 機密情報の保護
API キー、パスワードなどの機密情報を環境変数に設定することで、ソースコードに直接記述する必要がなくなります。
# 環境変数 `MY_VARIABLE` を `my_value` に設定
MY_VARIABLE=my_value node app.js
.env
ファイル
MY_VARIABLE=my_value
app.js
require('dotenv').config();
console.log(process.env.MY_VARIABLE); // 出力: my_value
process.env オブジェクトを使用したアクセス
console.log(process.env.NODE_ENV); // 出力: development (環境変数 NODE_ENV が development に設定されている場合)
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
app.get('/', (req, res) => {
res.send('Hello, World!');
});
app.listen(port, () => {
console. log(`Server listening on port ${port}`);
});
この例では、PORT
環境変数が設定されていればその値が、そうでなければデフォルトの 3000
がポート番号として使用されます。
環境変数の定義
- 環境変数マネージャー
システムの環境変数設定ツールを使用 - .env ファイル
.env
ファイルにMY_VARIABLE=my_value
と記述 - コマンドライン
MY_VARIABLE=my_value node app.js
Node.js 内でのアクセス
process.env
オブジェクトを使用:process.env.MY_VARIABLE
- セキュリティ
機密情報を直接コードに埋め込まない - デプロイメント環境の切り替え
開発、ステージング、本番環境ごとの設定 - アプリケーションの設定
データベース接続情報、API キー、ログレベルなど
注意
- 環境変数の設定はデプロイメント環境に合わせて適切に行う
- 環境変数の値は機密情報を含まないように注意
.env
ファイルはバージョン管理システムに含めない
Node.js での環境変数設定の代替方法と詳細ガイド
Node.js で環境変数を設定する方法は、.env
ファイルを使うのが一般的ですが、他にも様々な方法があります。それぞれの方法にはメリットとデメリットがあり、プロジェクトの規模や複雑さ、チームの開発スタイルによって最適な方法が異なります。
.env ファイル以外の設定ファイルを使用する
- YAML 形式
YAML 形式の設定ファイルを使用することもできます。YAML は JSON よりも読みやすく、複雑な階層構造を表現しやすいという特徴があります。 - JSON 形式
package.json
や専用のconfig.json
ファイルに設定を記述します。Node.js の設定ファイルを読み込むモジュールを利用することで、環境変数と同様に設定値にアクセスできます。
メリット
- より複雑な設定を管理できる
- 設定値をコードから分離できる
- 環境変数ほど手軽ではない
- 設定ファイルのフォーマットを統一する必要がある
コマンドライン引数で設定する
Node.js の実行時に、コマンドライン引数で環境変数を渡すことができます。
node app.js --port=3001 --database=mydb
- スクリプト実行時に柔軟に設定を変更できる
- シンプルで直感的
- 機密情報をコマンドラインに直接記述するのはセキュリティリスクがある
- 長いコマンドラインになる可能性がある
環境変数マネージャーを使用する
- config
設定ファイルを読み込むための汎用的なモジュールです。 - cross-env
環境変数を跨いで設定できるモジュールです。 - dotenv
.env
ファイルを読み込むための最も一般的なモジュールです。
- 複雑な設定を簡単に管理できる
- 豊富な機能とコミュニティサポート
- 追加のライブラリが必要
プロセス環境変数を直接操作する
Node.js の process.env
オブジェクトを直接操作して、環境変数を設定することもできます。
process.env.MY_VARIABLE = 'my_value';
- 間違って変更してしまう可能性がある
- コード内にハードコーディングされるため、管理が難しい
- 設定方法の選択
プロジェクトの規模や複雑さ、チームの開発スタイルに合わせて最適な方法を選択してください。 - 機密情報の保護
API キーやパスワードなどの機密情報は、環境変数に設定する場合は、.env
ファイルをバージョン管理システムから除外するなど、適切なセキュリティ対策を講じてください。 - 環境変数の命名
環境変数の名前は、大文字でアンダースコアで区切るのが一般的です。 - デフォルト値の設定
環境変数が設定されていない場合のデフォルト値を設定しておくと便利です。 - 環境変数マネージャーの利用
複雑な設定管理には、dotenv や config などの環境変数マネージャーを利用することを検討してください。
Node.js での環境変数設定は、アプリケーションの柔軟性と保守性を高める上で非常に重要です。様々な設定方法がありますが、プロジェクトの要件に合わせて最適な方法を選択し、適切なセキュリティ対策を講じることで、より安全で信頼性の高いアプリケーションを開発することができます。
node.js environment-variables