個人的にHTMLテンプレートエンジンには昔からかなりこだわりがある大好き分野であり、何度か自作したりもしてきたんだけど、最近はちょっと冷めてきて、ここ最近というか長らく普通にERBを使っていました。

Webデザイナーから納品されたHTMLファイルを尊重するとERBで組み込むのが現実的な妥協点だと思っていたし、ERBというかそもそもHTMLって美しくないよなと思いつつも、もう20年もHTMLを書き続け、あまりにも慣れ親しんでしまっていたので。

…こういう考えってほんと老人ですね。思い込み捨てて新しいもの試さないと。ということで遅ればせながらSlim使ってみたらすごく気に入ったよという話です。

まずERBをSlimに書き換えるのは思っていたより全然楽だったということ。単純作業で書き換えられる。見た目は相当変わるけど、学習コストは小さい。

ERBだとこんな感じなのが、

<!DOCTYPE html>
<html>
  <head>
    <title>こんにちは</title>
  </head>
  <body>
    <h1>こんにちは</h1>
    <p class="main"><%= @content %></p>
  </body>
</html>

Slimだとこんな感じ。インデントが正しければ、主な作業はブラケットと閉じタグを消すこと。

! doctype html
html
  head
    title こんにちは
  body
    h1 こんにちは
    p.main = @content

閉じタグがなくなるので、閉じタグ書き忘れでハマらない。名前の「スリム」については、この程度だとインパクトないけど、実際の普通のWebページ程度のスケールだと閉じタグが無いだけでも行数がぐっと減ってコードの見通しが劇的に良くなる。結構「眺めたくなるコード」になります。出力されるHTMLが綺麗なのも良い。

まあ一般的には、phpファイルベースで直接デザイナーに修正入れさせるような世界があるらしいので、そのような世界には向かないのかもしれないけど。

ERBからSlimに変換するツールもあるようだし(使わなかったけど)、部分的に使うっていうのでもいいよね。

僕の場合はカンプからのコーディング、フロントエンドからバックエンドの開発まで一通り担当するパターンが多いので、フロントエンドもプログラマ寄りの効率重視にしたほうが合っているのかなあ、と思ってきたので積極的に使うつもり。

ということで、先日作ったRails4雛形アプリもSlim化しておきました。