
Windowsで開発や設定をしていると「環境変数を設定しておいてください」という指示をよく目にします。
しかし、「環境変数っていったい何?」「設定するとどうなるの?」と疑問に思う方も多いのではないでしょうか。
本記事では、そんな初心者エンジニアの方向けに Windowsの環境変数を イチから わかりやすく解説します。
そもそも “環境変数” って何?
環境変数とは
環境変数 (Environment Variables) とは、OSやアプリケーションの動作に必要な情報を文字列として保存しておく仕組みのこと。

ざっくり言えば、WindowsPCを利用する際に様々なシーンで利用される変数(参考 変数とは?)だと思えばOK。
例えば、プログラムがファイルを保存するときに、一時的なファイル置き場(TEMP
フォルダ)をどこにするか、ユーザー名をどう扱うか、プログラムを探すためのパス(PATH)をどのように設定するか……これらを Windowsは環境変数として保持し、必要に応じて参照します。
Windows自体もプログラムです。一方で、利用するPCの情報やユーザによって主にフォルダ構成も変わります。ざっくり言えばこのフォルダ構成のように、利用シーンに応じて可変となる値を環境変数として定義しておいて呼び出せるようにしておけばプログラムも簡単になります。

例えばプログラムが「ユーザーの名前を知りたい」と思った場合、USERNAME
という名前の環境変数を読み込むことで、現在ログインしているユーザー名を取得する、といった使われ方をします。
環境変数を利用する目的
①システムやアプリケーション共通で使う情報を一元管理できる
- OS全体で共通して利用するフォルダのパス や ユーザーに関する基本情報、実行ファイルを探すルール などは、多くのアプリケーションが必要とする基本設定です。
- これらを一箇所で管理しておくと、変更があったときに 一度の設定変更 で全てのプログラムが参照先を正しく利用できるようになります。
この仕組みがないとどうなる?
- アプリケーションごとに個別で設定ファイルやコード上にハードコーディングをしなければならなくなり、変更やバージョンアップのたびに全アプリケーションを修正する必要が出てきます。
- 組織やプロジェクトごとにルールが散らばってしまい、混乱や不具合が起こりやすくなります。
②ディレクトリやファイル構成の変更に柔軟に対応できる
- Windowsでは、ユーザーのフォルダ構成やプログラムをインストールする場所がバージョンや環境によって多少変わることがあります(例:
C:\Users\<UserName>\AppData\Roaming
やC:\Program Files\...
など)。 - 環境変数に「一時ファイルはここに置く」「実行ファイルはここを探す」といった情報をまとめておくことで、フォルダの場所が変わっても環境変数の設定を更新するだけ で済みます。
この仕組みがないとどうなる?
- アプリケーション内で固定パスを使いまわす形になり、「フォルダ構成が変わったらプログラムが動かなくなった」というトラブルが起こりやすくなります。
- 同じPCでもユーザーが違えばディレクトリの場所が異なりますが、それに対処する手段がなくなり、複雑なロジックやエラー処理を各プログラムが個別に用意することになります。
③開発ツールやライブラリを複数バージョンインストールしても切り替えやすい
- 開発環境では、例えば複数バージョンのJavaやPython、SDKなどを使い分けるケースがよくあります。
JAVA_HOME
やPATH
などの環境変数を切り替えれば、どのバージョンの実行環境を使うかを簡単に切り替え可能 です。 - また、チーム内で「環境変数をこう設定しておけば同じビルド結果が得られる」という形で統一できると、トラブルシュートや再現性の確保がしやすくなります。
この仕組みがないとどうなる?
- バージョンごとにインストールパスを切り替えるために、プログラムごとにパスを指定し直す 必要があります。
- プログラムやスクリプトが、どのバージョンのライブラリを参照すべきかを判断する仕組みを自前で実装しなければならず、管理コストが大きくなります。
④作業効率の向上と誤りの減少につながる
- 環境変数で定義されたパスに追加しておくと、コマンドプロンプトなどでフルパスを打たずにツールを呼び出せる (
PATH
が典型例) ため、作業効率が上がります。 - 一度設定しておけば、同じ端末や同じユーザーであれば いつでも同じ設定 を使えるので、入力ミスや設定忘れなどのヒューマンエラーが減ります。
この仕組みがないと?
- 例えばコマンドを実行するたびに
C:\Program Files\Python39\python.exe
のように フルパスを書く 必要があり、手間も増え、スペルミスなどのミスも起こりやすくなります。 - プロジェクトメンバー全員がそれぞれ違う設定を持つことになり、「自分の環境では動くが他の人の環境では動かない」 といった問題が多発します。
Windowsでの環境変数の保存場所と読み込みタイミング
保存場所
Windowsでは環境変数は主に以下の2種類の場所に分けて管理されます。
- システム環境変数:
- OS全体で共有される環境変数です。
- レジストリ(
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
)に保存されることが多いです。 - 管理者権限を持ったユーザーが設定・変更します。
- ユーザー環境変数:
- 現在のユーザーアカウントにのみ適用される環境変数です。
- レジストリ(
HKEY_CURRENT_USER\Environment
)に保存されます。 - 各ユーザーが自由に設定できます。
読み込みタイミング
- Windowsにログインした時点で、システム環境変数とユーザー環境変数がまとめて読み込まれます。
- その後、Command Prompt(コマンドプロンプト)やPowerShellなどのシェルを起動すると、起動時にこれらの環境変数を引き継ぎます。
- システム環境変数を変更した場合、基本的にはログオフ・ログオン、または再起動をしないと反映されないことがあります(設定画面で再読込されることもありますが、アプリケーションによっては再起動が必要になる場合もあります)。
よく使われる代表的な環境変数
PATH
- PATH は非常に重要で、実行ファイル(プログラム)を探しに行くディレクトリ(フォルダ)のパスが列挙されています。
- 例えば、Command Promptで
python
と入力したとき、WindowsはPATHに記載されているフォルダの中からpython.exe
を探しにいきます。 - 開発時によく使うコンパイラやツールの場所をPATHに追加しておくと、コマンド名だけで呼び出せるようになります。
参考 コマンド入力から実行ファイルが見つかるまでの流れ
- ユーザーが "python" と入力し、Enterを押す
- cmd.exe (Command Prompt) が「指定されたコマンド名(python)をどこで探すか」を判断
- cmd.exe は、まず自分が知っている「内部コマンド」に該当するかどうかを確認
- 例:
dir
、cd
、echo
などのコマンドはcmd.exeの内部コマンド。
- 例:
- 内部コマンドでなければ、外部の実行ファイル (.exe, .cmd, .batなど) を探す処理 に移る
- PATH変数に含まれるフォルダを先頭から順番に調べ、「python.exe」があるか確認」
- 例えば
C:\Windows\system32
,C:\Windows
,C:\Program Files\Python39
, … など、Path
に登録されているディレクトリを順番に見ていきます。
- 例えば
- 最初に見つかったファイル(例:
C:\Program Files\Python39\python.exe
)を実行する- 見つからなければ「~は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」などのエラーが表示されます。
この一連の流れを 「コマンド検索パスの探索」 と呼び、Windowsではこれを PATH 環境変数で管理しています。
TEMP, TMP
- TEMP や TMP は一時ファイルを保存するためのフォルダを指す環境変数です。
- Windowsなら通常、
C:\Users\<ユーザー名>\AppData\Local\Temp
などが設定されていることが多いです。 - プログラムが一時ファイルを作るとき、ここにファイルを置くことが多いです。
USERNAME
- USERNAME は、現在ログインしているユーザーのアカウント名が入っています。
- スクリプトでユーザー名を自動的に取得したい場合などに活用できます。
JAVA_HOME
- Java開発をする際によく出てくるのが JAVA_HOME です。
- Javaがインストールされているパスを設定しておくことで、ビルドツールやアプリケーションがJavaランタイムやコンパイラを見つけやすくなります。
環境変数の設定・編集・確認方法

