環境変数の設定方法
読む所要時間: 9 分
環境変数とは、その名が示すとおり環境を表すシステム内の変数です。最もよく知られている環境変数は、PATH
でしょう。この変数には、実行可能ファイルを格納したフォルダへのパスが含まれます。このPATH
を使用すれば、ターミナルに実行ファイルの完全なパスを記述することなく、実行ファイルの名前だけを記述できます。シェルは指定される実行ファイルについてローカルディレクトリだけでなく、PATH
変数で指定されたすべてのディレクトリをチェックします。
「組込み」変数のほかにも、自分で環境変数を定義できます。環境変数は環境に紐づけられるため、APIアクセストークンなどに最適です。開発マシンで特定の値に設定された変数を、if
文や特別な構成ファイルを用意せずに本番環境で別の値に設定できます。
たとえばTwilioヘルパーライブラリは、TWILIO_ACCOUNT_SID
とTWILIO_AUTH_TOKEN
の2つを渡さずにクライアントのインスタンスを作成した場合、環境変数を確認します。このしくみにより機密性の高い認証情報を誤ってGitHubなどの場所へプッシュしてしまう心配がなくなります。
Windowsの環境変数
Windows内の環境変数の設定は、何層もの設定ダイアログの中に隠されています。ここでは、Windowsのほとんどの機能と同様に、グラフィカルユーザーインターフェース(GUI)を使用して環境変数を設定します。各インターフェースを開くには、まず「ファイル名を指定して実行」プロンプトを開く必要があります。このプロントはWindows
キーとR
キーを同時に押すと起動します。入力フィールドにsysdm.cpl
と入力し、Enter
キーを押すか、OKを押します。
開いたウィンドウの[詳細設定]タブをクリックし、右下隅にある[環境変数]ボタンをクリックします。
このウィンドウには2つの異なるセクションがあります。1つは、ユーザーに固有の環境変数のリストです。そのため、ほかのユーザーは利用できません。もう1つのセクションには、すべてのユーザーで共有されるシステム全体の変数が含まれています。
ユーザー固有の変数を作成するには、ユーザー環境変数セクションの下にある[新規]ボタンをクリックします。プロンプトでは、変数の名前と値を指定できます。新しい変数をTWILIO_ACCOUNT_SID
という名前で作成し、コンソールからTwilioアカウントのSIDをコピーします。プロンプトで[OK]を押してこの変数を作成し、続いて環境変数ウィンドウで[OK]を押し完了です。
コマンドプロンプトを開き動作を確認します。Windows
キー+R
キーを押して、cmd.exe
と入力します。すでにコマンドプロンプトが開かれている場合、変更を確実に反映させるため再起動します。コマンドプロンプト内で次のコマンドを実行します。
これで、環境変数に保存した値が表示されます。
macOSおよびLinuxディストリビューション
macOSやUNIX系OSで環境変数を設定するには、どのシェルを実行しているかを確認する必要があります。確認するにはターミナルで次のコマンドを実行します。
コマンド実行すると、どのシェルを実行しているかが表示されます。一般的なシェルは、この例で使用するbash
シェルです。しかし、zsh
やfish
などほかのシェルでも手順は同じです。
環境変数の設定には、次のような形式のexportコマンドを使用する必要があります。
これでは現在のセッションでしか設定されないため、このコマンドをセッション毎に実行されるファイルへ追加します。ホームディレクトリにある.bashrc
ファイルを任意のコードエディタで開き、次の行を.bashrc
ファイルに追加します。
Twilioコンソールから、Account SIDをコピーし、youraccountsid
を置き換えます。編集したファイルを保存し、新しいターミナルインスタンスを開きます。このターミナルで次のコマンドを実行し、動作をテストします。
保存した値が表示されていれば成功です。
次にそれぞれのライブラリで環境変数を使用できます。Node.jsの場合は次のようになります。
環境変数をリポジトリにコミットしないように.env
ファイルを.gitignore
に必ず追加します。
クラウドプロバイダー
ローカルの開発マシンやVMに環境変数を設定することは、作業の半分に過ぎません。アプリケーションをHeroku、Azure、AWSなどのクラウド環境でホスティングしたり、Dockerコンテナにラップしたりする場合はどうすればよいでしょうか。幸運なことに、これらのプロバイダーはすべて、環境変数を定義する方法をサポートしています。設定方法については、各プロバイダーのドキュメントを参照してください。
このリストの中にお使いのクラウドホストがなくても、環境変数の設定方法がないというわけではありません。詳細については、各クラウドホストのドキュメントを確認してください。
まとめ
環境変数を用いて環境に依存する設定値をすべて取り除き、より柔軟で安全なコードを実装できます。
ただし、これらの値はプレーンテキストで保存されることに注意してください。非常に機密性の高い値を保存する場合は、Vaultのような機密ストレージソリューションを検討すべきです。
ご質問がある場合や、構築中のものを私と共有したい場合は、お気軽にdkundel@twilio.comまでメールを送信していただくか、Twitter @dkundelまでご連絡ください。
何を構築されるか、とても楽しみです!