カテゴリ: Thymeleaf 更新日: 2025/12/26

Thymeleaf 変数操作のまとめ!初心者向け完全ガイド

Thymeleaf 変数操作のまとめ!初心者向け完全ガイド
Thymeleaf 変数操作のまとめ!初心者向け完全ガイド

新人と先輩の会話形式で理解しよう

新人

「Thymeleafで変数ってどう扱えばいいんでしょうか?初心者でもわかる基本の使い方を教えてほしいです。」

先輩

「ThymeleafはJavaのSpring MVCと組み合わせて使うことが多いから、変数の扱い方をしっかり理解することが大切だよ。基本から丁寧に説明するね。」

新人

「Spring MVCのモデルとThymeleafの変数はどう連携しているんですか?」

先輩

「モデルにセットしたデータをThymeleafのテンプレートで${}という書き方で参照するのが基本だよ。具体的に見ていこう!」

1. Thymeleafとは?変数操作の基本的な考え方

1. Thymeleafとは?変数操作の基本的な考え方
1. Thymeleafとは?変数操作の基本的な考え方

ThymeleafはJavaのテンプレートエンジンで、HTMLファイルの中に変数を埋め込んで動的なWebページを作るためのツールです。特にSpring MVCの開発環境でよく使われています。変数操作の基本は、Javaのコントローラから渡されたデータをHTML側で表示や制御に使うことです。

Thymeleafの変数は、${変数名}の形で書きます。これにより、Spring MVCのモデルに格納した値を簡単に画面に表示できます。

たとえば、次のように書くと「こんにちは、山田太郎さん!」と表示されます。


<p>こんにちは、${userName}さん!</p>

この${userName}がThymeleafの変数です。後でコントローラから値をセットして使います。

また、変数は単なる文字列だけでなく、オブジェクトのプロパティにもアクセス可能です。ドットでつなげて書くことで、例えばユーザーオブジェクトの名前やメールアドレスなどを取り出せます。


<p>ユーザー名: ${user.name}</p>
<p>メール: ${user.email}</p>

こうした変数操作の仕組みが、Thymeleafを使ったWeb開発の基礎です。

2. Spring MVCのモデルでの変数設定とThymeleafテンプレートでの基本的な変数参照方法

2. Spring MVCのモデルでの変数設定とThymeleafテンプレートでの基本的な変数参照方法
2. Spring MVCのモデルでの変数設定とThymeleafテンプレートでの基本的な変数参照方法

Spring MVCのコントローラでは、Modelオブジェクトを使ってThymeleafに渡す変数を設定します。モデルに登録した変数は、テンプレートで${}を使って参照できます。

例えば、次のようにコントローラでユーザー名をセットします。


@Controller
public class UserController {

    @GetMapping("/greeting")
    public String greeting(Model model) {
        model.addAttribute("userName", "山田太郎");
        return "greeting";
    }
}

このとき、Thymeleafのテンプレートgreeting.htmlで${userName}を使うと、モデルでセットした「山田太郎」が表示されます。


<p>こんにちは、${userName}さん!</p>

モデルに複数の変数をセットすることも可能です。年齢やメールアドレスなど、画面に表示したいデータを自由に追加できます。


model.addAttribute("age", 30);
model.addAttribute("email", "yamada@example.com");

Thymeleaf側では、次のように参照して表示できます。


<p>年齢: ${age}歳</p>
<p>メール: ${email}</p>

このように、Spring MVCモデル管理とThymeleaf変数の使い方は連携しており、変数を使いこなすことが動的Web開発のポイントとなります。Pleiades+Gradle環境で開発するときも、基本は同じです。

3. 変数のスコープ(モデル、セッション、リクエスト)の違いと使い分け

3. 変数のスコープ(モデル、セッション、リクエスト)の違いと使い分け
3. 変数のスコープ(モデル、セッション、リクエスト)の違いと使い分け

