Laravelで本番や開発環境など環境ごとに変わる値は、envとconfigで対応しよう!

Laravel
  • URLをコピーしました!

Laravel で開発をしていると、本番環境や開発環境など、いくつかの環境ごとに定数が異なる場合があります。
そういうときには、envとconfigで対応し、インフラ担当者と相談して環境ごとの値に対応していきます。

よくある例が、接続先URLです。
例えば、

  • 本番環境では、 https://tutinoko.tech/api に接続したい。
  • 開発環境では、 http://localhost:8080/api に接続したい。

という場合を考えてみましょう。

configだけを使ってやろうとすると、例えばこうなります。

return [
  // アクセス先URL
  'tutinokoapi' => [
    'prod' => 'https://tutinoko.tech/api',
    'test' => 'http://localhost:8080/api'
  ]
];
/**
 * URLの取得
 * @return string URL
 */
public function getUrl() : string
{
  if (config("app.env") === "production") {
    return config("services.tutinokoapi.prod");
  } else {
    return config("services.tutinokoapi.test");
  }
}

こういう形で書いてしまうと、どんな場所でも、必ず「本番環境ではXXする」「開発環境ではXXする」という記述をずっと書く必要があります。テストも大変困難です。

そこで、envを利用します。
上のソースコードをenvを使って表現することで、わかりやすくなります。

return [
  // アクセス先URL
  'tutinokoapi' => env('SAMPLE_TUTINOKO_URL'),
];
/**
 * URLの取得
 * @return string URL
 */
public function getUrl() : string
{
  return config("services.tutinokoapi");
}
SAMPLE_TUTINOKO_URL="http://localhost:8080/api"

.env ファイルは、環境ごとに置き換えるファイルです。
上の例では、開発環境用に、SAMPLE_TUTINOKO_URL を定義しました。
本番環境では、この .env ファイルの定義を変更して、 SAMPLE_TUTINOKO_URL="https://tutinoko.tech/api" とします。

インフラ担当や設計担当者が、接続先をあらかじめ設定しておくことで、開発者は自分の接続先は .env に定義されたものを利用すればよくなります。外部のAPIを利用する際など、環境ごとに異なる値が出てくる場合は、まずは .env → config を設定し、チーム内で config のどの値を使うとこのデータが取得できると周知していきましょう。

ツチノコテクノロジーでは一緒に働く仲間を募集しています!

完全リモートで働きたい方へ!

詳しくは以下をご覧ください。

ツチノコテクノロジー採用サイト

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ツチノコテックアカデミアの記事は、社内で誰かが質問してくれたことに回答したときに、ついでに記載しています!(^^)/
みんなの悩みを共有すれば、きっと誰かの役に立つと信じて更新しています!

目次