環境変数の管理方法

Next.jsでは、環境変数を使ってアプリケーションの設定を柔軟に管理できます。例えば、APIキーやデータベース接続情報などの重要な設定を.envファイルに格納することで、コードベースに直接書き込むことなく、異なる環境(開発・テスト・本番)で異なる設定を使用できます。

  1. .envファイルの使用
    Next.jsは、以下のような複数の.envファイルをサポートしています:
    • .env.local
      ローカル開発用
    • .env.development
      開発環境用
    • .env.production
      本番環境用 これにより、各環境で異なる変数を簡単に管理でき、デプロイ時に適切な設定が適用されます。
  2. .gitignoreで機密情報を保護
    環境変数にAPIキーやデータベースのパスワードなどの機密情報を含む場合、.envファイルは必ず.gitignoreに追加し、リポジトリに含めないようにする必要があります。これにより、誤って機密情報が外部に漏れるリスクを軽減できます。

セキュリティ対策

Next.jsで環境変数を安全に扱うためには、以下のセキュリティベストプラクティスに従うことが重要です。

公開用と非公開用の変数を区別する

環境変数の中には、クライアントサイドで必要なものもあります。このような変数にはNEXT_PUBLIC_プレフィックスを付けて、クライアント側でアクセスできるようにします。しかし、APIキーや機密情報は必ずサーバーサイドでのみ使用するようにし、NEXT_PUBLIC_を付けないようにします。

NEXT_PUBLIC_API_URL=http://api.example.com

ビルド時に環境変数を設定

Next.jsでは、環境変数はビルド時に決定されるため、デプロイ後に変数を変更する場合は再ビルドが必要です。ビルド時に設定されるため、クライアントサイドに露出する情報は非常に注意して扱う必要があります。

動的な設定にはサーバーサイドレンダリングを活用

動的に変わる設定が必要な場合、getServerSidePropsを使ってサーバー側で環境変数を読み込むことが推奨されます。これにより、クライアントには機密情報が渡されず、安全にデータを処理できます。

export async function getServerSideProps() {
  const secretApiKey = process.env.SECRET_API_KEY;
  return { props: { key: secretApiKey } };
}

最後に

Next.jsでの環境変数管理は、開発の効率化とセキュリティ強化の両立が求められます。適切に設定された環境変数は、コードの保守性を高め、機密情報の保護に貢献します。これらのベストプラクティスを遵守することで、安全でスケーラブルなNext.jsアプリケーションを構築することができます。