IT-Q

環境ごとに違う設定値の扱い方として正しいのはどれですか。

環境依存の値は .env に置き、config/ の中で env() を読み、アプリからは config() 経由で参照します。リポジトリには .env.example だけを入れ、本番の値は含めません。

面接官が見ているのは.env と config の関係を理解しているか。

よくある答えと、面談でどう見られるか

  • .env に置き、config/ の中で env() を読み、アプリからは config() 経由で参照する
    これが原則です。.env はリポジトリに入れず、本番はサーバー上に権限を絞って置きます。
  • どこからでも env() を直接呼んでよい
    config:cache を実行すると .env が読み込まれなくなり、config/ の外の env() はシステム環境変数しか見なくなります。定番の事故です。
  • config/ に直接値を書き、環境ごとにファイルを分ける
    動きますが、秘密情報がリポジトリに入ります。値は .env、構造は config/ が原則です。
  • すべて定数としてコードにハードコードする
    環境ごとにコードを変えることになり、秘密情報もリポジトリに入ります。

面接官は何を見ているか

  • .env と config/ の役割分担を説明できた
  • .env をリポジトリに含めないと言えた
  • 本番の .env の配置・権限に触れた

模範解答

環境依存の値は .env に置き、config/ のファイルから env() で読んで、アプリコードは config() 経由で参照します。.env はリポジトリに含めず、.env.example だけをコミットします。本番の .env はサーバー上に直接置き、権限を絞ります(600)。鍵やパスワードがリポジトリに入ると、履歴から消すのが非常に面倒になります。

ここからどう深掘りされるか

この問いに答えられた場合、面談は次の質問に進みます。