すでにPlay Framework 2.6が公開されていますが、Play Framework 2.5の設定方法について少しまとめておきます。
Play Frameworkの設定はデフォルトではapplication.confに書くようになっています。
application.confには何を書くか
DBやAkkaアクター、ログや自分で定義したい設定など、基本的に全ての設定を書きます。
application.confのロード
デフォルトでは classpath にある reference.conf がロードされます。Play Frameworkではデフォルトのセッティングとして reference.conf が定義されているのですが、 application.conf を記述することで任意の設定に上書きすることができます。
application.conf はJavaのシステムプロパティで上書きすることもできます。-Dhttp.port=1234
のような感じにします。
また application.conf の設定ファイル自体を置き換えることもできます。システムプロパティにconfig.resource
でdevelopment.conf
のように指定します。
application.confのフォーマット
Play Frameworkでは application.conf にHOCONと呼ばれるフォーマットで設定ファイルを記述します。 HOCONはJSONに似たフォーマットです。
sbt runで開発環境の設定をする
開発用にrun
コマンドでアプリケーションを起動するとき build.sbt に設定を追加することができます。
PlayKeys.devSettings := Seq("play.server.http.port" -> "8080")
のように設定します。
この設定はアプリケーションをデプロイするときには有効になりません。
run
コマンドではアプリケーションがコンパイルされる前にHTTP serverが起動します。そのためHTTP serverが起動した段階では application.conf からHTTP serverの設定を読み込むことはできません。HTTP serverを設定するにはシステムプロパティを使用するかdevSettings
を設定する必要があります。
HOCONシンタックス
HOCONはJSONに似ていますが、違う点について説明します。
同じ部分
- UTF-8を使う
- クオートしたstring
- string, number, object, array, boolean, null
コメント
//
と#
を使用します。
ルートのブレース
JSONではルートでobject({}
)かarray([]
)である必要がありますが、HOCONではルートでこれらの括弧は使用しません。
key-valueの区切り
:
の他に=
でもkey-valueを区切ることができます。
また、"foo": {}
を"foo" {}
のように書くことができます。
複数のkeyでパスを表現する
foo.bar : 42
はfoo { bar : 42 }
と同じ意味です。
a.x : 42, a.y : 43
はa { x : 42, y: 43 }
と同じ意味です。
代入
${?foo}
か${foo}
のようにすることでキーがfoo
の値を代入することができます。また代入するキーはルートからの絶対パスで指定する必要があります。
インクルード
他のファイルから設定を追加でインクルードすることができます。インクルードするファイルはオブジェクトである必要があります。 同じキーがあった場合は一番最後に評価(パース)された値に置き換えられます。
開発環境と本番環境のように環境別にDBの接続先などを変えたいときがあります。そのほかの設定が共通の場合、以下のように書くことができます。
base.conf
akka {
...
}
development.conf
include "base.conf"
# DB configs
development.conf から base.conf をインクルードすることで共通のAkkaの設定を追加することができます。
設定方法の一部を紹介しましたが、ここに書かれている内容はこちらに詳しく書かれています。