~/VibeHandbook
無料 PDF

05 · 05

環境変数と設定

コードの中に書き込めない値があります。秘密の鍵、データベースのパスワード、サービスのアドレスなど。そしてアプリがどこで動くかによって変わる必要があるものもあります。ノートパソコンでテストするコード(dev 環境)はテスト用のデータベースに話しかけるべきですし、ユーザーが触れる本番のアプリ(prod、つまり本番(production)環境)は本物のほうに話しかけなければなりません——同じコードを使ってです。

その答えが 環境変数(よく「env vars(env変数)」と呼ばれます)です。コードの外側にある名前付きの値で、コードが動くときに供給されます。コードは「DATABASE_URL をちょうだい」と言い、環境がどれを手渡すかを決めます。

# 設定ファイル(例: .env) — 値はコードの中ではなく、ここに置く

DATABASE_URL=postgres://localhost/myapp_dev
STRIPE_SECRET_KEY=sk_test_51H...     # dev = テスト用の鍵
SEND_REAL_EMAILS=false               # テスト中は本物のユーザーにメールを送らない

2つのルールが、本物の痛みからあなたを救ってくれます。

  • 秘密の情報は決してコードに入れない。 コードの中にあるものは何でも公開されてしまう可能性があり(特に共有リポジトリでは)、漏れた決済鍵やデータベースのパスワードは正真正銘の緊急事態です。秘密の情報はenv変数に置き、バージョン管理の外に保ちます。
  • devとprodは別物。 肝心なのは、同じコードが両方で正しく振る舞うことです。なぜなら、どのデータベースと鍵を使うかを決めるのはコードではなく環境だからです。

同じコード、二つの住み家——違うのはenv変数だけです。

        SAME CODE
       /         \
      ▼           ▼
   ┌─────────────────┐     ┌─────────────────┐
   │  DEV            │     │  PROD           │
   │  自分のPC       │     │  ホスティング   │
   │  テストDB       │     │  本番DB         │
   │  テストAPIキー  │     │  本番APIキー    │
   │  偽のメール     │     │  本物のメール   │
   └─────────────────┘     └─────────────────┘
     自分だけが見る          ユーザーが見る

オフラインでも読みたい?

本編まるごとを PDF または EPUB で無料ダウンロード。