カテゴリ: 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
Play Framework
Play Framework多言語対応テンプレート完全ガイド!i18nの実装方法を解説
New2
Play Framework
Play Frameworkで学ぶAjaxリクエスト!初心者でもわかる連携方法と実践テクニック
New3
Jakarta EE
Jakarta EE JSPでファイルアップロードをわかりやすく解説!初心者向けガイド
New4
Jakarta EE
Jakarta EEとOAuth2の基本を初心者向けに解説 セキュリティ強化と認証連携の導入メリット
人気記事
No.1
Java&Spring記事人気No1
Jakarta EE
Jakarta EEとSpringの比較|どちらを選ぶべきか?初心者向けに徹底解説!
No.2
Java&Spring記事人気No2
Jakarta EE
Jakarta サーブレットのHttpServletRequestを徹底解説!初心者でもわかる基本操作と使い方
No.3
Java&Spring記事人気No3
Jakarta EE
Jakarta EEとは?Java EEからの移行の歴史をやさしく解説
No.4
Java&Spring記事人気No4
Jakarta EE
Jakarta EEとJava EEアプリの互換性を完全解説!移行で困らないための基礎知識
No.5
Java&Spring記事人気No5
Jakarta EE
Jakarta EEのリリースサイクルとバージョンの進化をやさしく解説!
No.6
Java&Spring記事人気No6
Play Framework
Play Frameworkでセッション管理と認証を連携!Java初心者向けログイン実装ガイド
No.7
Java&Spring記事人気No7
Play Framework
Play Frameworkでストリーミングレスポンスを実装する方法を完全解説!初心者向けリクエストとレスポンス入門
No.8
Java&Spring記事人気No8
Jakarta EE
Jakarta サーブレットのdoGetとdoPostの違いと使い分けを徹底解説!初心者でもわかるHTTPリクエスト処理