カテゴリ: Spring 更新日: 2025/12/17

Thymeleaf(タイムリーフ)入門!初心者でもわかるSpring Bootとテンプレートエンジンの使い方

Spring で Thymeleaf(タイムリーフ)の使い方入門
Spring で Thymeleaf(タイムリーフ)の使い方入門

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

生徒

「Spring BootでThymeleafを使う理由って何ですか?」

先生

「Thymeleafは、テンプレートエンジンとしてHTMLファイルとJavaコードを効率的に連携させるためによく使われます。フロントエンドとバックエンドを分けず、簡単にHTMLを動的に生成できるんですよ。」

生徒

「なるほど、具体的にはどう使うんですか?」

先生

「それでは、基本の使い方を説明していきましょう。」

1. テンプレートエンジンとは?

1. テンプレートエンジンとは?
1. テンプレートエンジンとは?

テンプレートエンジンとは、あらかじめ用意したHTMLの「雛形(テンプレート)」に、アプリケーションで用意したデータを差し込んで、最終的なWebページを作る仕組みです。Spring Bootでは、この役割を担う代表的なライブラリとしてThymeleafが使われます。テンプレート側は見た目(HTML)、コード側はデータや処理(Java)と役割を分けつつ、必要な箇所だけを置き換えて表示できます。

Thymeleafの特長は、テンプレートがそのまま通常のHTMLとしても開ける点です。デザイナーはブラウザで見た目を確認し、エンジニアはJavaから値を渡して動的表示を実現できます。学習の最初は「静的なHTMLに、必要な場所だけ差し込みポイントを作る」というイメージで十分です。難しい設定よりも、HTMLに小さな印(属性)を書く感覚で始められます。

超ミニサンプル(「差し込み」の雰囲気をつかむ)

次のように、HTMLの表示位置に「ここへデータを入れてね」という印を付けます。ここではメッセージの表示欄を用意しています。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>Hello Thymeleaf</title></head>
<body>
  <h1 th:text="${message}">ここにメッセージが入ります</h1>
</body>
</html>

コントローラ側でmessageという名前で文字列を渡すと、上のh1にその内容が差し込まれて表示されます。テンプレートは「雛形」、th:textは「差し込み口」という感覚で捉えると、初心者でも迷わず使い始められます。まずは静的HTMLに差し込みポイントを1つ作るところから練習すると、Spring BootとThymeleafの連携がスムーズに理解できます。

2. なぜThymeleafを使うのか

2. なぜThymeleafを使うのか
2. なぜThymeleafを使うのか

Thymeleafを選ぶ一番の理由は、「ふつうのHTMLとしてそのまま開ける自然なテンプレート」であることです。デザイナーはブラウザで見た目を崩さず確認でき、エンジニアはテンプレートに最小限の属性だけを足して動的表示へ拡張できます。学習の入り口がやさしく、既存のHTMLを流用しやすい点が大きな利点です。

  • 自然テンプレート:テンプレートが通常のHTMLとして閲覧可能。プレビューが簡単で、共同作業が進めやすい。
  • Spring MVCとの親和性Modelに入れたデータ(キー名)をそのままテンプレートで参照でき、ビュー名=HTMLファイル名の対応も直感的。
  • 属性ベースで分かりやすいth:textth:ifなどの属性をHTMLに付けるだけで、表示・条件分岐などを記述可能。
  • 保守性と可読性:見た目(HTML)と処理(Java)を分離しつつ、テンプレートはHTMLらしさを維持。レビューや差分比較がしやすい。
  • 拡張しやすい設計:レイアウト、繰り返し、国際化などWeb画面で頻出の要件に段階的に対応できる設計。

特にSpring Bootでは、src/main/resources/templates配下のHTMLを「ビュー名」として自動的に解決します。コントローラで"greeting"を返せばgreeting.htmlが表示される、といった対応がそのまま使えるため、画面追加の流れが理解しやすく、小さく作ってすぐ確認という開発サイクルを回しやすくなります。

最小の流れ(テンプレートとデータがつながる実感)

コントローラでmessageという名前の値を用意し、テンプレート側ではその値を表示するだけ。まずはこの往復を体験すると、Thymeleafの「シンプルさ」がつかめます。


// コントローラ(イメージ)
model.addAttribute("message", "ようこそThymeleaf");
return "greeting";

// greeting.html(イメージ)
<h1 th:text="${message}">プレースホルダ</h1>

このように、「ビュー名」→「HTML」→「差し込み属性」という一直線の流れで画面を作れるのがThymeleafの強みです。まずは小さな表示から始めて、必要になったら少しずつ属性を追加していくと、初学者でも迷わずステップアップできます。

3. th:textの使い方

3. th:textの使い方
3. th:textの使い方

th:textは、HTMLの要素内にJavaのデータを挿入するためのThymeleafの属性です。以下の例では、HTMLの中でth:textを使い、コントローラから渡されたデータを表示しています。


package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class GreetingController {

    @GetMapping(&quot;/greeting&quot;)
    public String greeting(Model model) {
        model.addAttribute(&quot;message&quot;, &quot;こんにちは、Thymeleafの世界へようこそ!&quot;);
        return &quot;greeting&quot;;
    }
}

このコントローラでは、model.addAttributeメソッドを使ってmessageというデータをgreetingページに渡しています。HTMLの中でth:textを使うと、以下のように表示されます。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Greeting Page</title>
</head>
<body>
    <h1 th:text="${message}">ここにメッセージが表示されます</h1>
</body>
</html>

th:textは、HTML要素内にmodel.addAttributeで渡されたデータを表示します。例えば、上記の例では、「こんにちは、Thymeleafの世界へようこそ!」と表示されます。