Thymeleafの変数を使うとき、まず理解したいのが変数のスコープです。スコープとは、変数がどの範囲で有効かという意味で、主にモデルスコープセッションスコープリクエストスコープの3つがあります。

モデルスコープは、Spring MVCのコントローラでModelに登録した変数のことで、HTMLがレンダリングされる1回のリクエスト内で有効です。通常、画面に表示したいデータはこのモデルスコープにセットして渡します。


@GetMapping("/profile")
public String profile(Model model) {
    model.addAttribute("userName", "佐藤花子");
    return "profile";
}

この場合、Thymeleafテンプレートでは${userName}で「佐藤花子」を参照できます。

セッションスコープはユーザーごとのセッションに保存され、複数のリクエスト間で変数を保持します。ログイン情報など長期間使うデータを入れるのに適していますが、過剰に使うとサーバーのメモリ負荷が高まるので注意が必要です。


@RequestMapping("/login")
public String login(HttpSession session) {
    session.setAttribute("userId", 12345);
    return "home";
}

Thymeleafテンプレートで${session.userId}と記述することでアクセスできます。

リクエストスコープはHTTPリクエスト単位で有効なデータで、URLパラメータやフォームデータが該当します。Thymeleafでは${param.id}のように参照します。

これらのスコープを正しく使い分けることは、Thymeleaf スコープ 管理の基本であり、パフォーマンスやメモリ管理にも影響します。必要な範囲に必要なデータだけを渡すことが重要です。

4. Thymeleafでのローカル変数の使い方とth:withの活用例

4. Thymeleafでのローカル変数の使い方とth:withの活用例
4. Thymeleafでのローカル変数の使い方とth:withの活用例

Thymeleafではテンプレート内で一時的に変数を作ることができるローカル変数があります。これはth:with属性を使って設定し、同じ計算を繰り返さず効率的に値を使うために便利です。

例えば、商品の価格に割引率をかけて割引価格を計算し、それを複数箇所で表示する場合を考えます。毎回計算を書くとパフォーマンスに影響するため、th:withでローカル変数に入れて使い回します。


<div th:with="discountedPrice=${price * 0.9}">
    <p>元の価格: <span th:text="${price}">0</span>円</p>
    <p>割引価格: <span th:text="${discountedPrice}">0</span>円</p>
</div>

このように、一度計算した値を変数に格納し、複数の箇所で利用できるため、Thymeleaf 変数 パフォーマンスの向上に役立ちます。

また、複数のローカル変数を同時に定義することも可能です。カンマ区切りで複数の変数を設定できるので、複雑な計算や複数の値の管理もスムーズに行えます。


<section th:with="taxRate=0.08, taxAmount=${price * taxRate}">
    <p>消費税率: <span th:text="${taxRate * 100}">8</span>%</p>
    <p>消費税額: <span th:text="${taxAmount}">0</span>円</p>
</section>

こうした使い方はテンプレートの可読性も向上させ、メンテナンスを楽にするのでおすすめです。

5. Spring MVCでの複雑なオブジェクトをモデルに渡す際のポイントとテンプレートでの扱い方

5. Spring MVCでの複雑なオブジェクトをモデルに渡す際のポイントとテンプレートでの扱い方
5. Spring MVCでの複雑なオブジェクトをモデルに渡す際のポイントとテンプレートでの扱い方

Spring MVCでは単純な文字列や数値だけでなく、複雑なオブジェクトをモデルにセットしてThymeleafテンプレートで扱うこともよくあります。例えば、ユーザー情報を表すUserクラスのインスタンスを渡す場合です。


public class User {
    private String name;
    private int age;
    private String email;

    // コンストラクタ、ゲッター・セッターは省略
}

@Controller
public class UserController {

    @GetMapping("/userDetail")
    public String userDetail(Model model) {
        User user = new User();
        user.setName("田中次郎");
        user.setAge(40);
        user.setEmail("tanaka@example.com");
        model.addAttribute("user", user);
        return "userDetail";
    }
}

