0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

開発と本番で環境変数を安全に切り替える5つのコツ

0
Posted at

Web アプリを Vercel や Netlify へデプロイするとき、開発(Preview) と 本番(Production) では API エンドポイントや認証キーが異なることが多いです。
初心者がハマりがちなのは、ローカルでは動くのに本番環境でエラーになる「環境変数の差分」を見落としてしまう点です。ここでは、差分管理をシンプルに保つための 5 つのポイントと、GitHub Actions で自動的に切り替える実装例を紹介します。

1. 環境変数ファイルは .env.example だけをリポジトリに残す

実際のキーは GitHub の Secrets に保存し、.env.* ファイルは .gitignore に入れます。

# .gitignore
.env*

2. 環境ごとにプレフィックスを付ける

# .env.preview
NEXT_PUBLIC_API_URL=https://api-preview.example.com
# .env.production
NEXT_PUBLIC_API_URL=https://api.example.com

コード側ではプレフィックスだけで取得できるので、切り替えはファイルの差し替えだけです。

3. CI で環境を判定し、適切なファイルをロード

GitHub Actions の if: 条件で github.ref が refs/heads/main か refs/pull/* かを判定し、dotenv パッケージで読み込みます。

name: Deploy
on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Set env file
        run: |
          if [[ "${{ github.event_name }}" == "pull_request" ]]; then
            echo "NEXT_PUBLIC_API_URL=${{ secrets.PREVIEW_API_URL }}" >> $GITHUB_ENV
          else
            echo "NEXT_PUBLIC_API_URL=${{ secrets.PRODUCTION_API_URL }}" >> $GITHUB_ENV
          fi

      - name: Install dependencies
        run: npm ci

      - name: Build
        run: npm run build

      - name: Deploy to Vercel
        uses: amondnet/vercel-action@v20
        with:
          vercel-token: ${{ secrets.VERCEL_TOKEN }}
          vercel-args: "--prod"
        env:
          VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
          VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}

4. 本番デプロイは必ず --prod フラグで実行

プレビュー環境は自動で作成されますが、--prod を付けないと本番ビルドが走りません。CI の条件分岐でフラグを切り替えるだけで安全です。

5. ローカルでも同様のスクリプトを用意

npm run dev:preview と npm run dev:prod を package.json に定義しておくと、ローカルでも同じ環境変数が使えます。

{
  "scripts": {
    "dev:preview": "dotenv -e .env.preview next dev",
    "dev:prod": "dotenv -e .env.production next dev"
  }
}

これらの手順を踏めば、**「ローカルは OK、でも本番で 500 エラー」**という事態を防げます。
環境変数の差分管理は面倒に見えて、実は数行の設定で完結します。ぜひ自分のリポジトリに取り入れて、安心してデプロイを自動化しましょう。

詳しい手順はこちら → https://felixstudio0.gumroad.com/?utm_source=qiita&utm_medium=github_actions&utm_campaign=2026-q1&utm_content=qiita-footer

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?