NEXT_PUBLIC_ を付けた変数は、いつクライアントに入りますか。
ビルド時にバンドルへ書き込まれます。実務で効くのは、ビルド後に環境変数を変えても反映されないことです。イメージを1つ作って各環境で使い回す運用だと必ず踏みます。
面接官が見ているのはビルド時に埋め込まれることの理解。
これは「APIキーのような秘密情報は、どう扱いますか。」への追撃質問です。
よくある答えと、面談でどう見られるか
- ビルド時に埋め込まれる。実行時に変えても反映されない
イメージを使い回すコンテナ運用で必ず踏む論点です。 - 実行時にサーバーから配信される
されません。ビルド時に値そのものがコードへ埋め込まれます。だからビルドし直さない限り変わりません。 - 初回アクセス時にクライアントへ渡される
渡すのではなく、最初から入っています。 - ビルド時に埋め込まれるが、サーバー側で読む変数は実行時に読まれる
両方を区別できています。同じ .env に書いてあっても挙動が違う、という点が要点です。
面接官は何を見ているか
- ビルド時に埋め込まれると答えた
- 実行時に変えても反映されないと理解している
- だからコンテナ運用で詰まる、と繋げられた
模範解答
ビルド時にバンドルへ埋め込まれます。
実務で効いてくるのは、ビルド後に環境変数を変えても反映されないことです。Docker イメージを1つ作って開発・ステージング・本番で使い回す運用をしていると、NEXT_PUBLIC_ の値だけがビルド時の環境のまま固定されます。
サーバー側でだけ読む変数は実行時に読まれるので、この問題は起きません。同じ .env に書いてあっても挙動が違う、という点が混乱のもとです。