このサイトについて

みんなのPython Webアプリ編 - テンプレートエンジンの動く仕組み

みんなのPython Webアプリ編 - テンプレートエンジンの動く仕組み

テンプレートエンジンの動く仕組み

プログラムで扱うテンプレートにはたくさんの種類があります。Webアプリケーションで使われるテンプレートエンジンにはよく似た特徴があります。テンプレートエンジンの正体は、文字列の置換を行うことを目的に作られた専門のプログラムです。多くのテンプレートエンジンは関数やクラスとして実装されています。Webアプリケーションでは、テンプレートエンジンの機能を活用して、出力として利用するHTMLを作ります。

まず、多くのテンプレートエンジンは独自のパターンを持った記法を持っています。HTMLのような文字列の中に、特定のパターンを持った文字列を埋め込むことで、変化する文字列の場所を指定するわけです。

置き換えを行うために利用する特定のパターンの具体例を示してみましょう。たとえば「${~}で囲まれた部分を置き換える」というような置換のためのルールがあるとします。以下の例だと、${title}という部分が他の文字列に置き換わって表示されます。もちろん、テンプレートエンジンの種類によって、置換ルールは異なります。

:::html
<h1> ${title} </h1>

文字列の中に変数を埋め込むようなイメージで、テンプレートの本体となる文字列を書いていきます。このようにして、Webアプリケーションの出力に利用するHTMLのひな形を作ります。ひな形は、独立したテキストファイルとして設置する場合もありますし、短いものならプログラムの中の文字列リテラルとして埋め込むこともあります。

このようにして作ったテンプレートは、テンプレートエンジンの本体となるプログラムで読み込みます。テンプレートエンジンのプログラムでは、テンプレートに埋め込まれた置換ルールを探し出し、必要に応じて置換を行います。

Pythonで利用できるテンプレートエンジンの多くはクラスとして実装されています。まず、テンプレート文字列を指定するなどしてクラスのインスタンスオブジェクトを作ります。その後、テンプレートに埋め込まれたパターンを置換するためのメソッドを呼び出して、Webアプリケーションの出力となるHTMLのような文字列を作ります。

テンプレートエンジン側で置換を行う文字列のようなデータは、Webアプリケーションのプログラム本体で作ります。テンプレートエンジンがHTMLを出力するときに、プログラムで作った文字列などを渡します。テンプレートエンジン側では、受け渡された置換に必要な情報を元に、HTMLなどを生成して、出力します。Webアプリケーションのプログラムとテンプレートエンジンは、ちょうど次の図のような関係になっています。

図02 テンプレートエンジン

図02 テンプレートエンジン

2014-09-03 15:00