カテゴリ: Play Framework 更新日: 2025/12/03

Play Frameworkのサンプルコードでプロジェクトの流れを理解する方法

サンプルコードでプロジェクトの流れを理解する
サンプルコードでプロジェクトの流れを理解する

先生と生徒の会話形式で理解しよう

生徒

「先生、Play Frameworkで作ったプロジェクトの動きがまだよくわかりません。」

先生

「それなら、サンプルコードを使ってプロジェクト全体の流れを確認すると理解しやすいです。」

生徒

「サンプルコードって具体的に何をすればいいんですか?」

先生

「簡単なコントローラとビューを作って、ブラウザで確認するだけで、リクエストからレスポンスまでの流れを体験できます。」

1. サンプルコントローラを作成する

1. サンプルコントローラを作成する
1. サンプルコントローラを作成する

まずは、app/controllers ディレクトリに、いちばん最初の入り口となるシンプルなコントローラを作成してみましょう。コントローラは、ブラウザから送られてくるWebリクエストを受け取り、「どんな処理をして、何を返すのか」を決める部分です。ここがしっかりイメージできると、Play Frameworkのプロジェクト全体の流れも理解しやすくなります。


package controllers

import javax.inject._
import play.api.mvc._

// HomeController はアプリの「入り口」になるコントローラ
@Singleton
class HomeController @Inject()(
    val controllerComponents: ControllerComponents
) extends BaseController {

    // "/" にアクセスされたときに実行される処理のイメージ
    def index() = Action { implicit request: Request[AnyContent] =>
        // ここでブラウザに返すメッセージを作っている
        Ok("Hello, Play Framework!")
    }
}

このサンプルでは、HomeController というクラスの中に indexアクション を用意しています。ブラウザから「トップページを見せて」といったリクエストが来たときに、この index() が呼び出され、「Hello, Play Framework!」というテキストをレスポンスとして返す、というイメージです。

@Singleton@Inject() といった記述は、Play Frameworkが内部でコントローラを管理しやすくするための“おまじない”のようなものだと思っておけば大丈夫です。初心者のうちは「とりあえずこの形で書けば動く」と覚えておき、慣れてきたら依存性注入(DI)といったキーワードを調べていくと理解が深まります。

初心者向け:このコントローラで何が分かる?

この短いコードだけでも、Play Frameworkの基本的な動きが体験できます。

  • ブラウザのアクセス先(URL)に応じて、どのメソッドが呼ばれるかを決められること
  • サーバー側で文字列などのレスポンスを作成し、ブラウザに返していること
  • 「コントローラがリクエストを受け取り、レスポンスを返す」というWebアプリの基本的な役割

この段階では、難しいことを意識する必要はありません。「ブラウザからのリクエストが来たら、この index メソッドが動いて、文字列を返しているんだな」という流れだけつかめれば十分です。次のステップでルーティング設定を行うことで、このコントローラが実際にブラウザから呼び出されるようになります。

2. ルーティング設定を確認する

2. ルーティング設定を確認する
2. ルーティング設定を確認する

作成したコントローラをブラウザで確認するには、ルーティング設定が必要です。conf/routesファイルに以下を追加します。


GET     /           controllers.HomeController.index

これにより、ブラウザで http://localhost:9000 にアクセスしたときに、HomeControllerのindexアクションが呼ばれます。

3. ビューを使ってHTMLを表示する

3. ビューを使ってHTMLを表示する
3. ビューを使ってHTMLを表示する

Play FrameworkではTwirlテンプレートを使ってHTMLを生成できます。app/views/index.scala.html に以下のサンプルを作ります。


@(message: String)

<!DOCTYPE html>
<html>
<head>
    <title>Play Framework Sample</title>
</head>
<body>
    <h1>@message</h1>
</body>
</html>

コントローラを次のように修正して、ビューを呼び出すことができます。


def index() = Action { implicit request: Request[AnyContent] =>
    Ok(views.html.index("Hello, Play Framework with View!"))
}

ブラウザでアクセスすると、ビューを通してHTMLが表示されるのが確認できます。これで、リクエスト→コントローラ→ビュー→レスポンスの流れを体験できます。

4. 開発サーバーで動作確認する

4. 開発サーバーで動作確認する
4. 開発サーバーで動作確認する

プロジェクトの流れを確認するには、sbtを使って開発サーバーを起動します。


sbt run

起動後、ブラウザで http://localhost:9000 にアクセスすると、コントローラとビューの動作が確認できます。リクエストが送られ、コントローラが処理し、ビューがHTMLとしてレスポンスを返す、という基本の流れを理解できます。

5. プロジェクト全体の流れを理解するメリット

5. プロジェクト全体の流れを理解するメリット
5. プロジェクト全体の流れを理解するメリット

サンプルコードを使ってプロジェクトの流れを確認することで、以下のことが学べます:

  • Play Frameworkのリクエストとレスポンスの流れ
  • コントローラとビューの役割
  • ルーティング設定の重要性
  • ブラウザでの確認方法

