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

Play Frameworkの動的パラメータルーティングを完全解説!初心者でもわかるidとslugの使い方

動的パラメータのルーティング(id, slugの扱い方)
動的パラメータのルーティング(id, slugの扱い方)

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

生徒

「Play Frameworkのルーティングで動的パラメータを扱う方法を知りたいです。idとかslugってどうやって使うんですか?」

先生

「Play Frameworkでは、ルーティングファイルに動的パラメータを定義して、URLの一部から値を取り出してコントローラに渡すことができますよ。」

生徒

「URLから値を取り出して渡すって便利そうですね。実際にはどう書くんですか?」

先生

「では、Play Frameworkのルーティングでよく使われるidとslugの基本を、実際のコードと一緒に説明していきましょう。」

Play Frameworkの動的パラメータとは

Play Frameworkの動的パラメータとは
Play Frameworkの動的パラメータとは

Play Frameworkでは、ルーティング設定に動的パラメータを使うことで、アクセスされたURLの一部を変数として扱い、その値をコントローラに渡すことができます。特にアプリケーション開発では、記事や商品ページなど個別の情報を表示する際に、数字の識別子であるidや、読みやすく検索エンジンにも強いslugを用いることが多いです。動的パラメータを活用することで、柔軟で拡張性の高いWebアプリケーションを構築できます。Play Frameworkのルーティングは宣言的で簡潔な書き方が特徴で、初心者にも理解しやすい設計になっています。idなどの整数だけでなく、文字列を用いたslugも扱えるため、ブログ記事表示や商品詳細ページなどSEOを意識したURL設計が可能になります。動的パラメータは柔軟なURL設計に欠かせない機能であり、正しく理解することで開発効率が大きく向上します。

動的パラメータidのルーティング

動的パラメータidのルーティング
動的パラメータidのルーティング

最もよく使われる動的パラメータがidです。idはデータベースに保存された情報を識別する整数の番号で、Play Frameworkではルーティングに「:id」として記述します。例えば、記事を表示する際に、記事番号のidをURLに含めることで、指定された記事だけを表示できます。ブログや掲示板、ECサイトなど幅広い場面で使用される非常に基本的な部分です。Play Frameworkのルーティングファイルでは、単純にパスの中に「:id」を記述するだけで、コントローラへ値が渡ります。Javaのコントローラ側では、そのidを受け取って処理を行います。こうした仕組みは初心者にもわかりやすく、直感的に理解できます。以下のようにroutesファイルへ記述します。


GET    /article/:id     controllers.ArticleController.show(id: Long)

コントローラ側では次のように受け取ります。


package controllers;

import play.mvc.*;

public class ArticleController extends Controller {
    public Result show(Long id) {
        return ok("選択された記事IDは: " + id);
    }
}

slugを使った動的ルーティング

slugを使った動的ルーティング
slugを使った動的ルーティング

slugは、URLを人間にも検索エンジンにも読みやすくするための文字列で、ブログ記事のタイトルを英単語にしてつなげたものなどがよく使われます。slugを使用することでSEOに強いURLを作ることができ、検索エンジン向けに有利なページ構造を実現できます。Play Frameworkではslugも動的パラメータとして扱うことができ、記述方法もidと同様にとても簡単です。URLに日本語を含める場合でもURLエンコードされるため、問題なく動作します。以下はroutesファイルでの例です。


GET    /blog/:slug     controllers.BlogController.detail(slug: String)

コントローラ側では次のようにslugを受け取り、記事を検索して表示します。


package controllers;

import play.mvc.*;

public class BlogController extends Controller {
    public Result detail(String slug) {
        return ok("選択されたスラッグは: " + slug);
    }
}

slugを利用することで、例えば「/blog/play-framework-routing-guide」のような読みやすいURLを簡単に実現できます。検索エンジンに評価されやすく、ユーザーもページ内容を想像しやすい利点があります。idとslugを組み合わせて使用する場合もあり、SEOを意識した柔軟なURL設計が可能になります。

idとslugを同時に使うパターン

idとslugを同時に使うパターン
idとslugを同時に使うパターン

実際のWebアプリケーションでは、idとslugを同時に使って、検索エンジン向けのSEOとデータ参照の両方を両立させるケースがよくあります。例えば、記事のURLとして「/blog/1234/play-framework-routing」を使うことで、idで効率的にデータを参照しつつ、slugで記事内容を示すことができます。Play Frameworkでは、このような複数の動的パラメータを簡単に扱えます。以下の例のようにroutesファイルに記述します。


GET    /blog/:id/:slug     controllers.BlogController.read(id: Long, slug: String)

それをJavaのコントローラで受け取るコードは次のようになります。


package controllers;

import play.mvc.*;

public class BlogController extends Controller {
    public Result read(Long id, String slug) {
        return ok("ID: " + id + " / SLUG: " + slug);
    }
}

idとslugの両方を使うことで、URLがわかりやすくなるだけでなく、データベースでid検索を行う際の高速性も維持できます。検索エンジン最適化にも有効であり、ユーザーにも開発者にもメリットのある構成になります。Play Frameworkは柔軟なルーティング機能を備えているため、こうした複合的なURL設計を簡単に実現できます。

ルーティングで型を指定する理由

ルーティングで型を指定する理由
ルーティングで型を指定する理由

Play Frameworkのルーティングでは、パラメータの型を指定することでコントローラに渡す値の種類を判断させることができます。例えばidが整数であることを明示し、slugが文字列であることを指定することで、意図しない型のデータが渡される誤動作を防ぎます。これはWebアプリケーションを安定して動作させるために不可欠な要素です。型が一致しない場合Play Framework側でエラーを返すため、問題の早期発見にもつながります。こうした型安全な設計はJavaの強みであり、Play Frameworkと非常に相性が良い部分です。

関連記事:
カテゴリの一覧へ
新着記事
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初心者向けコントローラ入門