環境変数とは
この記事の結論
- 環境変数とは、プログラムの外側に置いておき、起動したときに読み込ませる「名前=値」の形の設定のことです。
- OSはプログラムを起動するときに、名前と値の組の一覧を渡します。コードを書き換えずに、動かす場所ごとに値だけを替えられます。
- 開発では値を
.envファイルにまとめることが多く、このファイルは.gitignoreに入れてリポジトリに含めないのが原則です。
かんきょうへんすう
プログラムの外側に置いておき、起動したときに読み込ませる「名前=値」の形の設定のことです。
最終更新: 2026-09-26
環境変数とは(意味と読み方)
環境変数とは、プログラムの外側に置いておき、起動したときに読み込ませる「名前=値」の形の設定のことです。読み方は「かんきょうへんすう」、英語では environment variable と書きます。
コマンドの置き場所を並べた PATH や、利用者のホームフォルダを示す HOME は、OSが最初から用意している環境変数です。開発者は、これと同じ仕組みに自分の設定を足して使います。
アプリの設計指針として知られるThe Twelve-Factor App の「設定」の章は、開発・ステージング・本番の間で違い得るものを設定と呼び、それを環境変数に格納するよう勧めています。環境変数は言語やOSに依存しない標準だから、というのが理由です。
環境変数の仕組み
POSIX の規格(Environment Variables の章)では、プロセスが始まるときに「環境」と呼ばれる name=value 形式の文字列の並びが渡される、と定めています。名前の大文字と小文字は区別されるので、PATH と path は別物です。
シェルで export API_BASE=https://example.com と設定すると、そのシェルから起動したプログラムにも値が引き継がれます。プログラムの側は、Node.js なら process.env.API_BASE、Python なら os.environ["API_BASE"] のように名前で取り出します。
取り出した値はどれも文字列です。ポート番号のように数として使う値は、プログラムの中で変換してから使います。
.envファイルの書き方と扱い
環境変数を毎回シェルで打つのは手間なので、開発中は .env というファイルに1行1組で書いておくのが一般的です。
Node.js のコマンドラインオプションの説明によると、Node.js は v20.6.0 で --env-file が追加され、node --env-file=.env app.js のように起動するとファイルの中身が process.env に入ります。# 以降はコメント扱いです。同じ名前が環境の側にもあれば、環境の側の値が優先されます。
.env には秘密の値が入るので、.gitignore に書いてコミットの対象から外します。ファイルを無視する(GitHub Docs)にあるとおり、すでに追跡しているファイルは .gitignore に足しても無視されません。その場合は git rm --cached .env で追跡を外してから規則を加えます。
代わりに、名前だけを並べて値を空にした .env.example をリポジトリに置いておくと、ほかの人や将来の自分が何を用意すればよいかが分かります。
AI開発での環境変数の使い方
AIコーディングエージェントに外部サービスとの連携を書かせるときは、「接続先とキーは環境変数 LLM_API_KEY と API_BASE から読む」と指示に含めます。値を見せずに実装を進められ、APIキーがコードに直書きされるのも防げます。
手元のローカル環境では .env から、ステージング環境や本番では配信先サービスの設定画面から、同じ名前で別の値を渡します。コードは1つのまま、つなぐ先だけを替えられるのが環境変数を使う利点です。
環境変数についてのよくある誤解
- 誤解:
.envを置けば自動で読まれる → 実際:読み込む仕組みが要ります。起動時のフラグやライブラリで読み込ませるか、フレームワークが読む場所に置きます。 - 誤解:環境変数に入れれば暗号化される → 実際:値は平文のままです。ログやエラー画面に出力しないよう注意します。
- 誤解:値を変えれば動いているプログラムにすぐ効く → 実際:環境はプロセスの開始時に渡されるので、変えたあとは起動し直します。
- 誤解:環境変数ならブラウザー側でも隠せる → 実際:ビルド時に値がコードへ埋め込まれる場合があります。たとえばVite の環境変数の説明は、
VITE_で始まる変数はクライアントのコードに含まれるので、APIキーのような秘密を入れないよう注意しています。
関連用語
関連記事
出典・参考資料
環境変数についてよくある質問
Q1. 環境変数とは何ですか?
プログラムの外側に置いておき、起動したときに読み込ませる「名前=値」の形の設定です。コードを変えずに、動かす場所ごとに接続先や秘密の値だけを替えられます。
Q2. .envファイルとは何ですか?
環境変数を1行に1組ずつ書いておくテキストファイルです。開発中に毎回シェルで設定する手間を省くために使います。秘密の値が入るので、.gitignore に書いてリポジトリに含めないようにします。
Q3. .envを書き換えたのに値が変わりません。なぜですか?
環境変数はプログラムの起動時に渡されるので、動いているプログラムには反映されません。一度止めて起動し直します。それでも変わらない場合は、同じ名前の変数がシェルの側に残っていないかを確かめます。
Q4. 環境変数の名前は大文字で書く必要がありますか?
決まりではありませんが、大文字と数字とアンダースコアで書く慣習が広く使われています。大文字と小文字は区別されるので、読み込む側と書く側で表記をそろえます。
Q5. .envをコミットしてしまったらどうすればよいですか?
中に秘密の値が入っていたなら、まずその値を発行したサービスで無効化し、新しい値に替えます。そのうえで git rm --cached .env で追跡を外し、.gitignore に追加します。