Thymeleafテンプレート側では、ドット記法でオブジェクトのプロパティにアクセスします。


<p>名前: ${user.name}</p>
<p>年齢: ${user.age}歳</p>
<p>メール: ${user.email}</p>

複雑なオブジェクトを渡すときは、必要な情報だけをモデルにセットすることがパフォーマンス向上のコツです。不要な情報まで渡すとテンプレートの処理が重くなるため、Spring MVC モデル 使い方では、軽量かつ必要最低限のデータを心がけましょう。

また、リストやマップなどのコレクションもモデルに渡して、Thymeleafの繰り返し処理(th:each)で表示可能です。こうした使い方をマスターすると、より柔軟な画面構築ができるようになります。

6. Thymeleafテンプレートでのパフォーマンス改善テクニック(変数の再計算回避など)

6. Thymeleafテンプレートでのパフォーマンス改善テクニック(変数の再計算回避など)
6. Thymeleafテンプレートでのパフォーマンス改善テクニック(変数の再計算回避など)

Thymeleafテンプレートで変数を使う際に注意したいのが、同じ計算や処理が何度も行われることによるパフォーマンス低下です。例えば、テンプレート内で複雑な式を繰り返し書くと、その都度計算が発生し、レンダリング時間が長くなってしまいます。

この問題を防ぐには、th:withを使って一度計算した結果をローカル変数に保存し、繰り返し利用する方法が有効です。これにより、無駄な再計算を避け、Thymeleaf パフォーマンス 最適化に繋がります。


<div th:with="discountedPrice=${price * discountRate}">
    <p>元の価格: <span th:text="${price}">0</span>円</p>
    <p>割引率: <span th:text="${discountRate * 100}">0</span>%</p>
    <p>割引後価格: <span th:text="${discountedPrice}">0</span>円</p>
</div>

上記の例では、価格と割引率から割引後価格を一度だけ計算し、ローカル変数discountedPriceに保存しています。これを複数回参照できるため、テンプレートの処理が軽くなります。

また、テンプレート内で複数の計算や値の加工が必要な場合も、th:withでまとめて変数を宣言すると読みやすく効率的です。


<section th:with="taxRate=0.08, taxAmount=${price * taxRate}">
    <p>消費税率: <span th:text="${taxRate * 100}">8</span>%</p>
    <p>消費税額: <span th:text="${taxAmount}">0</span>円</p>
</section>

このテクニックを使うと、Thymeleaf 変数 効率的な使い方が実現でき、テンプレートのパフォーマンスを高めることができます。

7. よくある変数操作のパフォーマンス問題とその解決策

7. よくある変数操作のパフォーマンス問題とその解決策
7. よくある変数操作のパフォーマンス問題とその解決策

ThymeleafとSpring MVCを使った開発で、変数操作に関するパフォーマンス問題は初心者でもよく遭遇します。ここでは代表的な問題と解決策を紹介します。

問題1:同じ計算式の繰り返し

テンプレート内で複雑な式を複数回書くと、毎回計算が走り処理が重くなります。解決策は先ほど紹介したth:withで一度計算結果をローカル変数に保存し、使い回すことです。

問題2:大量の不要な変数をモデルに渡してしまう

Spring MVCのモデルに不必要な大量のデータをセットすると、レンダリング時の処理負荷が上がります。Spring MVC モデル パフォーマンスを意識し、必要最低限のデータだけを渡すことが重要です。

問題3:セッションスコープの過剰利用

セッションスコープに多くの大きなデータを長期間保持すると、サーバーのメモリ消費が増えパフォーマンスが悪化します。必要な情報だけに限定してセッションを使うべきです。

問題4:テンプレート内で変数の再代入や加工を試みる

Thymeleafの変数はイミュータブルなので、テンプレート内で値を変更できません。変数の加工や計算は必ずコントローラやサービス層で行い、ビューは表示専用にする設計がパフォーマンスと保守性の両方で望ましいです。

