読み方 : ジンジャ

Jinja

Jinjaとは?

オープンソースPython向けテンプレートエンジンの一つ。HTMLや設定ファイルなどの雛形(テンプレート)にデータを埋め込み、最終的な出力テキストを生成するソフトウェアである。PythonWebフレームワークFlask」の標準コンポーネントとして広く知られている。
Jinjaのイメージ画像

テンプレートエンジンの基本的な役割は、固定的な構造と動的に変化するデータを切り離して管理することにある。例えば、ECサイトの各Webページはレイアウトや装飾は共通でも、ユーザー名や商品情報などは閲覧ごとに異なる。Jinjaを使うと、変化する部分だけを特殊な記法で記述しておき、プログラムが実行される際に実際の値へ置き換えられる。表示用の記述と処理ロジックを分離して管理できる。

記法は波括弧を使った3種類で構成される。{{ }} は変数や式の出力、{% %} はif文for文などの制御構文、{# #} はコメントにそれぞれ対応する。たとえば {{ user_name }} と書けばユーザー名が挿入され、{% for item in items %} を使えば商品一覧を自動的に繰り返し出力できる。PythonのコードそのままではなくHTMLの構造を保ちながら記述できるため、比較的習得しやすい。

テンプレートの継承機能も備えており、ヘッダーやフッターなどのサイト共通部分を親テンプレートに定義し、各ページ固有の内容だけを子テンプレートで上書きすることができる。共通部分を一か所で管理できるため、大規模なサイトでも変更を一括適用しやすく、保守の手間を抑えられる。

セキュリティ面では、HTML特殊文字を自動的に無害な形式へ変換するエスケープ機能をデフォルトで有効にしている。利用者による入力をそのまま出力するとクロスサイトスクリプティングXSS)攻撃に悪用される恐れがあるが、この機能により開発者が個別に対処しなくても標準的な安全性が確保される。

「Jinja」という名称は日本語の「神社」に由来するとされる。現在はFlaskによるWeb開発にとどまらず、インフラ自動化ツールのAnsibleや各種構成管理ツールでのテンプレート記述にも採用されており、Pythonエコシステム全体で標準的なテンプレートエンジンとして定着している。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。