SlimとERB

SlimはHTMLテンプレートエンジンの一つです。テンプレートエンジンとは、テンプレートファイルにデータを当て込んで、動的にドキュメントを出力する仕組みです。

本記事のテーマはSlimですが、まずテンプレートエンジンの先輩格である「ERB」について説明させてください。

Ruby界隈では、長らくERBというテンプレートエンジンが使われてきました。今でもRubyビルトインライブラリに含まれています。

ERBは<% %>あるいは<%= %> というタグの中にRubyコードを埋め込むことでドキュメントを動的にレンダリングします。以前の記事RailsでTwitterクローンを作る(2) -- 画面レイアウトを整えるで作成したRailsのViewから抽出した、以下の例を見てもらったほうがわかりやすいでしょう。投稿一覧(@posts)をtableの中に1行1行表示していく部分です。

ちなみに、<% %>にはif文やeachなどHTMLに出力されない制御構造を書き、<%= %>で評価したRuby式はHTMLに出力されます。Rails等のWebアプリケーションで使った場合は、上のERBファイルにサーバ上でデータ(上の例で言うと@postsインスタンス変数)が当て込まれ、生成されたHTMLがユーザのブラウザに送信されることになります。

見て分かる通り、ERBの利点は「ほぼ普通のHTMLであり、学習コストが低い」ことです。

そして、これをSlimで書くと以下のように表現されます。

ずいぶんとスッキリとして、同時に「タテに長く」なったと感じるのではないでしょうか。具体的に変わった点を挙げてみると、

  • タグから<>がなくなっている
  • 閉じタグがない代わりに、Pythonのようにインデントで構造を表現している
  • <% %>の代わりに-<%= %>の代わりに=でRuby式を書いている

といったところです。ERBと違って最初に文法を覚える必要はありますが、閉じタグやclass="..."といった冗長な表現が排除されて"スリム"に書けるのがメリットです。

ちなみにHamlというテンプレートエンジンもSlimと同じくインデントで構造を表しますが、SlimはHamlよりも高速に描画されるのが利点です。

それでは、次のページでSlimの文法を紹介していきます。