同じ処理を f文字列 と Jinja2 で書いた比較サンプルを示します。題材は「ユーザー名と購入金額を整形して表示する」シンプルな例にします。
処理内容
- ユーザー名
name = "Tanaka" - 金額
price = 1234.5 - 出力形式: 「Tanakaさんの合計金額は 1,234.50 円です。」
1. f文字列で書く場合
name = "Tanaka"
price = 1234.5
# f文字列で直接整形
print(f"{name}さんの合計金額は {price:,.2f} 円です。")
Python出力
Tanakaさんの合計金額は 1,234.50 円です。
✅ 特徴:
- Pythonコード内で完結。
- 数値フォーマット(桁区切り・小数点以下桁数)を簡単に指定できる。
- 小規模スクリプトやログ出力に最適。
2. Jinja2で書く場合
from jinja2 import Template
template_str = "{{ name }}さんの合計金額は {{ price | round(2) | string }} 円です。"
template = Template(template_str)
output = template.render(name="Tanaka", price=1234.5)
print(output)
Python出力
Tanakaさんの合計金額は 1234.5 円です。
👉 Jinja2ではフィルタを組み合わせて整形します。
例えばカンマ区切りを入れたい場合はカスタムフィルタを定義するか、Python側で整形済みの値を渡すのが一般的です。
実務での使い分け
- f文字列:
- 単純な整形やスクリプト内の出力
- ログやデバッグメッセージ
- 小規模な処理
- Jinja2:
- HTMLやメール本文など複雑なテンプレート
- 条件分岐やループを含む出力
- 表示ロジックをコードから分離したい場合
💡 まとめると、f文字列は「即席の整形」、Jinja2は「構造化されたテンプレート管理」に向いています。


