1
/
5

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

こんにちは!ナイトレイインターン生の鈴木です。

こちらではナイトレイのエンジニアがどのようなことをしているか知っていただきたく、Qiitaに公開している記事をストーリーに載せています。

今回はWantedly&Qiita初登場のエンジニア船津さんの記事です!船津さんはプログラミングスクールでLaravelを使ったWeb開発を勉強された後、ナイトレイにジョインしました。

少しでも私たちに興味を持ってくださった方は下に表示される募集記事もご覧ください↓↓


環境変数とは

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


環境変数の種類

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してくれます。複数プロジェクトを扱っている時に、便利な機能のようです。

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

direnvを使おう - Qiita
direnvとは?ディレクトリ毎に環境変数を定義して、そのディレクトリがカレントになった時だけ環境変数を有効/無効にしてくれるツール。開発中のアプリ毎に環境変数を変えたい時に重宝する。リポジトリ...
https://qiita.com/kompiro/items/5fc46089247a56243a62
direnvを使うときは環境変数を.envrcに書くより.envに書いた方が使い勝手が良い - ぷらすのブログ
ローカル開発時に環境変数を設定するためにdirenvを使っていますが、.envを使うことで環境変数の設定が楽になりました。
https://blog.p1ass.com/posts/direnv-dotenv/


最後に

私たちの会社、ナイトレイでは一緒に事業を盛り上げてくれるエンジニアを募集しています!
Web開発メンバー、GISエンジニア、サーバーサイドエンジニアなど複数ポジションで募集しているため、
「専攻分野を活かしたい」「横断的に様々な業務にチャレンジしてみたい」と言ったご要望も相談可能です!

✔︎ GISの使用経験があり、観光・まちづくり・交通・防災系などの分野でスキルを活かしてみたい
✔︎ ビッグデータの処理が好き!(達成感を感じられる)
✔︎ データベース構築、サーバー周りを触るのが好き
✔︎ 社内メンバーだけではなく顧客とのやり取りも実はけっこう好き
✔︎ 自社Webサービスの開発で事業の発展に携わってみたい
✔︎ 地理や地図が好きで、位置情報データにも興味を持っている

一つでも当てはまる方は是非お気軽に「話を聞きに行きたい」ボタンを押してください!

Invitation from 株式会社ナイトレイ
If this story triggered your interest, have a chat with the team?
株式会社ナイトレイ's job postings

Weekly ranking

Show other rankings
Like 鈴木 梨子's Story
Let 鈴木 梨子's company know you're interested in their content