ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
.env ファイルは、アプリケーションが起動時に読み込む環境変数を KEY=value 形式で外部ファイルにまとめたものです。拡張子という形ではなく ファイル名そのものが .env という UNIX 系の隠しファイル形式で、ドット 1 つで始まるためエクスプローラのデフォルトでは見えないことが多いです。
この仕組みは The Twelve-Factor App(Heroku が提唱した SaaS 構築方法論)の「III. Config — 設定を環境変数に格納する」原則を実装するもので、Ruby on Rails コミュニティ発の dotenv gem(bkeepers/dotenv、2012 年〜)から普及しました。現在は Node.js・Python・PHP(Laravel が標準採用)・Go・Rust などほぼ全言語に dotenv 系ライブラリがあり、API キー・DB 接続情報・OAuth クライアントシークレットなど機密情報を保管する事実標準となっています。
構文・データモデル
1 行 1 変数、KEY=value 形式。値はクォート省略可ですが、スペースや特殊文字を含むときはクォートします。
# コメントは # で始める
APP_ENV=production
APP_DEBUG=false
APP_KEY=base64:abc123...
# 値にスペースや記号があるときはクォート
APP_NAME="My Application"
DB_PASSWORD='p@$$word!'
# 変数展開(dotenv によっては対応しない)
DB_HOST=localhost
DATABASE_URL="postgres://user:pass@${DB_HOST}:5432/mydb"
# 空行と末尾コメントは無視される
MAIL_FROM=admin@example.com # 送信元アドレス
Laravel の .env も同じ形式で、config/*.php から env('APP_KEY') で参照されます。Node.js では require('dotenv').config() で process.env.APP_KEY に流し込まれます。
主な用途
- 機密情報の外部化: API キー、DB パスワード、JWT 秘密鍵、OAuth クライアントシークレット
- 環境ごとの設定切り替え:
.env.development/.env.production/.env.testなど環境別ファイル - Docker Compose 連携:
docker-compose.ymlが同階層の.envを自動読み込み - Vite / Next.js のビルド時定数:
VITE_API_URL、NEXT_PUBLIC_*といったプレフィックス付き変数 - CI/CD のシークレット注入: GitHub Actions / GitLab CI が
.envを出力してビルドに渡すパターン
関連形式との比較
| 項目 | .env | JSON | YAML | シェル変数 |
|---|---|---|---|---|
| 形式 | key=value のみ | 木構造 | 木構造 | key=value |
| ネスト | 不可(フラット) | 可 | 可 | 不可 |
| コメント | 可(#) | 不可 | 可 | 可 |
| 用途 | シークレット・設定 | API・データ | CI・IaC | シェル環境 |
| git 管理 | 原則しない | する | する | 該当なし |
| 標準化 | 仕様統一なし(実装依存) | RFC 8259 | YAML 1.2 | POSIX |
編集・パーサ・ツール
- 各言語の dotenv ライブラリ:
- Node.js:
dotenv(最も普及)、dotenv-flow、dotenvx - Python:
python-dotenv - PHP:
vlucas/phpdotenv(Laravel が利用) - Ruby:
dotenvgem - Go:
joho/godotenv - Rust:
dotenvy
- Node.js:
- direnv: ディレクトリ移動時に
.envrcを自動 source する開発者向けツール - doppler / 1Password CLI / AWS Secrets Manager / HashiCorp Vault: 本番では
.envをやめて専用シークレット管理に移行することも多い - direnv-vscode、EnvFile プラグイン: IDE での
.env読み込み支援
注意点・落とし穴
- 絶対に git にコミットしない:
.gitignoreに.envを必ず追加。誤コミットしたら git history からも除去し、漏れたシークレットは 全てローテーションする - 共有用に
.env.exampleを用意: キー名と説明だけ書いた雛形を git 管理する - シェルの構文ではない:
.envはシェルでsourceするためのものではない。exportプレフィックスは不要(dotenv 系は無視するが、シェルは違う解釈をする) - クォートとエスケープ: ダブルクォート内では
\nを改行に展開するライブラリがある一方、シングルクォートでは展開しない。実装ごとに差があるので注意 - 本番では使わない選択肢も: 本番環境ではコンテナの環境変数や Secret Manager で渡し、
.envはローカル開発専用とする運用が推奨される(12-factor 的) - 変数展開の差異:
${OTHER}形式の展開対応はライブラリ依存。Laravel の.envは対応、素の dotenv-node は古いバージョンでは未対応だった - フロントエンドに渡す変数は公開される: Vite の
VITE_*、Next.js のNEXT_PUBLIC_*はビルド時にバンドルへ埋め込まれ、ブラウザから読める。シークレットを入れてはいけない
関連リンク
- Web・データ・設定
- ファイル拡張子とは
- INI(.ini)
- properties(.properties)
- conf(.conf)
- .env
- .env の値を vue.js で参照する方法
- .env ファイルの設定値へのアクセス
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?