【ディレンブ】

direnv とは?

💡 フォルダに入るだけで環境が整う自動ドアマン
📌 このページのポイント
direnv ― ディレクトリ連動の環境変数管理 project-a/ .envrc AWS_PROFILE=staging DB_HOST=staging-db project-b/ .envrc AWS_PROFILE=production DB_HOST=prod-db cd で移動するだけ cd project-a/ 環境変数を自動 LOAD direnv: loading .envrc cd ../ 環境変数を自動 UNLOAD direnv: unloading
direnvのディレクトリ連動による環境変数の自動切り替え
ひよこ ひよこ

プロジェクトを切り替えるたびに環境変数を手動で設定するのが面倒なんだけど…

ペンギン先生 ペンギン先生

direnvを使えば、プロジェクトのフォルダに入るだけで自動的に環境変数がセットされるよ。.envrcファイルに書いておくだけでOKなんだ

ひよこ ひよこ

フォルダを離れたらどうなるの?

ペンギン先生 ペンギン先生

環境変数が自動でアンロードされるんだ。だからプロジェクトAのAPIキーがプロジェクトBに漏れる心配がない。環境の分離が完璧にできるよ

ひよこ ひよこ

.envrcって.envファイルとは違うの?

ペンギン先生 ペンギン先生

.envrcはシェルスクリプトなんだ。単なるキーバリューだけじゃなくて、`source_env`で別のファイルを読み込んだり、`PATH_add`でパスを追加したり、プログラマブルに書けるのが強みだよ

ひよこ ひよこ

誰かが悪意ある.envrcを仕込んだらどうなるの?

ペンギン先生 ペンギン先生

いい着眼点だね。direnvは新しい.envrcや変更された.envrcを見つけると実行をブロックして、`direnv allow`で明示的に許可するまで有効にならない。セキュリティもちゃんと考えられてるよ

ひよこ ひよこ

チーム開発だとどう管理するの?

ペンギン先生 ペンギン先生

.envrcはGitにコミットして、実際の秘密情報は.envrc.localや.envファイルに書いてignoreする方法が一般的だね。.envrcの中で`dotenv`を使えば.envファイルも読み込めるよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「direnv」って出てきたら「ディレクトリに入ると環境変数を自動セットするツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「directory environment」 = ディレクトリ環境
💬 directoryとenvironmentを組み合わせた名前。ディレクトリごとに環境を管理するというコンセプトそのままの名前だよ
← 用語集にもどる