Play Frameworkのディレクトリ構成を初心者向けに解説!サンプル付き
生徒
「Play Frameworkのプロジェクトを作ったけど、ディレクトリがたくさんあってよくわかりません。」
先生
「そうですね。Play FrameworkはMVCアーキテクチャに基づいているので、ディレクトリもそれに合わせて整理されています。」
生徒
「MVCって何ですか?」
先生
「MVCはModel(モデル)、View(ビュー)、Controller(コントローラ)の頭文字です。データ、画面、処理を分けて管理する設計方法です。」
生徒
「なるほど。ディレクトリはどのように分かれているんですか?」
先生
「サンプルを見ながら説明します。」
1. Play Frameworkの基本ディレクトリ構成
Play Frameworkのプロジェクトを作成すると、以下のようなディレクトリ構成になります。
my-play-app/
app/ ← アプリケーションのソースコードを置く場所
controllers/ ← コントローラを配置
models/ ← データやビジネスロジックを配置
views/ ← HTMLやTwirlテンプレートを配置
conf/ ← 設定ファイルを配置
application.conf ← アプリ全体の設定
routes ← URLルーティング設定
public/ ← CSS、JavaScript、画像などの静的ファイル
test/ ← 単体テストや統合テスト
build.sbt ← sbtによるビルド設定
この構成を理解することで、どこに何を書くべきかが明確になります。例えば、画面表示のHTMLはviews、データベースとのやり取りはmodelsに書きます。
2. コントローラとビューの関係
コントローラは、ユーザーのリクエストを受け取り、適切なデータをモデルから取得してビューに渡す役割を持ちます。ビューは受け取ったデータを画面に表示します。
package controllers
import play.api.mvc._
class HomeController(cc: ControllerComponents) extends AbstractController(cc) {
def index = Action { implicit request: Request[AnyContent] =>
Ok(views.html.index("Hello, Play Framework!"))
}
}
@("message": String)
<html>
<head><title>Home</title></head>
<body>
<h1>@message</h1>
</body>
</html>
この例では、HomeControllerがindexアクションを呼び出し、ビューに文字列を渡して表示しています。
3. 設定ファイルの役割
Play Frameworkではconf/application.confでアプリケーション全体の設定を行い、conf/routesでURLとコントローラのマッピングを設定します。
# conf/routes
GET / controllers.HomeController.index
GET /about controllers.AboutController.index
このようにURLごとにどのコントローラのどのアクションを呼ぶかを決めます。これによりWebアプリケーションのルーティングが明確になります。
4. 公開リソースの管理
静的ファイル(CSS、JavaScript、画像など)はpublicフォルダに配置します。ブラウザから直接アクセスできるため、ビューのデザインや動きを制御する際に使用します。
5. テストディレクトリの使い方
テストコードはtestディレクトリに置きます。単体テスト、統合テストを記述することで、アプリケーションの動作を確認できます。テストを正しく書くことで、将来の変更に対しても安心して開発を進められます。
6. 初心者向けのアドバイス
初心者はまずappディレクトリのcontrollersとviewsに触れて、簡単な画面表示を作ることから始めるとよいでしょう。その後、modelsやconf/routesに取り組むことで、Play Frameworkの構造を理解しながら開発スキルを身につけられます。
ディレクトリの役割を把握すると、大規模プロジェクトでも迷わず開発でき、保守性も向上します。