
環境変数を活用してみよう 〜第1回環境変数って何?〜
こんにちは、開発チームのry023です!
開発チームを中心に、ロリポップ!マネージドクラウドで利用する上でのTipsや、マネージドクラウドを使ってできる色々なことを紹介して行きます。
今回は、環境変数についてお話しします。今回から複数回に渡って、「環境変数とは何か?」から、具体的な利用用途までお話しますので、興味を持たれた方は是非ご一読ください。
マネージドクラウドの管理画面では、起動するコンテナに対して環境変数を設定することが可能です。
設定画面を開くとこのような感じです。名前・値の組みで設定できます。
今回は、「そもそも環境変数とは何ぞや? どういう時に使えるの??🤔」というお話をしたいと思います。
この記事では Ruby on Rails を例にしながらお話を進めていきますが、基本的にはどのようなアプリケーションの開発であっても共通する概念です。是非、別の言語で開発されてる方や別の種類のプロジェクトをご利用の方もご覧いただければと思います!
それで、環境変数って何?
環境変数とは、OS上で動作するプロセスでデータを共有するための仕組みです。
簡単に言うと、「そのサーバ上で動いているアプリケーションだけが参照できる変数」です。
マネージドクラウドのサーバにsshログインして env コマンドを実行すると、ご利用のプロジェクトが参照できる全ての環境変数一覧を見ることができます。
※ sshログインをするためには、マネージドクラウドへの公開鍵の登録が必要です。下記マニュアルをご参照ください。
diligent-amakusa-6549@gitpush-ruby-lolipop-environments:~$ env
TERM=xterm-256color
SHELL=/usr/local/bin/gitpush-shell
SSH_CLIENT=10.1.0.1 58072 22
SSH_TTY=/dev/pts/0
USER=diligent-amakusa-6549
SSH_AUTH_SOCK=/tmp/ssh-wUIBX56tDS/agent.17
MAIL=/var/mail/diligent-amakusa-6549
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
PWD=/var/app
SHLVL=1
HOME=/var/app
LOGNAME=diligent-amakusa-6549
SSH_CONNECTION=10.1.0.1 58072 10.1.0.93 22
_=/usr/bin/env
一行が一つの環境変数に対応しており、 <環境変数名>=<値> という関係です。
例えば、USERはsshでログインした際のユーザ名、HOMEはホームディレクトリの場所を表しています。
もし、お使いのパソコンが、MacやUbuntuなどターミナルがご利用いただける環境であるならば、同様にお手元でも env コマンドで環境変数の一覧が見れます。こちらの場合、お手元のパソコンに設定されている環境変数の一覧になります。
どういう時に使うものなの?
その環境でのみ利用したい変数を記述したい時に便利です。
例えば、次のような使い方があります。
● 手元のパソコンでの開発環境と、マネージドクラウドでの本番環境を区別するためのフラグとして使う
● ソースコードに直接記述したくないようなトークンなどの秘匿情報を、環境変数に設定して読み出して利用する
● ライブラリやフレームワークが使用する環境変数を書いておくことで、ライブラリ等の設定を変更する
環境変数は自分でも設定して、利用できる
さて、先ほどenvコマンドで見たように環境変数はsshサーバやログインシェル、あるいはその環境のツール、ライブラリなど、様々なものによって設定されています。
ところで、環境変数は自分で独自に追加して、自分のアプリケーションで利用することもできます。
試しに追加してみましょう! マネージドクラウドのRailsプロジェクトに、HELLO=WORLD という環境変数を設定してみます。管理画面のプロジェクト詳細ページの環境変数の設定と管理から、環境変数の設定画面に移動します。
以下のように設定してみましょう! 登録内容を反映するを押すまで反映されないのでご注意ください。
※ 詳しくは、ヘルプページのアプリケーションに環境変数を設定するの管理画面からの設定手順の項目もご参照ください。
さて、もう一度sshログインして env を実行してみると、先ほど追加した環境変数が増えています(※ ログインしたまま環境変数を変更された場合、一度ログインし直す必要がある場合があります)
diligent-amakusa-6549@gitpush-ruby-lolipop-environments:~$ env
TERM=xterm-256color
SHELL=/usr/local/bin/gitpush-shell
HELLO=WORLD
...(以下割愛)
もちろんアプリケーションでも読むことができます。
rubyから実行して読めるか確認してみます。irbコマンドで試してみましょう。
diligent-amakusa-6549@gitpush-ruby-lolipop-environments:~$ irb
irb(main):001:0> puts ENV['HELLO']
WORLD
=> nil
設定した環境変数 HELLO の値 WORLD を表示することができましたね!
同じ要領でRuby on Railsのコード中でも
ENV['環境変数名']
と書くと、環境変数を読み出して利用することができます。
上記はRubyでの例ですが、その環境であればどんな言語のコードでも利用できますので、是非お使いの言語での環境変数の参照の仕方を調べてみてください。
いかがでしたでしょうか。今回は「環境変数とは何か」という簡単な概要のご説明と、マネージドクラウドに設定する方法までご紹介しました。
次回は、より具体的なユースケースとして「手元のパソコンでの開発環境と、マネージドクラウドでの本番環境を区別するためのフラグとして使う」方法をご紹介します!