これらのポイントを押さえることで、ThymeleafとSpring MVCの組み合わせでスムーズにパフォーマンスを最適化できます。

8. 今後の学習に役立つThymeleaf変数操作とSpring MVCモデル管理のポイントまとめ

8. 今後の学習に役立つThymeleaf変数操作とSpring MVCモデル管理のポイントまとめ
8. 今後の学習に役立つThymeleaf変数操作とSpring MVCモデル管理のポイントまとめ

この記事では、初心者がつまずきやすいThymeleaf変数の基本から応用まで、Spring MVCのモデル管理と連携した使い方を解説しました。今後の学習や開発に役立つポイントをまとめます。

  • 変数のスコープを理解して適切に使い分けること。モデルスコープはリクエスト単位、セッションスコープは長期保持に使うなど役割を明確にしましょう。
  • テンプレート内で繰り返される計算はth:withでローカル変数に格納し再利用することで、Thymeleaf パフォーマンス 最適化が図れます。
  • Spring MVCのモデルには必要最低限のデータだけを渡すことでテンプレートの負荷を軽減し、効率的な画面表示を実現できます。
  • 変数の加工や複雑な処理はコントローラやサービス層で行い、ビューは表示専用にすることが保守性・性能向上に有効です。

Pleiades+Gradle環境でのSpring MVC+Thymeleaf開発では、これらのポイントを意識して実装することで、快適で効率的なWebアプリケーション作りが可能になります。今後はさらにSpringのキャッシュ機能や非同期処理、Thymeleafのフラグメント活用なども学んでいくと、より高度なパフォーマンス改善が行えます。

ぜひこの記事の内容を参考に、Thymeleafの変数操作とSpring MVCモデル管理の基本をしっかり身につけてください。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Thymeleafで変数を埋め込む方法はどうやって書けばいいのですか?

Thymeleafでは、Spring MVCのコントローラから渡された値を、テンプレート内で ${変数名} という形式で埋め込みます。たとえば ${userName} のように書くと、モデルに設定された値がHTML上に表示されます。これはThymeleafの基本的な変数操作方法です。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
Spring認証(Spring Security)
Spring BootでCORSを設定する方法を完全解説!初心者でもわかるセキュリティ対策
New2
Spring認証(Spring Security)
パスワードをハッシュ化する理由とは?セキュリティ対策の基本をSpring Securityで学ぼう
New3
SpringのWeb開発(Spring MVC)
HTTPリクエストとレスポンスの基本を完全解説!Spring MVC初心者がWeb通信の仕組みをやさしく理解
New4
Spring認証(Spring Security)
ブラウザからのフォーム送信とは?HTTPリクエストの基礎を初心者向けに解説!
人気記事
No.1
Java&Spring記事人気No1
SpringのWeb開発(Spring MVC)
ルーティングとは?基本概念(Spring MVCのURL制御を理解)
No.2
Java&Spring記事人気No2
Thymeleaf
Thymeleaf とは?初心者向けにThymeleafの基本を徹底解説
No.3
Java&Spring記事人気No3
Springの基本
application.properties と YAML の基本をやさしく解説!初心者向けSpring Boot設定ファイル入門
No.4
Java&Spring記事人気No4
Springの基本
Spring Bootのデフォルトログ設定を徹底解説(Logback / SLF4J)
No.5
Java&Spring記事人気No5
Springの基本
Spring Bootの環境変数の設定方法をやさしく解説!初心者向けapplication.propertiesの使い方
No.6
Java&Spring記事人気No6
SpringのWeb開発(Spring MVC)
ループ処理(th:each)の基本を完全ガイド!Thymeafの繰り返し処理の使い方
No.7
Java&Spring記事人気No7
SpringのDB操作
JPAの標準クエリメソッド(findById, findAll)を完全解説!初心者でもわかるデータ取得の基本
No.8
Java&Spring記事人気No8
Spring認証(Spring Security)
セッション管理の基本(@SessionAttributes)を完全解説!初心者でもわかるセッションの仕組み