dotenv #
シークレットキーやポート番号その他アプリケーションの設定を環境変数で行う場合に、設定値を.envというファイルに記載しておきアプリケーションの起動時に.envファイルから環境変数にセットするという方法です。
下記の例では.envファイルに次のような内容が書かれているとします。
PORT=3000
KEY=e8ad309ce40f7c7a45e237c30b7b64aabd0a743edb88d08465e10512c13f2a0f
Goの例 #
godotenvを使います。
package main
import (
"fmt"
"os"
"github.com/joho/godotenv"
)
func main() {
_ = godotenv.Load()
for _, e := range []string{"PORT", "KEY"} {
fmt.Printf("%s : %s\n", e, os.Getenv(e))
}
}
もしくはautoloadをimportすれば、自動的に.envファイルがロードされます。
package main
import (
"fmt"
"os"
_ "github.com/joho/godotenv/autoload"
)
func main() {
for _, e := range []string{"PORT", "KEY"} {
fmt.Printf("%s : %s\n", e, os.Getenv(e))
}
}
Pythonの例 #
python-dotenvを使います。pipで次のようにインストールできます。
pip install python-dotenv
import os
from dotenv import load_dotenv
load_dotenv()
for e in ["PORT", "KEY"]:
print(f"{os.environ[e]=}")
Denoの例 #
Standardライブラリにdotenvがあります。
import "https://deno.land/std/dotenv/load.ts";
for (const e of ["PORT", "KEY"]) {
console.log(e + " : " + Deno.env.get(e))
}
または、denoコマンドに–envをつけると自動的に.envファイルを読み込んでくれるため、プログラム内で特に何もしなくても対応できます。
deno run --env スクリプト名
Rustの例 #
dotenv crateを使います。
use dotenv;
use std::env;
fn main() {
dotenv::dotenv().ok();
for e in ["PORT", "KEY"] {
match env::var(e) {
Ok(val) => println!("{e} : {val:?}"),
Err(err) => println!("couldn't interpret {e}: {err}"),
}
}
}