カテゴリ: Play Framework 更新日: 2026/02/08

Play Frameworkでの設定ファイルの外部化!環境変数・Docker・Kubernetes対応

configの外部化(環境変数・Docker・K8s対応)
configの外部化(環境変数・Docker・K8s対応)

先生と生徒の会話形式で理解しよう

生徒

「Play Frameworkでアプリを作ったんですけど、開発環境と本番環境で設定を変えたいです。」

先生

「それなら、configの外部化を使うと便利です。環境変数やDocker、Kubernetesでも同じ設定を使えます。」

生徒

「configの外部化ってどうやってやるんですか?」

先生

「順を追って説明しますね。Play FrameworkはHOCON形式のapplication.confを使いますが、外部化することで環境ごとに設定を切り替えられます。」

1. configの外部化とは?

1. configの外部化とは?
1. configの外部化とは?

Play Frameworkのconf/application.confにはデータベース接続やポート番号、APIキーなどを設定します。しかし、開発環境や本番環境で同じファイルを使うと設定が混ざってしまいます。そこで、外部化を行うことで、環境ごとに設定を変更できるようにします。

外部化には主に以下の方法があります。

  • 環境変数を利用する
  • Dockerコンテナに設定を渡す
  • Kubernetes ConfigMapやSecretを利用する

2. 環境変数を使った設定外部化

2. 環境変数を使った設定外部化
2. 環境変数を使った設定外部化

Play Frameworkでは${VAR_NAME}形式で環境変数を参照できます。例えば、データベースのURLを環境変数にすると、ローカル開発と本番環境で異なる値を簡単に切り替えられます。


# conf/application.conf
db.default.url = ${DB_URL}
db.default.username = ${DB_USER}
db.default.password = ${DB_PASSWORD}

この場合、実行前に環境変数を設定しておきます。


export DB_URL="jdbc:postgresql://localhost:5432/mydb"
export DB_USER="user"
export DB_PASSWORD="pass"
sbt run

これで開発環境ごとに設定を変更できます。

3. Docker環境での設定外部化

3. Docker環境での設定外部化
3. Docker環境での設定外部化

DockerでPlay Frameworkを実行する場合、環境変数や.confファイルをコンテナに渡すことで設定を外部化できます。


docker run -e DB_URL="jdbc:postgresql://db:5432/prod" \
           -e DB_USER="produser" \
           -e DB_PASSWORD="prodpass" \
           my-play-app

また、Docker Composeを使うと複数サービスの設定を一元管理できます。

4. Kubernetes(K8s)対応

4. Kubernetes(K8s)対応
4. Kubernetes(K8s)対応

KubernetesではConfigMapやSecretを使って設定を外部化します。ConfigMapは一般的な設定用、SecretはパスワードやAPIキーのような機密情報用です。


apiVersion: v1
kind: ConfigMap
metadata:
  name: play-config
data:
  DB_URL: "jdbc:postgresql://db:5432/prod"
  DB_USER: "produser"
---
apiVersion: v1
kind: Secret
metadata:
  name: play-secret
type: Opaque
data:
  DB_PASSWORD: cHJvZHBhc3M=  # base64でエンコード

Pod定義で環境変数として注入すれば、Play Frameworkは同じapplication.confを使いながら環境ごとに設定を切り替えられます。

5. 外部化のメリット

5. 外部化のメリット
5. 外部化のメリット
  • 開発環境・本番環境で設定を簡単に切り替えられる
  • DockerやKubernetesでも同じ設定ファイルで動作する
  • セキュリティ上、パスワードやAPIキーをコードに書かずに管理できる
  • CI/CD環境でも柔軟に設定を切り替え可能

Play Frameworkでのconfig外部化は、現代のクラウドネイティブ開発において非常に重要な技術です。初めは少し難しく感じますが、環境変数、Docker、Kubernetesを順に学ぶことでスムーズに運用できます。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

質問1:Play Frameworkの「設定ファイルの外部化」とは具体的にどのような意味ですか?初心者にもわかりやすく教えてください。

回答:Play Frameworkにおける設定ファイルの外部化とは、データベースの接続情報やAPIキーといったアプリケーションの動作に必要な設定値を、プログラムのソースコードやビルドされたパッケージ(JARファイルなど)の内部に直接書き込むのではなく、プログラムの外部から読み込めるように切り離して管理することを指します。通常、Play Frameworkでは「conf/application.conf」というファイルに設定を記述しますが、これをそのまま本番環境でも使ってしまうと、開発用のテストデータベースに接続されてしまったり、機密情報が漏洩したりするリスクがあります。外部化を行うことで、ソースコードは全く同じまま、開発環境、テスト環境、ステージング環境、そして本番環境といった異なる実行環境に合わせて、環境変数や外部の設定ファイルから動的に値を注入できるようになります。これにより、安全かつ柔軟なアプリケーション運用が可能になります。
カテゴリの一覧へ
新着記事
New1
Jakarta EE
Jakarta EEとクラウドネイティブ開発の相性とは?初心者向けにわかりやすく解説
New2
Jakarta EE
JakartaEE JSPのリクエスト属性とスコープの基本を徹底解説!初心者向け入門ガイド
New3
Play Framework
Play Frameworkのビューテストを徹底解説!Twirlテンプレートの品質を高める方法
New4
Jakarta EE
JakartaEE フィルタで認証と認可を実装する方法を初心者向けに解説!サーブレットのセキュリティ入門
人気記事
No.1
Java&Spring記事人気No1
Jakarta EE
Jakarta EEとSpringの比較|どちらを選ぶべきか?初心者向けに徹底解説!
No.2
Java&Spring記事人気No2
Play Framework
Play Frameworkのビューを共通化!テンプレート間のインクルード方法を徹底解説
No.3
Java&Spring記事人気No3
Play Framework
Play Frameworkプロジェクト作成直後にやるべき初期設定ガイド!初心者でも安心
No.4
Java&Spring記事人気No4
Jakarta EE
Jakarta サーブレットのHttpServletRequestを徹底解説!初心者でもわかる基本操作と使い方
No.5
Java&Spring記事人気No5
Play Framework
Play Frameworkで多言語対応(i18n)を徹底解説!Twirlテンプレートでの使い方
No.6
Java&Spring記事人気No6
Play Framework
Play FrameworkでCSSやJavaScriptを読み込む方法を徹底解説!静的リソースの組み込みガイド
No.7
Java&Spring記事人気No7
Jakarta EE
Jakarta EEの標準仕様とAPI一覧を完全解説!初心者でもわかるエンタープライズJavaの基本
No.8
Java&Spring記事人気No8
Jakarta EE
Jakarta EEとJava EEアプリの互換性を完全解説!移行で困らないための基礎知識