4. th:ifの使い方

4. th:ifの使い方
4. th:ifの使い方

Thymeleafには条件分岐を実現するためのth:ifという属性もあります。th:ifを使うことで、条件に応じてHTML要素を表示したり非表示にしたりすることが可能です。

例えば、以下のようにth:ifを使って特定のメッセージがある場合のみ要素を表示させるコードを見てみましょう。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Conditional Page</title>
</head>
<body>
    <p th:if="${message != null}" th:text="${message}">メッセージがここに表示されます</p>
    <p th:if="${message == null}">メッセージはありません</p>
</body>
</html>

上記の例では、messageが存在する場合、th:if="${message != null}"で条件が満たされ、messageの内容が表示されます。反対に、messagenullの場合は、「メッセージはありません」というテキストが表示されます。

5. 実際に表示を確認する

5. 実際に表示を確認する
5. 実際に表示を確認する

Thymeleafテンプレートの動作を確認するには、Spring Bootアプリケーションを起動し、ブラウザでページにアクセスします。例えば、http://localhost:8080/greetingにアクセスすると、コントローラで設定したメッセージがgreeting.htmlで表示されます。

6. まとめ

6. まとめ
6. まとめ

この記事では、Spring BootにおけるThymeleafテンプレートエンジンの基本的な使い方について詳しく解説しました。Thymeleafを使えば、HTMLファイルにJavaのデータを埋め込み、動的なウェブページを簡単に構築できます。特に、th:textth:ifといった便利な属性を使用することで、データの表示や条件分岐をHTML上で実現できます。

また、テンプレートファイルの配置場所やコントローラからのデータの渡し方についても説明しました。src/main/resources/templatesにHTMLを保存し、Modelオブジェクトを使ってデータを渡す方法は、初心者でも簡単に理解できる手順となっています。

以下に、今回の内容を基にしたサンプルコードを再掲します。このコードを参考にして、自分のSpring BootプロジェクトでThymeleafを試してみましょう。


package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class GreetingController {

    @GetMapping("/greeting")
    public String greeting(Model model) {
        model.addAttribute("message", "Thymeleafで動的なページを作成!");
        return "greeting";
    }
}

上記のコントローラに対応するHTMLは次の通りです。Thymeleafの属性を使ってデータを表示しています。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Greeting Page</title>
</head>
<body>
    <h1 th:text="${message}">ここにメッセージが表示されます</h1>
</body>
</html>

このコードを実行すると、ブラウザでhttp://localhost:8080/greetingにアクセスした際に、「Thymeleafで動的なページを作成!」というメッセージが表示されます。

Thymeleafを活用することで、バックエンドで処理したデータをフロントエンドに簡単に渡すことができ、効率的なウェブアプリケーション開発が可能になります。ぜひこの記事を参考に、独自のプロジェクトを構築してみてください。

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

生徒

「Thymeleafを使うと、Javaのデータを簡単にHTMLに表示できるんですね!」

先生

「その通りです。特にth:textth:ifのような属性は、動的な表示や条件分岐に非常に便利ですよ。」

生徒

「テンプレートのフォルダ構成も分かりやすいので、ファイルを管理しやすいですね。」

先生

「その通りです。Spring BootとThymeleafの組み合わせは、初心者にも最適な開発環境です。」

生徒

「次はth:eachを使ってリストデータを表示する方法を試してみたいです!」

先生

「良いですね。リストやテーブルの表示にもThymeleafは最適です。次回はその方法について詳しく説明しましょう!」

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

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

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

Spring BootとThymeleafを組み合わせると、初心者でも動的なWebサイトを作れるというのは本当ですか?

本当です。Spring BootとThymeleafはテンプレートエンジンとして連携しやすく、Javaで作ったデータをModelでテンプレートに渡し、th:textなどのThymeleaf属性で簡単にHTMLへ表示できます。複雑なJavaScriptを使わなくても動的なWebページを作れるため、プログラミング初心者にとって学びやすい組み合わせです。Spring Bootのコントローラで文字列やリストのデータをModelへ入れ、テンプレート側で取り出すだけで、動的なメッセージ表示やページ生成ができます。テンプレートエンジンの中でもThymeleafはHTMLを壊さずに差し込みができるため、初心者がつまずきにくいというメリットがあります。

Thymeleafは学習コストが低いと言われていますが、その理由は何ですか?

理由は三つあります。HTMLとしてそのまま読み込める、テンプレートエンジンの構文が直感的である、Spring Bootと相性が良いという点です。特にth:textやth:ifは名前の役割が分かりやすいため、プログラミング初心者でも理解できます。また、テンプレートをブラウザで開いて見た目を確認できるのは大きな学習メリットです。
カテゴリの一覧へ
新着記事
JavaのHttpServletResponseWrapperを完全解説!初心者でも理解できるレスポンス処理のしくみ
JavaのScannerクラスの使い方を徹底解説!初心者でも簡単に学べる入力処理
JavaのArrayListクラスとaddメソッドを完全解説!初心者でもわかるリスト操作
Javaの@Idアノテーションを徹底解説!初心者でもわかるデータベースとの連携方法
人気記事
No.1
Java&Spring記事人気No1
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.3
Java&Spring記事人気No3
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.4
Java&Spring記事人気No4
JavaのBigDecimalクラスcompareToメソッド完全ガイド!初心者でもわかる大小比較の基本
No.5
Java&Spring記事人気No5
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法
No.8
Java&Spring記事人気No8
JSPとは何か?初心者向けにできること・仕組み・特徴をやさしく解説