環境変数とシェル変数の混同があったので少し修正いたしました(2024.02.05)
久々にNode-REDを復習してみようと考えて、Node-RED日本ユーザ会のホームページを眺めていました。
nodered.jp
そういえば、これまでに開発時に環境変数って使ったことあまりなかったなあと思い、どうやって使うんだっけ?という疑問がでてきたので、ちょっと調べてみたら、数種類の方法があったので学びなおすことにしました。
該当のページは以下となります。
nodered.jp
ご存じの方はこんな内容は読まないかなと思いますが…
環境変数(かんきょうへんすう、英語: environment variable)はオペレーティングシステム (OS) が提供するデータ共有機能の一つ。OS上で動作するタスク(プロセス)がデータを共有するための仕組みである。特にタスクに対して外部からデータを与え、タスクの挙動・設定を変更するために用いる。(Wikipediaより)
ja.wikipedia.org
OSが提供するデータ共有機能で、コンピュータの黎明期からかなり使われている機能です。一般的な例としてはPATH
などを通すというのもPATH
という環境変数にプログラムを実行するパスを事前登録するということで行っています。また最近はREST API
などの認証データの保存などにも使用されています。
環境変数にしたほうが良い情報
環境変数を利用する主な利点は、セキュリティの向上と設定の柔軟性です。重要なデータをソースコードから分離することで、誤ってリポジトリにコミットしたり、不必要に広範囲に晒したりするリスクを減らすことができます。また、環境変数を通じてアプリケーションの設定を外部から調整できるため、異なる環境や条件下での運用が容易になります。
すべてではありませんが、以下のような情報は環境変数にしたほうがよさそうです。
- 機密情報:パスワード、APIキー、秘密鍵などの機密性の高い情報。これらをソースコードに直接記述すると、セキュリティリスクが高まります。
- 設定情報:データベースの接続設定、外部サービスのエンドポイント、アプリケーションのポート番号など、環境に依存する設定情報。
- 環境依存の変数: 開発、テスト、本番など異なる環境で異なる値を使用する変数:バッグモードの有効化、ログの詳細レベル、リソースの割り当て量など。
- アプリケーションの動作をカスタマイズするためのフラグ:特定の機能のオン/オフや、機能の挙動を変更するためのフラグ。
- 外部リソースへのパス:ファイルシステムのパスやURLなど、外部リソースへの参照。
自分は結構コードにそのまま記載していることがほとんどでした。ちょっと反省です。
ということで、環境変数の設定に関して各処理系でまとめ、次回にNode-REDでの使用方法をまとめます。
20240205追記
macOS、Linux (bash環境)
に関してですが、下記表現の中で、一時的な環境変数
と、シェル変数
という言葉の混同がある部分があるようなので一部文面の修正を行っています。
⋆ シェル変数
とは
現在実行しているシェルの中だけで有効な変数。
⋆ 環境変数
とは
新たなシェルを起動したり、コマンドを実行した場合にも継承される変数となります。
ただ、現在実行しているシェル内で環境変数の設定をした場合には(export
コマンドを使用した場合)環境変数になりますが、
そのシェル内でのみ使用できる環境変数となります。
また、シェル変数は環境変数へと昇格(よい表現かわからないですが)することもできます。exportコマンド以降にシェル変数の定義ができるためです。
なかなか、分かりにくい表現になっていますが、一時的な環境変数というのは使用できるけれども、運用上はあんまり使用しないかなと考えています。
続きを読む