アルアカ - Arcadia Academia

Arcadia Academiaは「エンジニアリングを楽しむ」を合言葉に日本のデジタル競争力を高めることをミッションとするテックコミュニティです。

Next.jsの環境変数で開発環境と本番環境をわける方法

Featured image of the post

Next.jsは、Reactベースのフレームワークとして、非常に多くの機能を簡単に実装できる環境を提供しています。その中でも重要な機能の1つが「環境変数の管理」です。環境変数を適切に管理することで、開発環境と本番環境で異なる設定や動作を行うことが可能となります。この記事では、Next.jsで開発環境と本番環境を明確に分けるための環境変数の設定方法について解説します。

環境変数の基本的な使い方

Next.jsでは、プロジェクトのルートディレクトリに.envファイルを作成し、そこに環境変数を定義します。例えば、次のようにAPIのURLを環境変数として定義することができます。

NEXT_PUBLIC_API_URL=https://api.example.com

NEXT_PUBLIC_で始まる環境変数はクライアントサイドでもアクセス可能です。サーバーサイドのみで使用する環境変数には、NEXT_PUBLIC_を付けずに定義します。

例えば、以下のような環境変数が定義されているとします。

API_SECRET_KEY=your-secret-key

この変数は、クライアントサイドからは直接アクセスできず、サーバーサイドのみで使用されます。これにより、セキュリティを強化することができます。

環境変数を呼び出す際は、process.env.{変数名} で呼び出すことができます。

環境ごとの設定方法

開発環境と本番環境の分け方

Next.jsでは、環境ごとに異なる.envファイルを使い分けることで、開発環境と本番環境を明確に分離することができます。標準的な環境ファイルの使い方は以下の通りです。

  1. .env.local:全ての環境で適用されるローカル環境変数。ローカルの開発時に使用。
  2. .env.developmentnext dev(開発モード)でのみ適用される環境変数。
  3. .env.productionnext build(本番ビルド)およびnext start(本番起動)で適用される環境変数。

これらのファイルを使い分けることで、開発中と本番環境で異なる設定を簡単に行うことができます。

環境ごとの例
開発環境用の設定(.env.development
NEXT_PUBLIC_API_URL=http://localhost:3000/api
API_SECRET_KEY=dev-secret-key
本番環境用の設定(.env.production
NEXT_PUBLIC_API_URL=https://api.production.com
API_SECRET_KEY=prod-secret-key

このように、開発環境ではローカルのAPIエンドポイント、本番環境では実際の公開APIエンドポイントを使用する設定を行います。

Next.jsの環境判定

Next.jsでは、process.env.NODE_ENVを使用して、現在の環境が「開発」なのか「本番」なのかを判定することができます。例えば、以下のようにして、環境ごとに動作を分けることが可能です。

if (process.env.NODE_ENV === 'development') {
  console.log("開発環境です");
} else if (process.env.NODE_ENV === 'production') {
  console.log("本番環境です");
}

これにより、環境ごとに異なる処理を簡単に実装できます。

環境変数の管理のベストプラクティス

環境変数を使って設定を管理する際には、いくつかのポイントを押さえておく必要があります。

  1. 重要な情報を漏らさない:APIキーやデータベースのパスワードなど、機密情報はクライアントサイドで使用しないようにします。NEXT_PUBLIC_がつかない環境変数はサーバーサイドでのみ使用されるため、これを活用しましょう。
  2. .envファイルをGitに含めない.envファイルは機密情報を含む可能性があるため、必ず.gitignoreに追加してリポジトリに含めないようにします。例えば、以下のように設定します。
    # .gitignore
    .env.local
    .env.development
    .env.production
  3. 本番環境での設定ミスを防ぐ:本番環境用の環境変数は慎重に管理し、設定ミスがないようにテストを行うことが重要です。特に、外部サービスのAPIキーやURLを間違えると、重大なエラーを引き起こす可能性があります。
  4. .envファイルを使用しない代替方法:クラウドベースのデプロイサービス(VercelやNetlifyなど)では、ダッシュボードから直接環境変数を設定できる機能が提供されています。これを活用することで、.envファイルを使わずに環境変数を管理することも可能です。

まとめ

Next.jsでは、環境変数を簡単に設定して開発環境と本番環境を分けることができます。これにより、異なる環境に応じてAPIのエンドポイントや機密情報の管理を行うことが可能です。また、process.envを使用して環境ごとに適切な動作を実装することもできます。

最後に、環境変数の管理はセキュリティの観点から非常に重要です。機密情報が漏洩しないように、適切な管理方法を心がけましょう。クラウドサービスを利用する場合は、プラットフォームの提供する環境変数管理機能を最大限に活用するとよいでしょう。

学習を進める中で不安があれば、プロのメンターに相談してみませんか?
無料カウンセリングを試してみる

あなたを爆速で成長させるメンタリングプログラムはこちらから↓↓

転職ボックス|IT/ゲーム業界の正社員求職者の集客の無料会員登録↓↓