§Play 2.0 アプリケーションの構造
§アプリケーションの標準的なファイル構成
Play アプリケーションのファイル構成は、できるだけシンプルさを重視して標準化されています。Play アプリケーションの標準的なファイル構成は、以下のようになっています。
app → アプリケーションのソースコード
└ assets → 別の言語へコンパイルされるアセットのソースファイル
└ stylesheets → 通常は LESS CSS のソース
└ javascripts → 通常は CoffeeScript のソース
└ controllers → アプリケーションのコントローラ
└ models → アプリケーションのビジネスロジック層
└ views → テンプレート
conf → 設定ファイルおよびその他のコンパイルされていないリソース
└ application.conf → メイン設定ファイル
└ routes → ルート定義
public → 公開アセット
└ stylesheets → CSS ファイル
└ javascripts → JavaScript ファイル
└ images → 画像ファイル
project → sbt 設定ファイル
└ build.properties → sbt プロジェクトの基本ファイル
└ Build.scala → アプリケーションのビルドスクリプト
└ plugins.sbt → sbt プラグイン
lib → 管理されないライブラリ依存性
logs → デフォルトのログ保存場所
└ application.log → デフォルトのログファイル
target → Play により生成されたファイル
└ scala-2.9.1
└ cache
└ classes → コンパイルされたクラスファイル
└ classes_managed → Play 管理下のクラスファイル (テンプレートなど)
└ resource_managed → Play 管理下のリソース (less など)
└ src_managed → 生成された中間コード (テンプレートなど)
test → 単体テストや機能テストのソースフォルダ
§app/ ディレクトリ
app
ディレクトリには、実行可能な全てのコードが含まれます。Java や Scala のコードや、テンプレート、LESS や CoffeeScript のような、別の言語へコンパイルされるアセットのソースファイルなど、全てです。
app
ディレクトリには 3 つのパッケージがあります。それぞれ、MVC パターンに登場する 3 つのコンポーネントに対応します。
app/controllers
app/models
app/views
もちろん、app/utils
のような独自のパッケージの作成しても問題ありません。
Play 2.0では、
controllers
、models
、views
というパッケージ名はゆるい規約で、必要なら変更することができます(例えば、全てのパッケージにcom.yourcompany
というプレフィックスをつけるとか)。
この 3 つ以外にも、必須ではありませんが app/assets
というディレクトリがあります。ここには、LESS や CoffeeScript のような、別の言語へコンパイルされるアセットのソースファイルを置きます。
§public/ ディレクトリ
public/
ディレクトリに保存されたリソースはいわゆる静的コンテンツとなり、Web ブラウザへそのまま送信されます。
このディレクトリには、デフォルトで 3 つのサブディレクトリがあります。それぞれ、画像ファイル、CSS ファイル、JavaScript ファイルを入れます。全ての Play アプリケーションが似たような構成になるように、静的コンテンツはこれらのディレクトリに入れておくと良いでしょう。
ちなみに、アプリケーションを新規作成した状態では、
public/
ディレクトリが/assets
という URL パスに対応付けされています。これはいつでも変更できます。また、静的コンテンツを複数のディレクトリに分散させることもできます。
§conf/ ディレクトリ
conf
ディレクトリにはアプリケーションの設定ファイルを入れます。主な設定ファイルは次の二つです。
application.conf
という、アプリケーションのメイン設定ファイル。標準的な設定項目を全て含んでいます。routes
という、ルート定義ファイル。
もし、アプリケーション独自の設定を追加したい場合は、application.conf
に設定項目を追加すると良いでしょう。
また、ライブラリ独自の設定ファイルは、conf
ディレクトリに配置すると良いでしょう。
§lib/ ディレクトリ
lib
ディレクトリは必須ではありませんが、ビルドシステムの管理外におきたい jar ファイルなど、全ての管理されないライブラリ依存性を含みます。jar ファイルこのディレクトリに配置しておくだけで、アプリケーションのクラスパスに追加されます。
§project/ ディレクトリ
project
ディレクトリは、sbt のビルド定義を含みます。
plugins.sbt
は、このプロジェクトで使う sbt プラグインの定義ファイルです。Build.scala
は、このアプリケーションのビルドスクリプトです。
§target/ ディレクトリ
target/
ディレクトリには、Play のビルドシステムによって生成された全てのファイルが入ります。何が生成されるのか覚えておくと良いでしょう。
classes/
には、Java や Scala のコードからコンパイルされたクラスファイルが入ります。classes_managed/
には、Play が管理しているクラス (例えば、ルータやテンプレートシステムによって生成されたクラスなど) が入ります。IDE をお使いの場合は、このディレクトリへクラスパスを通しておくと便利でしょう。resource_managed/
には、Play によって生成されたリソースが含まれます。例えば、LESS CSS や CoffeeScript からトランスコンパイルされた CSS ファイル や JavaScript ファイルは、このディレクトリに配置されます。src_managed/
には、テンプレートシステムが生成した Scala コードなど、Play によって生成されたソースが含まれます。
§よく使う .gitignore ファイル
Play によって生成されたディレクトリは、バージョン管理システムに無視させるべきでしょう。Play アプリケーションで典型的な .gitignore
ファイルの内容を以下に示します。
logs
project/project
project/target
target
tmp
Next: Play 2.0 コンソールを使う