Thymeleafにおけるテキスト出力:インライン記法と属性記法の使い分けとメリット

こんにちは。ゆうせいです。

Thymeleafで画面に文字を表示させる際、[[${msg}]] のように記述するインライン記法と、th:text 属性を使用する属性記法のどちらを使うべきか、悩むことがあります。新人エンジニアの方が現場で迷わないよう、それぞれの特徴と推奨される選択肢を解説します。

インライン記法と属性記法の違い

まず、提示された2つの記述方法がどのような仕組みで動いているかを整理します。

  1. インライン記法
<p>[[${msg}]] Thank you</p>

これは、HTMLのタグの中に直接、変数を埋め込む書き方です。

  1. 属性記法
<p th:text="${msg} + ' Thank you'"></p>

これは、HTMLタグの属性を利用して、タグの内側のテキストをプログラムで上書きする書き方です。

高校生でもわかる比喩による解説

これら2つの違いは、家具屋さんの展示方法に例えることができます。

属性記法は、家具の棚に「見本品」というカードを置いておくようなものです。後から店員さん(プログラム)がやってきて、その見本品を「実際の商品」に並べ替えます。カードがある場所ならどこでも中身を入れ替えられるため、棚そのものの形(HTML構造)を崩さずに済みます。

一方でインライン記法は、棚の木材に直接、マジックで「ここに商品Aを置く」と書き込んでしまうようなものです。どこに何が来るかは一目でわかりますが、後から棚のレイアウトを変更したいときに、文字が邪魔をして見栄えが悪くなったり、設計図(HTMLファイル)として扱いづらくなったりします。

どちらが良いか:原則は属性記法

結論から述べると、Thymeleafの設計思想に基づけば、属性記法(th:text)を使用する方が望ましいとされています。その最大の理由は、ナチュラルテンプレートという概念にあります。

属性記法(th:text)を採用するメリット

  • ナチュラルテンプレートの維持ブラウザでHTMLファイルを直接開いた際、th:textの中に記述された内容は無視され、タグの中に仮のテキストを書いておくことができます。これにより、サーバーを起動しなくても画面のデザインを確認できるため、デザイナーとエンジニアの分業が容易になります。
  • 構造の明確化どのタグがどのデータによって制御されているかが属性として明示されるため、HTMLの階層構造とプログラムのロジックを切り離して管理できます。

インライン記法([[...]])を採用するデメリット

  • デザインプレビューの破壊ブラウザで直接ファイルを開くと、[[${msg}]] という文字列がそのまま画面に表示されてしまいます。これは、完成後の画面イメージを損なう原因となります。
  • XSS対策の意識Thymeleafは自動的に安全な形へ変換(エスケープ)を行いますが、インライン記法を多用すると、どこでどのデータが展開されているかの把握が難しくなり、セキュリティ上の確認漏れが発生しやすくなります。

属性記法をより簡潔に書く方法

提示された属性記法では、文字列の結合に + 記号を使用していましたが、Thymeleafにはリテラル置換という便利な書き方があります。

<p th:text="|${msg} Thank you|"></p>

このように縦棒(|)で囲むことで、+ 記号を使わずに変数と固定文字列を混在させることができます。可読性が高まるため、実務ではこの書き方が頻繁に利用されます。

まとめ

特別な理由がない限りは、属性記法(th:text)を選択してください。HTMLとしての正しさを保ちつつ、プログラムの動的な処理を組み込むことが、メンテナンス性の高いコードへの第一歩となります。

学習を深めるためのステップは以下の通りです。

  1. 実際にHTMLファイルをブラウザで直接開き、インライン記法と属性記法(プレビュー用テキストあり)の表示の違いを確認してください。
  2. リテラル置換(縦棒で囲む記法)を使い、複雑な文章の組み立てを試してください。
  3. ナチュラルテンプレートという言葉の意味を、Thymeleafの公式サイトで調査し、その利点について考察してください。
  4. プロジェクトのコーディング規約を確認し、チーム内でどちらの記法が推奨されているかを把握してください。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。