このサイトについて

みんなのPython Webアプリ編 - Pythonとテンプレートエンジン

みんなのPython Webアプリ編 - Pythonとテンプレートエンジン

Pythonとテンプレートエンジン

テンプレート(template)とはもともと「型板」や「鋳型」という意味の英語です。そこから発して「定型書式」にもこの言葉が使われるようになりました。たとえば、ワープロにはたくさんの定型文が付属していることがあります。祝辞や季節の挨拶など、決まり切った形式のある文章のひな形があらかじめ用意されていることがあります。このような文書をテンプレートと呼ぶことがあります。テンプレートをひな形として、相手や送り主の名前、日付、季節など変化する部分だけを入れ替えて利用するのです。Eメールで決まった形式のある文書を送るときも、似たような機能を利用することがあります。

テンプレートエンジンとは

文字列やテキストを扱うときも、定型の部分と変化する部分をうまく切り分け、変化する部分だけを必要に応じて書き換えることができると便利です。定型の文字列に、置き換わる部分を埋め込み、必要に応じて出力を変化させるのです。そのようなときに利用するのが、テンプレートエンジン(またはテンプレートシステム)と呼ばれる仕組みです。

図01 テンプレート

図01 テンプレート

Webアプリケーションの出力として利用するHTMLは定型の部分が多くあります。HTMLは多くの種類のタグを使って記述します。タグは表示をする文字や画像などの種類、位置、大きさを決める役割を持っています。このため、タグ自身はあまり変わることがありません。Webアプリケーションでよく変わるのは、タグとタグの間にある文字列です。つまり、Webアプリケーションの出力として使うHTMLは、定型の部分と変化する部分がはっきり分かれていることが多いのです。

これまで、本書で取り上げてきたサンプルプログラムでは、テンプレートエンジンを使いませんでした。そのため、HTMLがプログラムの中に紛れ込んでいました。

HTMLがプログラムの中に紛れ込んでいると、プログラムがとても見にくくなってしまうことがあります。プログラムコード自体も一種の文字列です。Webアプリケーションの動きや機能を制御するためのプログラムの主要な部分と、HTMLのようなプログラム以外の文字列が紛れて、どの部分がどのような処理をしているのかが分かりづらくなってしまいます。また、HTMLのような文字列がプログラムに紛れ込むことで、プログラム全体が無用に長くなってしまいます。

そもそもHTMLには、文字や画像の大きさなどを制御するための文字列が多く含まれています。たとえば、Webアプリケーションが出力する文字の大きさを変えたいという目的のためだけに、プログラムに埋め込まれたHTMLを変更する必要があるのでとても面倒です。

HTMLのように、Webアプリケーションの動作に直接関係のない情報は、プログラムと別に管理して分離をした方が便利です。Webアプリケーションの動作を変えたいときにはプログラムを修正すればよいですし、文字の大きさなどを変えたいときにはテンプレートを変更すればよいわけです。

Webアプリケーションを作るとき、テンプレートの機能を活用できれば、より効率的にアプリケーションの開発が行えるはずです。

2014-09-03 15:00