【かんきょうへんすう】

環境変数 とは?

最終更新:
💡 アプリの外から値を渡す「設定メモ」

プロセスが参照できる、名前と値の組。OSやアプリケーションに設定値を渡し、動作を変えるために使われる。

📌 このページのポイント
名前と値を、プロセスへ渡す 親のシェル DB_HOST localhost 起動するアプリ DB_HOST localhost 継承 通常、子は親の環境を引き継ぐ アプリが名前に応じて値を読む 秘密の保護を自動で保証しない
同じ名前と値を子プロセスへ渡す例。値の意味や利用方法はOSやアプリが決める。
ひよこ ひよこ
なんで設定をコードの外に置くの?
ペンギン先生 ペンギン先生
接続先などを、同じコードのまま実行環境に合わせて変えられるからだよ。環境変数は名前と値の組で、アプリがそれを読んで使う。プロセスごとに環境があり、子プロセスは通常、親の値を引き継ぐんだ。
ひよこ ひよこ
.envファイルを置けば設定される?
ペンギン先生 ペンギン先生
ファイルを置くだけでは設定されないよ。例えばDB_HOST=localhostのように書き、dotenvなどで読み込む。対応するNode.jsには組み込みの読み込み機能もある。秘密の値を含む未暗号化の.envはGitに含めず、共有用の例には実際の秘密を入れないようにしよう。
ひよこ ひよこ
NODE_ENVをproductionにすれば、自動で本番用になる?
ペンギン先生 ペンギン先生
NODE_ENVを読むライブラリが、値に応じて動作を変えることはあるよ。でもNode.js全体が自動で圧縮やエラー非表示になるわけではない。何が変わるかは、使うアプリやライブラリの仕様を確認するんだ。
ひよこ ひよこ
APIキーも環境変数なら安全?
ペンギン先生 ペンギン先生
コードから分けるだけでは十分ではないよ。ログや実行環境の情報から漏れる場合がある。例えばAWSのECSにはSecrets Managerなどから値を渡す仕組みもあるけれど、誰が読めるか、どこに値が出るかを含めて管理する必要があるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「環境変数」って出てきたら「OSやアプリに外から渡す設定値」と思えればだいたいOK!
📖 おまけ:英語の意味
「Environment Variable」 = 環境変数
💬 Environment(環境)に設定するVariable(変数)。アプリの外側から値を渡す仕組みだよ

参考資料

← 用語集にもどる