初心者が最初にこの流れを理解することで、複雑なWebアプリケーションを作る際にも迷わずに開発を進められるようになります。

まとめ

まとめ
まとめ

この記事では、Play Frameworkのプロジェクト構成を理解するために、サンプルコントローラの作成方法、ルーティング設定、ビューを使ったHTML表示、そして開発サーバーを使った動作確認までの流れを丁寧に見てきました。とくに、リクエストからレスポンスまでの一連の仕組みを体験できる点は、初心者にとって大きな学びとなります。

Webアプリケーション開発では、コントローラがどのようにリクエストを受け取り、ビューへどのようにデータを渡し、どのタイミングでHTMLが生成されるのか、という具体的な流れを把握することはとても重要です。この理解によってPlay Frameworkの特徴や動作の仕組みが自然に掴めるようになります。

また、ルーティング設定がどれだけ重要なのかも実際に試すことで明確になります。「ブラウザでURLへアクセスすると、どのメソッドが呼ばれ、何が返ってくるのか」というリンクがつながることで、フレームワーク全体の動作がより立体的に理解できます。

さらに、Twirlテンプレートを使ったビューの生成は、HTML出力をPlay Frameworkらしい形で習得するうえで欠かせません。アプリケーション開発を続けるうちに、ビューとコントローラ間のデータ受け渡しや、複雑な画面構築にも応用できる土台が形成されます。

以下に、記事の流れを踏まえた簡単なサンプルコードを再掲します。記事内で扱った内容を定着させるための振り返りとして役立ててください。

サンプルコントローラの再確認


package controllers

import javax.inject._
import play.api.mvc._

@Singleton
class SampleController @Inject()(val controllerComponents: ControllerComponents) extends BaseController {

    def sample() = Action { implicit request: Request[AnyContent] =>
        Ok(views.html.index("サンプルメッセージをPlay Frameworkで表示しています"))
    }
}

ルーティングの再確認


GET     /sample           controllers.SampleController.sample

ビューの再確認


@(message: String)

<!DOCTYPE html>
<html>
<head>
    <title>Play Framework Sample View</title>
</head>
<body>
    <h1>@message</h1>
</body>
</html>

これらのサンプルコードを通して、Play Frameworkの基本的な仕組みを再確認し、どのように開発が進むのかを自然に理解できるようになります。プロジェクト全体を俯瞰しながら構築していくことは、効率的で迷いのない開発につながります。実際に手を動かしながら試すことで、さらに深い理解が得られるでしょう。

先生と生徒の振り返り会話

生徒

「先生、今日の内容でPlay Frameworkの仕組みがずいぶんわかってきました。」

先生

「それは良いですね。リクエストとレスポンスの流れが理解できると、Webアプリケーション開発がとても楽になりますよ。」

生徒

「コントローラで処理してビューへ渡す動きや、ルーティングの大事さがやっとつながりました。」

先生

「その調子です。今後はもっと複雑な画面や処理も作れるようになりますから、今日の流れをしっかり覚えておきましょう。」

生徒

「はい!次はフォーム入力やデータベース連携にも挑戦してみたいです。」

先生

「もちろんです。基礎ができれば応用はさらに理解しやすくなりますよ。」

カテゴリの一覧へ
新着記事
New1
Play Framework
Play Frameworkでフォームデータをコントローラで扱う方法を完全解説|Java初心者向けコントローラ入門
New2
Jakarta EE
Jakarta EE JSPにおけるJSTLとスクリプトレットの違いと使い分けを初心者向けに徹底解説
New3
Play Framework
Play Frameworkでクエリパラメータをコントローラで処理する方法を完全解説|Java初心者向け入門
New4
Play Framework
Play FrameworkとSpring Bootの違いを徹底比較!初心者でもわかるJavaフレームワーク入門
人気記事
No.1
Java&Spring記事人気No1
Jakarta EE
Jakarta EEのリリースサイクルとバージョンの進化をやさしく解説!
No.2
Java&Spring記事人気No2
Jakarta EE
Jakarta サーブレットのHttpServletRequestを徹底解説!初心者でもわかる基本操作と使い方
No.3
Java&Spring記事人気No3
Jakarta EE
Jakarta EEとSpringの比較|どちらを選ぶべきか?初心者向けに徹底解説!
No.4
Java&Spring記事人気No4
Jakarta EE
Jakarta EEとJava EEアプリの互換性を完全解説!移行で困らないための基礎知識
No.5
Java&Spring記事人気No5
Jakarta EE
Jakarta EE JSPでJSTL SQLタグを使った簡易データベースアクセスをやさしく解説
No.6
Java&Spring記事人気No6
Jakarta EE
Jakarta EE JSPにおけるJSTL国際化タグ(fmt:message)の使い方を初心者向けに完全解説
No.7
Java&Spring記事人気No7
Jakarta EE
Jakarta EE JSPでJSTLを使ったJSONやREST APIレスポンス処理を初心者向けにやさしく解説
No.8
Java&Spring記事人気No8
Play Framework
Play Frameworkでリクエストデータの受け取り方を完全解説|Java初心者向けコントローラ入門