環境変数管理ツール「dotenvx」を最近プロジェクトで導入したので、基本機能や使い方、他ツールとの違い、実際の活用シナリオなどをまとめてみます。普段は python-dotenv
や direnv
などを使ってきましたが、dotenvxはCLIの使い勝手やCI/CDとの親和性が高く、個人的にかなり気に入っています。
dotenvxとは?
dotenvx
は、.envファイルを使った環境変数管理をより便利にするためのCLIツールです。従来の dotenv
や python-dotenv
などのライブラリと異なり、言語非依存でCLIから環境変数のロード・管理・同期ができます。
主な特徴:
- .envファイルのロード・バリデーション・同期
- CLIから環境変数の確認・編集・暗号化
- 複数環境(dev, prod, testなど)への対応
- GitHub ActionsやVercelなどCI/CDとの連携が容易
- 言語・フレームワーク非依存
基本的な使い方
インストール
Homebrew(macOS/Linux)
brew install dotenvx/brew/dotenvx
curl(バイナリ直ダウンロード)
curl -fsSL https://dotenvx.sh | sh
公式: https://dotenvx.com/docs/install
環境変数のget/set・編集
dotenvx
はCLIから直接.envファイルの値を取得・設定できます。.envファイルのあるディレクトリ内で以下のように値を設定します。
値の設定(set)
$ dotenvx set API_KEY new-value
✔ set API_KEY with encryption (.env)
✔ key added to .env.keys (DOTENV_PRIVATE_KEY)
⮕ next run [dotenvx ext gitignore --pattern .env.keys] to gitignore .env.keys
⮕ next run [DOTENV_PRIVATE_KEY='dummy-private-key' dotenvx get API_KEY] to test decryption locally
値の取得(get)
$ dotenvx get API_KEY
new-value
-f/–env-file オプションの活用
-f
または --env-file
オプションで、任意の.envファイルを指定して操作できます。
例: 本番用の.env.productionを編集
dotenvx set -f .env.production API_KEY prod-key
get/validate/pull/push など、ほぼ全てのサブコマンドで -f
オプションが利用可能です。
.env.keysと環境変数の暗号化
.env.keys
ファイルは、dotenvxの暗号化機能で使用される秘密鍵を保存するためのファイルです。環境変数を暗号化すると、復号化に必要な秘密鍵が .env.keys
に保存されます。このファイルはソースコード管理にコミットすべきではなく、安全に管理する必要があります。
環境変数の暗号化
dotenvx set API_KEY "secret-value" -f .env.production
上記のコマンドを実行すると、 .env.production
ファイルにAPI_KEYが暗号化された形式で保存され、復号化に必要な秘密鍵が .env.keys
に生成されます。
暗号化された環境変数の使用
暗号化された環境変数を使用するには、 .env.keys
ファイルが存在するか、対応する DOTENV_PRIVATE_KEY_*
環境変数が設定されている必要があります。
dotenvx run -f .env.production -- node app.js
または、秘密鍵を直接指定して実行:
DOTENV_PRIVATE_KEY_PRODUCTION="your-private-key" dotenvx run -f .env.production -- node app.js
暗号化機能を使用することで、暗号化された .env.production
ファイルは安全にGitリポジトリにコミットできます。
.envファイルのロード
通常の .env
ファイルがあれば、以下のようにコマンドで環境変数をロードしてコマンドを実行できます。
dotenvx run -- python main.py
Node.jsの場合:
dotenvx run -- node app.js
複数環境の切り替え
.env.development
や .env.production
など複数のenvファイルを用意している場合、
dotenvx run -f .env.production -- python main.py
のように -f|--env-file
オプションで切り替え可能です。
バリデーション・同期
dotenvxは .env.example
とのバリデーションや、クラウド同期(Pro機能)もサポートしています。
dotenvx pull # クラウドから.envを取得
他の環境変数管理ツールとの比較
ツール | CLI | 言語依存 | バリデーション | クラウド同期 | CI/CD連携 |
---|---|---|---|---|---|
dotenvx | ○ | × | ○ | ○(Pro) | ◎ |
python-dotenv | △ | Python | △ | × | △ |
direnv | ○ | × | × | × | ○ |
dotenv-cli | ○ | × | × | × | ○ |
- dotenvxはCLI主体で、言語やフレームワークを問わず使えるのが最大の強み。
- クラウド同期やバリデーション、CI/CD連携も公式でサポート。
python-dotenv
はPython専用で、CLI用途はやや弱い。direnv
はシェルのhookで自動ロードできるが、バリデーションや同期は非対応。
実際の活用シナリオ・所感
- CI/CDでの安全な環境変数管理: GitHub ActionsやVercelなどで、dotenvxのpull/push機能を使うと、.envファイルを安全に同期・管理できる。Secretsの手動管理より楽。
- 複数プロジェクト・複数環境の切り替え:
-f|--env-file
オプションでdev/prod/testを簡単に切り替えられるのが便利。 - バリデーションで事故防止:
.env.example
との比較で、必要な変数が漏れていないかチェックできる。 - CLI主体のシンプルな運用: 言語やフレームワークを問わず、CLI一発で環境変数を注入できるのはやはり快適。
所感
個人的には「.env管理の決定版」と言える使い勝手。特にCI/CDやチーム開発での.env同期・バリデーションは、従来の手作業やスクリプト管理より圧倒的に楽です。Pro機能のクラウド同期も便利ですが、無料でも十分実用的。
「.env管理が面倒」「CI/CDで安全に環境変数を扱いたい」という方は、ぜひ一度dotenvxを試してみてください。