Next.jsNuxt.jsなど、Node.jsで構築されるサイトにおいて、ローカル環境と本番環境(またはそれ以上の環境)とで同じ変数を利用しながら違う値を参照する方法環境変数があります。公開したくない値(トークンやパスワード)を変数で管理する場合などに使います。

では、実際の利用シーンを想定します。

Twitter API経由で取得したツイートを埋め込むプログラムを組んでいるとします。そのためには、Twitterの開発者画面で発行される「トークン」が必要になりますが、このトークンはどのように管理するべきでしょうか?

Githubのパブリックリポジトリで管理する場合は、トークンも全世界に公開されるため当然NGです。

では、プライベートリポジトリはどうかというと、個人のプロジェクトなら問題ありませんが、チーム開発だったり、受託物の場合はNGです。重要な情報が常にファイルに含まれるため、本来知る必要のない人までファイルにアクセスできるなど、セキュリティリスクがグッと高まるからです。

そこで環境変数の出番です。NetlifyVercelなどのホスティングサービスで環境変数を設定すれば管理する必要がありません。ローカル環境で使っていたとしても、.gitignoreファイルで管理の対象外にしているためアクセスできません。

以上を踏まえ、セキュアな情報を環境変数で管理することは、プロジェクト開発における暗黙のルールであり、マナーであると考えています。「プライベートリポジトリだから安全」ではなく、ぜひ積極的に利用してはいかがでしょうか。