Programming Lab

.evn(= .env)について

環境変数をまとめる「KEY=VALUE」ファイルの基本:歴史 / ルール / サンプル / エクスポート / インポート

HTML CSS JavaScript PHP ※一般的には .env

.evn(.env)とは?

環境変数をまとめて管理するための「KEY=VALUE」形式のテキストファイル。主に開発時に使い、本番はデプロイ基盤側の環境変数を使うのが基本。

基本 概要

.env は、アプリの設定値(APIキー、DB接続など)を コードから分離 して扱うための慣習的ファイルです。形式は KEY=VALUE

※このページは URL が /evn/ ですが、一般的には拡張子は .env(ドット・イー・エヌ・ブイ)が正です。

重要:.env は秘密情報が入りやすいので、Git管理に入れないのが定石です(.env.example を用意)。

.evn(.env)の歴史

Heroku/Foreman 由来の .env 文化と、The Twelve-Factor App の「環境に設定を置く」思想が普及を後押し。

歴史 背景

.env 文化は、Heroku周辺の運用(Foreman など)での運用慣習として語られることが多く、のちに dotenv 系ライブラリ(Ruby/Node/Python など)で広く一般化しました。

また、設定は環境変数に置くという Twelve-Factor App の考え方が、言語やOSに依存しない設定管理として普及を後押ししました。

  • dotenv(Node):.env を読み込み process.env に入れる
  • dotenv(Ruby):.env を読み込み ENV に入れる
  • python-dotenv:.env を読み込み環境変数化

.evn(.env)のルール(書き方)

KEY=VALUE / コメント / クォート / 改行 / 予約文字 / 命名規則など。

ルール 書式

基本形式

KEY=value
API_KEY=xxxxxxxx
DEBUG=true
  • 基本は KEY=VALUE(等号の前後にスペースを入れない)
  • コメント:多くの実装で # から行末まで(ただし実装差あり)
  • 値に空白があるならクォート推奨:NAME="Sun Stripe"
  • キー名は慣習的に大文字+アンダースコア(DB_HOST
  • 行末:改行で区切る
注意:「環境変数名」自体には使える文字制約があります(ドット . は不可、など)。

サンプル

.env / .env.example / 実務でよくあるセット

サンプル

.env(実値・Git管理しない)

APP_NAME="Programming Lab"
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost

DB_HOST=127.0.0.1
DB_PORT=3306
DB_NAME=prolab
DB_USER=root
DB_PASS=secret

API_KEY=xxxxxxxxxxxxxxxx

.env.example(雛形・Git管理する)

APP_NAME="Programming Lab"
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost

DB_HOST=127.0.0.1
DB_PORT=3306
DB_NAME=
DB_USER=
DB_PASS=

API_KEY=

.evn(.env)のエクスポート(生成)

配列/設定オブジェクト → .env テキストを書き出す(PHP例)

エクスポート 生成

「エクスポート」は、アプリ内の設定配列などから .env 形式のテキストへ 書き出す こととして整理します。

function env_export(array $vars): string {
  $lines = [];
  foreach ($vars as $k => $v) {
    $key = strtoupper((string)$k);
    // 値に空白や#が混じる場合はダブルクォート
    $val = (string)$v;
    if (preg_match('/\s|#|"/', $val)) {
      $val = '"' . str_replace('"', '\\"', $val) . '"';
    }
    $lines[] = $key . '=' . $val;
  }
  return implode("\n", $lines) . "\n";
}

// 例:書き出し
$txt = env_export([
  'app_name' => 'Programming Lab',
  'debug' => 'true',
  'api_key' => 'xxxxxxxx'
]);
file_put_contents(__DIR__ . '/.env', $txt);
運用:.env 本体は配布せず、.env.example を配布して各自が埋める形が安全です。

.evn(.env)のインポート(読み込み)

.env → 配列(PHP例)/ dotenv系ライブラリの基本

インポート 読み込み

「インポート」は、.env を読み取って 配列や環境変数に反映 することとして整理します。

function env_import(string $path): array {
  if (!is_file($path)) return [];
  $out = [];
  $lines = file($path, FILE_IGNORE_NEW_LINES);
  foreach ($lines as $line) {
    $line = trim($line);
    if ($line === '' || str_starts_with($line, '#')) continue;
    $pos = strpos($line, '=');
    if ($pos === false) continue;
    $key = trim(substr($line, 0, $pos));
    $val = trim(substr($line, $pos + 1));
    // クォート除去
    if ((str_starts_with($val, '"') && str_ends_with($val, '"')) || (str_starts_with($val, "'") && str_ends_with($val, "'"))) {
      $val = substr($val, 1, -1);
    }
    $out[$key] = $val;
  }
  return $out;
}

$vars = env_import(__DIR__ . '/.env');
// 必要なら putenv / $_ENV / $_SERVER に反映(案件ポリシーに合わせる)

Node/Python では dotenv 系ライブラリで読み込むのが一般的です(dotenv, python-dotenv など)。

実務メモ(事故りやすいポイント)