環境変数

環境変数は、アプリが動く環境ごとに変わる設定値を、コードの外側に置いておく仕組みです。

環境変数 のアイキャッチ図解
まずは、こう考えるとつかみやすいです。

環境変数は、社員証のように「この環境ではこの権限で動く」とアプリに伝える札のようなものです。

ひとことで言うと

環境変数は、アプリの動作に必要な設定値をコードの外に置き、環境によって切り替えられるようにする仕組みです。

データベースの接続先、APIキー、メール送信先など、開発中と本番では値が違うものを環境変数として外出しにします。 コードを変えずに環境ごとの動作を変えられるため、安全なデプロイや設定管理の基本として広く使われています。

たとえ話でもう少し詳しく

環境変数は、社員証のロック解除コードに近いです。

  • 同じ社員でも、本社・支社・倉庫では入れる部屋が違う
  • 部屋ごとに渡されるカードが「どこまで許可されているか」を伝える
  • 本人(アプリ)は変わらなくても、手渡される情報が環境によって異なる

アプリも同じです。 開発環境では「テスト用データベース」、本番環境では「本番データベース」に接続先を切り替えたい場合、コードに直接書くのではなく、起動時に渡す設定値として外出しにします。 これで同じコードをどの環境でも安心して動かせるようになります。

よく出る場面・使いどころ

  • 開発・ステージング・本番でデータベースの接続先を切り替えたいとき
  • APIキーや秘密鍵をコードに書かずに管理したいとき
  • コンテナやサーバーレス環境で起動時に設定を注入したいとき
  • チームで開発していて、個人の手元とサーバーで設定を分けたいとき

似た言葉との違い

  • 設定ファイル
    • .json.yaml ファイルにまとめた設定
    • 環境変数は起動時に外から渡せるため、ファイルをリポジトリに含めずに済む
  • APIキー
    • 外部サービスへの接続に使う認証情報
    • APIキーの置き場のひとつとして環境変数がよく使われる
  • コンテナ
    • アプリを動かす実行環境をパッケージ化したもの
    • コンテナ起動時に環境変数を渡すことで、同じイメージを複数の環境で使い回せる

実務で気にするポイント

  • シークレット(APIキーや認証情報)をコードやGitリポジトリに含めない
  • 環境変数の一覧を .env.example などで管理し、チームで共有する
  • 本番環境の環境変数はシークレット管理サービスで保護する
  • デプロイ時に必要な変数が漏れていないか確認する手順を用意する

注意: 環境変数はコードに書かない代わりに、設定先での管理が必要です。設定漏れや値の誤りは本番障害の原因になります。環境変数が変わったときはアプリの再起動が必要なことも多いため、変更後の確認を忘れずに行いましょう。