webアプリ開発における環境変数まわりのベストプラクティス
DRANK
nodejsを例に解説します。nodejsでは環境変数はprocess.env.環境変数名でとりだせます。また、開発環境・テスト環境・本番環境をそれぞれNODE_ENVという環境変数にdevelopment test productionと入れる文化があります。 アプリの環境(例えばNODE_ENV)によって設定を分岐しないよくDBとかで開発環境・テスト環境・本番環境ごとに設定を分岐させることがあります。The Twelve-Factor Appでも言及されているように、環境はその3つだけではなく、開発環境のなかでも設定値のバリエーションが生まれたりします。いっそのこと開発環境・テスト環境・本番環境と区別せずに、設定の値だけ環境変数を増やすほうがこのバリエーションに対応できます。ただし、環境を扱う環境変数(NODE_ENV)で分岐させたほうが素直な場合も極稀にあります(フレームワークがNODE_ENV環境によって挙動を変えるときとか)。badlet logLevel = 'info'; if(NODE_ENV === 'production'){ logLevel = 'error'; } const logger = new Logger({ level: logLevel }) goodconst logger = new Logger({ // ??は左辺が定義されていないとき(jsではundefinedやnull)に右辺を使う式 level: process.env.LOG_LEVE…
2 comments
この辺はちゃんとやらないとなー。dotenvどうしようか迷ってたとこだった