👌

Play Frameworkのフォルダ構成

2020/12/20に公開

Anatomy of a Play applicationを元にフォルダ構成をまとめます
https://www.playframework.com/documentation/2.8.x/Anatomy

公式ドキュメントより

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

https://zenn.dev/yassh_i/articles/9a973b5755e556

CoffeeScriptやCSS、Modelの作成はテンプレートには入っていないので作成はされていません。

Appendix

MVCとは

MVC(Model View Controller モデル・ビュー・コントローラ)は、ユーザーインタフェースをもつアプリケーションソフトウェアを実装するためのデザインパターンである。
アプリケーションソフトウェアの内部データを、ユーザーが直接参照・編集する情報から分離する。そのためにアプリケーションソフトウェアを以下の3つの部分に分割する。
model: アプリケーションデータ、ビジネスルール、ロジック、関数
view: グラフや図などの任意の情報表現
controller: 入力を受け取りmodelとviewへの命令に変換する
wikipediaより

このルールに添っていないデータのやりとりや画面遷移をさせないことが大事。

Discussion