設定と環境設定
最終更新日 2025年04月03日(木)
単一のアプリは、常に複数の環境 (最低でも開発用マシンと Heroku の本番環境など) で実行されます。オープンソースのアプリは、何百もの異なる環境にデプロイされる可能性があります。
すべての環境で同じコードが実行される場合もありますが、通常は環境固有の設定が使用されます。たとえば、アプリのステージング環境と本番環境とでは別の Amazon S3 バケットを使用することが多く、その場合はバケットごとに別の資格情報も必要になります。
アプリの環境固有の設定は、(アプリのソースコードではなく) 環境変数に保存します。各環境の設定を個別に変更でき、機密性の高い資格情報がバージョン管理に保存されるのを防ぐことができます。環境に設定を保存するについての詳細は、こちらを参照してください。
従来型のホストでは、またはローカルで作業するときは、多くの場合、.bashrc
ファイルで環境変数を設定します。Heroku では、環境設定を使用します。
環境設定を管理する
いずれかの方法で環境設定を設定または削除するたびに、アプリが再起動され、新しいリリースが作成されます。
環境設定の値は持続的です。デプロイしたりアプリを再起動したりしても変わりません。値を変更する必要がない限り、設定する必要があるのは 1 回のみです。
Heroku CLI を使用する
[Heroku CLI](heroku-cli) の `heroku config` コマンドを使用すると、アプリの環境設定を簡単に管理できます。現在の環境設定の値を表示する
“`term $ heroku config GITHUB_USERNAME: joesmith OTHER_VAR: production $ heroku config:get GITHUB_USERNAME joesmith ”`環境設定を設定する
“`term $ heroku config:set GITHUB_USERNAME=joesmith Adding config vars and restarting myapp… done, v12 GITHUB_USERNAME: joesmith ”`環境設定を削除する
“`term $ heroku config:unset GITHUB_USERNAME Unsetting GITHUB_USERNAME and restarting myapp… done, v13 ”`Heroku Dashboard を使用する
Heroku Dashboard で、アプリの Settings
(設定) タブから環境設定を編集することもできます。
Platform API を使用する
Heroku Platform API で、シンプルな HTTPS REST クライアントと JSON データ構造を使用して、プログラムでアプリの環境設定を管理することができます。アプリの適切なアクセス許可を持つユーザーを表す、有効な Heroku アクセストークンが必要です。
コードから環境設定の値にアクセスする
環境設定は、アプリのコードでは環境変数として示されます。たとえば、Node.js では、process.env.DATABASE_URL
でアプリの DATABASE_URL
環境設定にアクセスできます。
Common Runtime では、監査の目的で出力をログに送信する前に、コードコマンドで参照される環境設定の値を拡張します。アプリコードが標準出力 (stdout) または標準エラー (stderr) に書き込む機密環境変数への直接参照は使用しないでください。
例
次のコマンドを実行して、S3 アカウントキーの環境設定を追加します。
$ cd myapp
$ heroku config:set S3_KEY=8N029N81 S3_SECRET=9s83109d3+583493190
Setting config vars and restarting myapp... done, v14
S3_KEY: 8N029N81
S3_SECRET: 9s83109d3+583493190
追加した環境設定を実行時に読み込むコードを設定します。たとえば、Ruby では、ENV['KEY']
パターンを使用して環境変数にアクセスするため、次のようにイニシャライザを記述できます。
AWS::S3::Base.establish_connection!(
:access_key_id => ENV['S3_KEY'],
:secret_access_key => ENV['S3_SECRET']
)
Node.js では、process.env
を使用して環境変数にアクセスします。
const aws = require('aws-sdk');
let s3 = new aws.S3({
accessKeyId: process.env.S3_KEY,
secretAccessKey: process.env.S3_SECRET
});
Java では、次のように、System.getenv('key')
の呼び出しを通じて環境変数にアクセスします。
S3Handler = new S3Handler(System.getenv("S3_KEY"), System.getenv("S3_SECRET"))
Python では、boto ライブラリを使用します。
from boto.s3.connection import S3Connection
s3 = S3Connection(os.environ['S3_KEY'], os.environ['S3_SECRET'])
Heroku にデプロイした後、アプリで環境設定のキーセットを使用します。
環境設定スコープ
Cedar 世代のアプリの場合、環境設定はビルド時と実行時に利用できます。
Fir 世代のアプリの場合、デフォルトでは環境設定は実行時にのみアクセスできます。Heroku Labs Build Time Config Vars 機能を有効にすると、ビルド時と実行時の両方で環境設定を利用できるようにすることができます。
環境設定のポリシー
- すべてのプログラミング言語およびシェルからアクセスできるように、環境設定のキーには英数字とアンダースコア (
_
) のみを使用し、最初の文字は数字を避けてください。環境設定のキーにハイフンを含めることはできません。 - 環境設定のデータ (すべてのキーと値の組み合わせ) は、各アプリにつき 64 KB 以内にする必要があります。
- 環境設定のキーの先頭に二重のアンダースコア (
__
) を使用することはできません。 - Heroku プラットフォームで設定されている場合を除き、環境設定のキーの先頭に
HEROKU_
を使用することはできません。
アドオンと環境設定
アプリにアドオンをプロビジョニングすると、通常はそのアドオンの環境設定がアプリに追加されます。追加された環境設定の値は、随時、アドオンのプロバイダーによって更新される可能性があります。
アドオンとアドオンによる環境設定の使用方法についての詳細は、「アドオンの値が変更される可能性」を参照してください。
ローカルの設定
アプリをローカルで実行するには、Heroku Local コマンドラインツールを使用します。
本番モードと開発モード
多くの言語やフレームワークで、開発モードがサポートされています。開発モードでは、通常、詳細なデバッグと、ソースファイルが変更された場合の動的なリロード(再読み込み)や再コンパイルを行うことができます。
たとえば、Ruby 環境では、RACK_ENV
環境設定を development
に設定すると、開発モードを有効にできます。
本番の Heroku アプリでは、このような環境設定を理解し、追跡することが重要です。開発モードは、通常、開発には適していますが、パフォーマンスが低下するため、本番環境には適していません。