§Play アプリケーションの構造
§Play アプリケーションの構成
Play アプリケーションの構成は、できるだけシンプルさを重視して標準化されています。正常にコンパイルされた後の Play アプリケーションの構成は、以下のようになっています:
app → アプリケーションソース
└ assets → コンパイルされたアセットソース
└ stylesheets → 通常は LESS CSS ソース
└ javascripts → 通常は CoffeeScript ソース
└ controllers → アプリケーションコントローラ
└ models → アプリケーションビジネス層
└ views → テンプレート
build.sbt → アプリケーションビルドスクリプト
conf → 設定ファイル、および (クラスパス上の) その他のコンパイルされないリソース
└ application.conf → メイン設定ファイル
└ routes → ルート定義
dist → プロジェクト成果物に含める任意のファイル
public → 公開アセット
└ stylesheets → CSS ファイル
└ javascripts → Javascript ファイル
└ images → 画像ファイル
project → sbt 設定ファイル群
└ build.properties → sbt プロジェクトの目印
└ plugins.sbt → Play 自身の定義を含む sbt プラグイン
lib → 管理されていない依存ライブラリ
logs → ログフォルダ
└ application.log → デフォルトログファイル
target → 生成物
└ resolution-cache → 依存性に関する情報
└ scala-2.10
└ api → 生成された API ドキュメント
└ classes → コンパイルされたクラスファイル
└ routes → routes から生成されたソース
└ twirl → テンプレートから生成されたソース
└ universal → アプリケーションパッケーs時
└ web → コンパイルされた web アセット
test → 単体、および機能テスト用のソースフォルダ
§app/
ディレクトリ
app
ディレクトリには、実行可能な全てのコードが含まれます。Java や Scala のコードや、テンプレート、LESS や CoffeeScript のような、別の言語へコンパイルされるアセットのソースファイルなど、全てです。
app
ディレクトリには、それぞれが MVC アーキテクチャパターンと対応する 3 つのパッケージがあります:
app/controllers
app/models
app/views
もちろん、app/utils
のような独自のパッケージの作成しても問題ありません。
Play では、
controllers
,models
,views
というパッケージ名はゆるい規約で、必要であれば (例えば、全てのパッケージにcom.yourcompany
という接頭辞をつけると言ったように) 変更することができます。
この 3 つ以外にも、必須ではありませんが app/assets
というディレクトリがあります。ここには、LESS や CoffeeScript sources のような、別の言語へコンパイルされるアセットのソースファイルを置きます。
§public/
ディレクトリ
public/
ディレクトリに保存されたリソースはいわゆる静的コンテンツとなり、Web ブラウザへそのまま送信されます。
このディレクトリには、画像ファイル、CSS スタイルシート、JavaScript ファイル用の 3 つのサブディレクトリがあります。全ての Play アプリケーションが似たような構成になるように、静的コンテンツはこれらのディレクトリに入れておくと良いでしょう。
ちなみに、アプリケーションを新規作成した状態では、
public/
ディレクトリが/assets
という URL パスに対応付けされています。これはいつでも変更できます。また、静的コンテンツを複数のディレクトリに分散させることもできます。
§conf/
ディレクトリ
conf
ディレクトリにはアプリケーションの設定ファイルを入れます。主な設定ファイルは次の二つです。
application.conf
という、設定パラメータを含むアプリケーションのメイン設定ファイル。routes
という、ルート定義ファイル。
もし、アプリケーション独自の設定を追加したい場合は、application.conf
に設定項目を追加すると良いでしょう。
また、ライブラリ独自の設定ファイルは、conf
ディレクトリに配置すると良いでしょう。
§lib/
ディレクトリ
lib
ディレクトリは必須ではありませんが、ビルドシステムの管理外におきたい jar ファイルなど、全ての管理されないライブラリ依存性を含みます。jar ファイルこのディレクトリに配置しておくだけで、アプリケーションのクラスパスに追加されます。
§build.sbt
ファイル
通常、プロジェクトの主要なビルド定義はプロジェクトルートにある build.sbt
に書かれます。project/
ディレクトリにある .scala
も、プロジェクトのビルドを定義するために使うことができます。
§project/
ディレクトリ
project
ディレクトリは、sbt のビルド定義を含みます。
plugins.sbt
は、このプロジェクトで使う sbt プラグインの定義ファイルです。build.properties
には、このアプリケーションをビルドするために使用する sbt のバージョンが含まれています。
§target/
ディレクトリ
target/
ディレクトリには、Play のビルドシステムによって生成された全てのファイルが入ります。何が生成されるのか覚えておくと良いでしょう。
classes/
には、Java や Scala のコードからコンパイルされたクラスファイルが入ります。classes_managed/
には、Play が管理しているクラス (例えば、ルータやテンプレートシステムによって生成されたクラスなど) が入ります。IDE をお使いの場合は、このディレクトリへクラスパスを通しておくと便利でしょう。resource_managed/
には、Play によって生成されたリソースが含まれます。例えば、LESS CSS や CoffeeScript からトランスコンパイルされた CSS ファイル や JavaScript ファイルは、このディレクトリに配置されます。src_managed/
には、テンプレートシステムが生成した Scala コードなど、Play によって生成されたソースが含まれます。web/
には、app/assets
とpublic
とフォルダから sbt-web によって生成されたアセットが含まれます。
§よく使う .gitignore
ファイル
Play によって生成されたディレクトリは、バージョン管理システムに無視させるべきでしょう。Play アプリケーションで典型的な .gitignore
ファイルの内容を以下に示します。
logs
project/project
project/target
target
tmp
dist
.cache
§デフォルトの SBT 構成
SBT および Maven で使われるデフォルトの構成を使うオプションもあります。この構成は実験的で、問題を含むかもしれない点に注意してください。この構成を使うには、disablePlugins(PlayLayoutPlugin)
を使います。これで Play が以下に示すデフォルトの SBT 構成を上書きしないようになります:
build.sbt → アプリケーションビルドスクリプト
src → アプリケーションソース
└ main → コンパイルされたアセットソース
└ java → Java ソース
└ controllers → Java コントローラ
└ models → Java ビジネス層
└ scala → Scala ソース
└ controllers → Scala コントローラ
└ models → Scala ビジネス層
└ resources → 設定ファイル、および (クラスパス上の) その他のコンパイルされないリソース
└ application.conf → メイン設定ファイル
└ routes → ルート定義
└ twirl → テンプレート
└ assets → コンパイルされたアセットソース
└ css → 通常は LESS CSS ソース
└ js → 通常は CoffeeScript ソース
└ public → 公開アセット
└ css → CSS ファイル
└ js → Javascript ファイル
└ images → 画像ファイル
└ test → 単体または機能テスト
└ java → 単体、および機能テスト用の Java ソースフォルダ
└ scala → 単体、および機能テスト用の Scala ソースフォルダ
└ resources → 単体、および機能テスト用のリソースフォルダ
└ universal → プロジェクト成果物に含める任意のファイル
project → sbt 設定ファイル群
└ build.properties → sbt プロジェクトの目印
└ plugins.sbt → Play 自身の定義を含む sbt プラグイン
lib → 管理されていない依存ライブラリ
logs → ログフォルダ
└ application.log → デフォルトログファイル
target → 生成物
└ scala-2.10.0
└ cache
└ classes → コンパイルされたクラスファイル
└ classes_managed → 管理されたクラスファイル (テンプレート, ...)
└ resource_managed → 管理されたリソース (less, ...)
└ src_managed → 生成されたソース (テンプレート, ...)
Next: Play チュートリアル
このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。