0
0

.envファイルで環境変数を設定する方法

Last updated at Posted at 2024-05-27

はじめに

大学の授業で、入力されたアーティストと近しいアーティストのネットワーク図を作成するシステムを作ったので、今回は個人的な趣味で、そのシステムを発展させてWebアプリケーションを開発しました。その際、APIのアクセスキー(環境変数)をコードに直接記述してGitHubに(publicで)上げてしまうと情報セキュリティの問題があると気付き、環境変数をセキュアに管理する方法を調べたので、その備忘録を残します。

方法

.envファイルを使用します。

具体的には、python-dotenvモジュールを使用して.envファイルを読み込みます。

.envファイルを使用することのメリットは以下の通りです。

  • 環境変数を一元管理でき、設定の変更や追加が簡単になる
  • データベースの接続情報やAPIキーなどの機密情報をソースコードに直接書かずに済むため、セキュリティが向上する(.gitignoreファイルに.envを記述することで、GitHub上に公開されずに済みます。.gitignoreファイルの作成は後述)
  • チームで開発する際に、個々の開発者が自身の環境に合わせた.envファイルを用意することで、他の開発者や本番環境の設定に影響を与えることなく作業できる

手順

1. python-dotenvモジュールをインストールする

$ pip install python-dotenv

コマンドプロンプト上あるいはVSCodeのターミナル上で、pipコマンドを使用して、python-dotenvモジュールをインストールします。

2.「.env」ファイルを作成する

ルートディレクトリの直下に以下の.envファイルを作成します。
自分の場合は前回記事で紹介したWebアプリケーションのプロジェクトがあるので、以下のようになります。

ディレクトリ構造
{プロジェクト名}/
├── static/
│   └── style.css
├── templates/
│   └── index.html
│   └── result.html
│   └── error.html
├── app.py
└── .env 

自分はSpotify APIを使用していたので、.envファイルにそのクライアントIDとシークレットキーを記述しました。

.env
export SPOTIFY_CLIENT_ID='XXXXXXXXXXXX' 
export SPOTIFY_CLIENT_SECRET='YYYYYYYYYYY'

3.「.env」ファイルを読み込む

app.py
from dotenv import load_dotenv
import os

# .envファイルから環境変数を読み込む
load_dotenv()

#SpotifyAPIのアクセストークン情報
# 環境変数からSpotify APIのクライアントIDとシークレットを取得
client_id = os.getenv('SPOTIFY_CLIENT_ID')
client_secret = os.getenv('SPOTIFY_CLIENT_SECRET')

print(client_id) #client_idが表示される
print(client_secret) #client_secretが表示される

load_dotenv()を使用して.envファイルを読み込みます。これにより、.envファイルに書かれたアクセストークン情報が環境変数に設定されます。

そして、os.getenv()を使用して環境変数の値を取得します。print文で適切に表示されることを確認してください。該当の環境変数が存在しない場合、Noneが返されます。

「.gitignore」ファイルの作成

gitで管理する場合に.gitignoreファイルを作成し、その中にファイル名を書くことで、書かれたファイル名をgitの管理対象から外すことができます。
手順としては以下の通りです。ルートディレクトリの直下に以下の.gitignoreファイルを作成します。

ディレクトリ構造
{プロジェクト名}/
├── static/
│   └── style.css
├── templates/
│   └── index.html
│   └── result.html
│   └── error.html
├── app.py
├── .env
└── .gitignore
.gitignore
.env

上記のように作成することで、GitHubにpublicでプロジェクトを公開しても、.gitignoreファイルのおかげで、.envファイルは公開されずに済みます。

終わりに

今回は、APIアクセストークンなどの環境変数のセキュアな管理方法についてまとめました。次回以降では、GitやDockerの操作方法などを書こうと思います。

参考文献

以下の記事を参考にしました。ありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0