Next.jsの環境変数:NEXT_PUBLIC_の使い方と重要性
今回は、Next.jsアプリケーション開発において非常に重要な概念であるNEXT_PUBLIC_
環境変数について詳しく解説します。
Contents
NEXT_PUBLIC_とは?
NEXT_PUBLIC_
は、Next.jsで使用する特別なプレフィックス(接頭辞)です。環境変数の名前の前にこのプレフィックスを付けることで、その環境変数をブラウザ側(クライアントサイド)でも使用できるようになります。
通常、環境変数はサーバーサイドでのみアクセス可能ですが、NEXT_PUBLIC_
を付けることで、クライアントサイドのJavaScriptからも安全にアクセスできるようになります。
なぜNEXT_PUBLIC_が必要なのか?
Next.jsアプリケーションを開発する際、以下のような状況でクライアントサイドでも環境変数を使用したいケースがあります:
- ウェブサイトの設定(タイトル、説明文など)
- 公開しても問題ないAPIのベースURL
- 機能のオン/オフを切り替えるフラグ(フィーチャーフラグ)
これらの情報は公開しても問題ない場合が多く、クライアントサイドでも使用できると便利です。そこで登場するのがNEXT_PUBLIC_
プレフィックスです。
NEXT_PUBLIC_と通常の環境変数の違い
NEXT_PUBLIC_の使い方
1. 環境変数の設定
まず、プロジェクトのルートディレクトリに.env.local
ファイルを作成し、そこに環境変数を記述します。
NEXT_PUBLIC_SITE_TITLE=My Awesome Blog
NEXT_PUBLIC_API_URL=https://api.myapp.com
NEXT_PUBLIC_ENABLE_NEW_FEATURE=true
2. コード内での使用
設定した環境変数は、process.env.NEXT_PUBLIC_変数名
の形式でアクセスできます。
// ページのタイトルを設定
<title>{process.env.NEXT_PUBLIC_SITE_TITLE}</title>
// APIリクエストを送信
fetch(`${process.env.NEXT_PUBLIC_API_URL}/users`)
// 新機能の表示を制御
{process.env.NEXT_PUBLIC_ENABLE_NEW_FEATURE === 'true' && <NewFeature />}
注意点とベストプラクティス
- セキュリティ:
NEXT_PUBLIC_
を付けた環境変数の値は公開されるため、機密情報(APIキー、パスワードなど)には使用しないでください。 - ビルド時の評価:
NEXT_PUBLIC_
変数はビルド時に評価されるため、実行時に動的に変更することはできません。 - 型安全性:TypeScriptを使用している場合は、環境変数の型を宣言することで、より安全に使用できます。
declare namespace NodeJS {
interface ProcessEnv {
NEXT_PUBLIC_API_URL: string;
NEXT_PUBLIC_ENABLE_NEW_FEATURE: string;
}
}
- 環境別の設定:開発環境と本番環境で異なる値を使用したい場合は、
.env.development
と.env.production
ファイルを使い分けることができます。