👌
Play Frameworkのフォルダ構成
Anatomy of a Play applicationを元にフォルダ構成をまとめます
公式ドキュメントより
app → Application sources
└ assets → Compiled asset sources
└ stylesheets → Typically LESS CSS sources
└ javascripts → Typically CoffeeScript sources
└ controllers → Application controllers
└ models → Application business layer
└ views → Templates
build.sbt → Application build script
conf → Configurations files and other non-compiled resources (on classpath)
└ application.conf → Main configuration file
└ routes → Routes definition
dist → Arbitrary files to be included in your projects distribution
public → Public assets
└ stylesheets → CSS files
└ javascripts → Javascript files
└ images → Image files
project → sbt configuration files
└ build.properties → Marker for sbt project
└ plugins.sbt → sbt plugins including the declaration for Play itself
lib → Unmanaged libraries dependencies
logs → Logs folder
└ application.log → Default log file
target → Generated stuff
└ resolution-cache → Info about dependencies
└ scala-2.13
└ api → Generated API docs
└ classes → Compiled class files
└ routes → Sources generated from routes
└ twirl → Sources generated from templates
└ universal → Application packaging
└ web → Compiled web assets
test → source folder for unit or functional tests
最上階層
フォルダ名 | 説明 |
---|---|
app | CSSやCoffeeScript、MVCの役割をするための.scalaファイルを配置する。Serviceファイルを追加したい場合も、ここの下にservices/ フォルダを追加する |
build.sbt | ビルド時の設定等を書くファイル。Dockerfileみたいなもの? |
conf | アプリケーションの設定ファイルを配置する。ルーティングや、環境変数のファイルapplication.confなどがある。 |
dist | 他に該当しないプロジェクトに含みたいファイルを格納するフォルダ |
public | ビルドした際に生成される静的ファイルがここに配置される。app/stylesheets/ フォルダ以下のLESSやCSSファイルがpublic/stylesheets/ フォルダ以下に。app/javascripts/ フォルダ以下のCoffeeScriptファイルがpublic/javascripts/ フォルダ以下に入る。画像などのデータに関しても、保存場所はpublic/images/ 以下になる |
project | プロジェクトの設定を書く。プラグインとそのバージョンや、sbtいくつを使ってビルドするのか など |
lib | ビルドシステムに依存性を管理されないライブラリ(jarファイル)を置く場所 |
logs | ログファイルが格納されるフォルダ |
target | ビルドによって作られたファイルは全てここにおかれる。コンパイル済みのscalaファイルなど。 |
test | 単体テスト、ユニットテストのソースファイルが格納される |
例
以下コマンド(記事)で作成したテンプレートフォルダ構成
sbt new playframework/play-scala-seed.g8
CoffeeScriptやCSS、Modelの作成はテンプレートには入っていないので作成はされていません。
Appendix
MVCとは
MVC(Model View Controller モデル・ビュー・コントローラ)は、ユーザーインタフェースをもつアプリケーションソフトウェアを実装するためのデザインパターンである。
アプリケーションソフトウェアの内部データを、ユーザーが直接参照・編集する情報から分離する。そのためにアプリケーションソフトウェアを以下の3つの部分に分割する。
model: アプリケーションデータ、ビジネスルール、ロジック、関数
view: グラフや図などの任意の情報表現
controller: 入力を受け取りmodelとviewへの命令に変換する
wikipediaより
このルールに添っていないデータのやりとりや画面遷移をさせないことが大事。
Discussion