ここからは、主に以下の方法で環境変数を設定・編集・確認する手順をご紹介します。
- GUI(システムのプロパティ)から操作する方法
- コマンドプロンプト / PowerShell から操作する方法
GUI(システムのプロパティ)での設定手順
- システムのプロパティを開く
- Windows 10/11の場合は、スタートメニューから「設定」→「システム」→「情報」画面などで「システムの詳細設定」をクリック。
- または、「ファイル名を指定して実行」(Win + R)で
SystemPropertiesAdvanced.exe
を実行。
- 「環境変数」ボタンをクリック
- 「システムのプロパティ」ウィンドウが開いたら、下部にある「環境変数(N)...」ボタンをクリック。
- ユーザー環境変数 or システム環境変数を選ぶ
- 上段がユーザー環境変数、下段がシステム環境変数。
- 追加・編集したい環境変数がどちらに属するか確認して、各種ボタン(「新規(N)...」「編集(I)...」「削除(D)...」)を押します。
- 変数名と値を入力する
- 例として、「新規(N)...」ボタンを押すと以下のような画面が表示されるので、変数名(例:
MY_VARIABLE
)と変数値(例:C:\MyApp\bin
)を入力します。 - 入力が完了したら「OK」をクリック。
- システム環境変数の場合は管理者権限がないと操作できない場合があります。
- 例として、「新規(N)...」ボタンを押すと以下のような画面が表示されるので、変数名(例:
- 設定の反映
- 新たに設定した環境変数を反映させるには、いったんOKでウィンドウを閉じるか、場合によってはログオフ/ログオンや再起動が必要になる場合があります。
- 多くの場合、GUIで設定後に新しく開いたコマンドプロンプト/PowerShellには反映されています。
コマンドプロンプトでの操作
環境変数の確認
set
コマンドを実行すると、現在の環境変数が一覧表示されます。
C:\> set ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\Alice\AppData\Roaming ...
特定の環境変数のみ確認したい場合は set <変数名>
で始まるものを表示します。
C:\> set PATH Path=C:\Windows\system32;C:\Windows;C:\Program Files\...
環境変数の一時的な設定
コマンドプロンプト上でのみ有効な一時的な環境変数設定は、以下のように行います。
C:\> set MY_VARIABLE=C:\MyApp\bin
このコマンドを実行すると、同じコマンドプロンプトセッションでのみ MY_VARIABLE
が利用可能になります。新しいコマンドプロンプトを開くとリセットされるため、恒久的に設定したい場合はGUI操作かレジストリ操作が必要です。
PowerShellでの操作
環境変数の確認
PowerShellでは、環境変数は Env:
ドライブとして参照できます。
PS C:\> Get-ChildItem Env: Name Value ---- ----- ALLUSERSPROFILE C:\ProgramData APPDATA C:\Users\Alice\AppData\Roaming ...
特定の環境変数を確認するには、↓。
PS C:\> $Env:PATH C:\Windows\system32;C:\Windows;C:\Program Files\...
環境変数の一時的な設定
PowerShellでの一時設定は以下のように行います。
PS C:\> $Env:MY_VARIABLE = "C:\MyApp\bin"
これも現在のPowerShellセッション限定の設定です。
システム環境変数とユーザー環境変数の違い・注意点
違い
- システム環境変数:
- OS全体に適用される。
- すべてのユーザーが同じ値を参照する。
- 変更には管理者権限が必要。
- ユーザー環境変数:
- ログインしているユーザーにのみ適用される。
- 変更には管理者権限は不要。
編集時の注意点
- システム環境変数を変更する場合は、管理者権限 で操作しないと変更が反映されない。
- システム環境変数のPATHに誤ったフォルダパスを追加すると、OSやプログラムの実行に悪影響を与えることがある。
- 既存のPATHを編集する際は、既存の値を消してしまわないよう注意。改行やセミコロンの扱いに気をつける(GUIでは一覧表示で編集が可能な場合あり)。
セキュリティ上のポイント
- 環境変数(特にPATH)に不正なディレクトリが入ると、意図しないプログラムが優先的に実行されてしまうリスクがあります。
- システム環境変数は管理者しか変更できないようにする、あるいはユーザー環境変数の値も含め定期的に見直すなどの対策をする必要があります。
トラブルシュートのヒント
- 変更したはずの値が反映されていない場合は、再ログインや再起動を試す。
- コマンドプロンプトやPowerShellなど、現在開いているウィンドウではなく新しいウィンドウを開いて確認する。
- 変数名が重複していないか、打ち間違い(スペルミス)がないかチェックする。