Dotenv

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}"),
        }
    }
}