LoginSignup
2
1

新人エンジニアが環境変数と.envなどについて調べたのでメモ

Last updated at Posted at 2024-02-15

環境変数とは

環境変数とは、その名の通り、コンピュータやプログラムが動く環境を設定するための変数です。

環境変数の種類

Web開発初心者だと、「環境変数=.env に書くもの」というイメージがあるかもしれません(私だけ?)が、実情はだいぶ違いました。

.envに書かない環境変数

OSレベルで設定されている環境変数や、フレームワークのデフォルト設定など、開発者が自ら設定しなくて良い環境変数があります。これらは、外部の設定に依存しているので、セキュリティ上問題がないため、敢えて隠しファイルに記入しなくても良いとも言えます。

.envに書く環境変数

開発物の秘密情報や、プロジェクト固有の設定など、.envに書くべき環境変数もあります。

.envは、ソースコードから分離しているため、外部に漏らしたくない情報を管理するのに適しています。例えば、DBのパスワードやAPIキーがその例です。DBパスワードが流出して、自社の大切なデータが奪われてしまったり、有料のAPIを無断で利用されたりするリスクを防ぐことができます。

また、開発環境と本番環境でDBを切り替える場合なども、.envで設定しておくと便利です。

ちなみに、ソースコードの中に定義されている環境変数はハードコードと呼ばれ、envファイルに集約することが望ましいようです。pythonの静的解析チェックツールのRuffでも指摘されます。

【おまけ】python開発におけるdotenvとdirenv

初めて携わった開発ではdotenv、これから携わる開発ではdirenvが使われていたので、簡単に違いを調べてみました。

python-dotenv

プログラミング言語のフレームワークには、.envの情報を扱うパッケージが用意されているようです。python-dotenvは、pythonにおけるそれ。公式ドキュメント( https://pypi.org/project/python-dotenv/ ) には、”Python-dotenv reads key-value pairs from a .env file and can set them as environment variables.”と書いてあるように、キーとバリューのペアを、プログラム内で読み込むために用いられます。

【使い方】

①読み込みメソッドであるload_dotenvをimportする

from dotenv import load_dotenv

load_dotenv()でファイルパスを取得する

同じ階層にある場合は、パスは不要です。別フォルダの場合は下記のように、osライブラリを用います。

import os
env_path = os.path.join(os.path.dirname(file),パス)
load_dotenv(env_path)

③変数を取り出す

変数 =os.environ.get(環境変数のキー)

direnv

一言で言うと、フォルダごとに違う環境変数を読み込むときに便利なツールです。フォルダ内に.envrcというファイルを作っておくと、.envrcより下の階層に入った時にだけ、自動的に環境変数が読み込まれ、外の階層に出ると、自動的にunloadしてくれます。複数プロジェクトを扱っている時に、便利な機能のようです。

使い方は、下記サイトを参考にしました。

2
1
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
2
1