カテゴリ: Play Framework 更新日: 2026/02/18

Play FrameworkのForm APIを完全解説!初心者でもわかるフォーム処理の流れ

Form APIを使ったフォーム処理の流れ
Form APIを使ったフォーム処理の流れ

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

生徒

「Play Frameworkで画面に入力フォームを作ったんですが、入力された値をどうやって受け取ればいいのかわかりません…」

先生

「Play FrameworkではForm APIを使うことで、フォームの入力値を安全に受け取り、チェックまで行えます。」

生徒

「フォーム処理って難しそうなイメージがあります。」

先生

「順番を理解すれば大丈夫です。画面、コントローラ、Form APIの流れを一つずつ見ていきましょう。」

1. Play Frameworkにおけるフォーム処理とは

1. Play Frameworkにおけるフォーム処理とは
1. Play Frameworkにおけるフォーム処理とは

Play Frameworkのフォーム処理とは、画面で入力された文字や数値をサーバ側で受け取り、必要に応じて確認し、次の画面へ渡す一連の流れを指します。Webアプリケーションでは、ログイン画面や登録画面など、フォーム入力は必ず登場します。

Play Frameworkでは、このフォーム処理を簡単かつ安全に行うためにForm APIという仕組みが用意されています。Form APIを使うことで、入力値の受け取り、チェック、エラー表示までをまとめて扱えるようになります。

2. Form APIの全体的な流れを理解しよう

2. Form APIの全体的な流れを理解しよう
2. Form APIの全体的な流れを理解しよう

Form APIを使ったフォーム処理の流れは、大きく分けて「入力画面の表示」「入力内容の送信」「コントローラでの受け取り」「チェック結果の判定」という順番になります。

人に例えると、紙の申込書を配布し、記入してもらい、受付で内容を確認し、不備があれば書き直してもらう流れと同じです。Play FrameworkのForm APIは、この受付係の役割を自動で手伝ってくれます。

3. 入力データを表すフォーム用クラス

3. 入力データを表すフォーム用クラス
3. 入力データを表すフォーム用クラス

まず、フォームで扱うデータをまとめた専用のクラスを作ります。このクラスは「どんな項目を入力するのか」を表す設計図です。

例えば、名前と年齢を入力するフォームであれば、それぞれをフィールドとして用意します。ここでは難しい処理は行わず、データを入れる箱として考えてください。


package forms;

public class UserForm {
    public String name;
    public Integer age;
}

このクラスがあることで、Play Frameworkは「このフォームには名前と年齢がある」と理解できるようになります。

4. 入力フォーム画面の作成

4. 入力フォーム画面の作成
4. 入力フォーム画面の作成

次に、利用者が実際に入力する画面を作成します。Play FrameworkではTwirlテンプレートを使ってHTMLを生成します。

フォームの見た目は普通のHTMLとほぼ同じです。重要なのは、入力項目の名前がフォーム用クラスのフィールドと対応している点です。


<form action="/submit" method="post">
    <label>名前</label>
    <input type="text" name="name">

    <label>年齢</label>
    <input type="number" name="age">

    <button type="submit">送信</button>
</form>

この画面で入力された値が、次のステップでコントローラに送られます。

5. コントローラでForm APIを使う

5. コントローラでForm APIを使う
5. コントローラでForm APIを使う

フォームが送信されると、コントローラが呼び出されます。ここでForm APIを使って入力内容を受け取ります。

Form APIは、送られてきた値を自動的にフォーム用クラスへ詰め込んでくれます。これにより、一つずつ値を取り出す必要がなくなります。


import play.data.Form;
import play.data.FormFactory;
import javax.inject.Inject;
import play.mvc.*;

public class UserController extends Controller {

    private final FormFactory formFactory;

    @Inject
    public UserController(FormFactory formFactory) {
        this.formFactory = formFactory;
    }

    public Result submit(Http.Request request) {
        Form<UserForm> form = formFactory.form(UserForm.class).bindFromRequest(request);
        UserForm data = form.get();
        return ok("名前:" + data.name + " 年齢:" + data.age);
    }
}

このコードでは、フォームの入力内容をまとめて受け取り、そのまま利用しています。

6. 入力内容のチェックとエラー判定

6. 入力内容のチェックとエラー判定
6. 入力内容のチェックとエラー判定

実際のWebアプリケーションでは、空欄や不正な値が入力されることがあります。Form APIでは、そのような場合を簡単に判定できます。

入力に問題がある場合は、エラーとして扱い、再度フォーム画面を表示する流れになります。これにより、安全で使いやすいフォーム処理が実現できます。


public Result submit(Http.Request request) {
    Form<UserForm> form = formFactory.form(UserForm.class).bindFromRequest(request);

    if (form.hasErrors()) {
        return badRequest("入力内容に誤りがあります");
    }

    UserForm data = form.get();
    return ok("登録完了:" + data.name);
}

このように、エラーがあるかどうかを確認するだけで、処理の分岐が可能です。

7. Form APIを使うメリット

7. Form APIを使うメリット
7. Form APIを使うメリット

Play FrameworkのForm APIを使う最大のメリットは、「安全性」と「分かりやすさ」です。入力値を一括で管理できるため、コードが整理され、読みやすくなります。

また、フォーム処理の流れが決まっているため、初心者でも「画面 → コントローラ → 判定」という考え方を身につけやすくなります。Play Frameworkのフォーム処理とバリデーションを学ぶ上で、Form APIは欠かせない存在です。

カテゴリの一覧へ
新着記事
New1
Jakarta EE
Jakarta EEのJakarta Faces(JSF)ライフサイクルを図解で徹底解説 初心者向けUI開発入門
New2
Play Framework
Play Frameworkのバリデーション入門!初心者でもわかる入力値検証の基本と考え方
New3
Play Framework
Play Frameworkでできること・できないことを徹底解説!初心者でもわかる特徴と活用方法
New4
Jakarta EE
Jakarta EE JSF開発環境の構築完全ガイド!Eclipse・IntelliJ・Tomcat・Payara対応
人気記事
No.1
Java&Spring記事人気No1
Jakarta EE
Jakarta サーブレットのdoGetとdoPostの違いと使い分けを徹底解説!初心者でもわかるHTTPリクエスト処理
No.2
Java&Spring記事人気No2
Jakarta EE
Jakarta サーブレットのHttpServletRequestを徹底解説!初心者でもわかる基本操作と使い方
No.3
Java&Spring記事人気No3
Play Framework
Play FrameworkのForm APIを完全解説!初心者でもわかるフォーム処理の流れ
No.4
Java&Spring記事人気No4
Jakarta EE
Jakarta EEのリリースサイクルとバージョンの進化をやさしく解説!
No.5
Java&Spring記事人気No5
Play Framework
Play FrameworkのビューとSEOを完全理解!Twirlで検索上位を狙う設計術
No.6
Java&Spring記事人気No6
Play Framework
Play Frameworkのフォーム処理を完全ガイド!初心者でもわかる送信の仕組み
No.7
Java&Spring記事人気No7
Play Framework
Play Frameworkで学ぶ単純なフォーム作成方法!初心者でもわかる名前・メールアドレス入力
No.8
Java&Spring記事人気No8
Jakarta EE
Jakarta EE開発環境でのローカルとクラウド環境の使い分けを徹底解説|初心者向けガイド