Railsのテンプレートエンジン選択を考えた

知り合いがERBを使っていたら「Slim使わないのは小学生までだよね」くらいの勢いで煽られてイラっと来たという話を聞いて、そういや今は何がデファクト何だろうと気になって少し調べてみた。

結論として何がデファクトかはよく分からなかったが、なんだかんだ無難なのはデフォルトのERBかなと言う見解に落ち着いた。少なくとも中学生以上になったらSlimとかそういう序列はない。
SlimやHamlを含め何を採用するにも一理はあるので、選択する理由の合意形成さえできていれば好みでどれを選んでも大きな問題はないだろう。

これを書いている人の近況

Railsでプロダクションに載せるものを開発したのは3年くらい前が最後。割と疎くなっている。
Rails6をキャッチアップしようとRuby on Rails 6 エンジニア 養成読本とか買ったけどいまだに積んでいるという。

一時期Hamlを好んで使っていた時期もあるけど、離れている期間が長かったのですっかり馴染みのないものになっている。

ERB, Slim, Hamlの比較

読み書きのしやすさ

SlimやHamlがいいのは書いているときの気持ちよさだろうか。コンテンツをタグで囲わなくていいというのは実際快適だ。
ただERBでもエディタの補完やEmmetである程度は補えるので、決定的な差ではないかな。

読むときもSlimやHamlの方が短くスッキリかける分見通しが良く、ERBに対してアドバンテージがある。
しかし自分にとってはSlimやHamlを脳内でHTMLに変換する負荷の方が高く、ソースが長くなることを差し引いてもトータルではERBの方が読みやすく感じる。慣れの問題かもだが。

開発においては書くより読む方が多いので、読みやすさ優先でERBの方に一票。

処理速度

昔はERBが遅かったこともあり速度面のデメリットがあったが、最近では十分に早くなっていてむしろSlimより速いようだ。
ちなみにHamlの処理系のHamlitが最速らしい?

とは言えいずれも僅差なので速度面ではどれを使っても問題はないだろう。

デザインとの協業のしやすさ

ERBだったらデザイナーさんに直接いじってと言えるが、SlimやHamlだと言えないかな。
書ける人もいるだろうけど比較的レアだと思う。少なくとも自分の周りにはいない。

デザインから上がってきたHTMLに変数やループを埋めてテンプレートに落とすのもERBの方がやりやすい。

周りとのコラボでやりやすいのはERB。これは個人的には大きな理由だ。

結論

主観的な好みもありつつ個人的にERBがいいんじゃない?と言いたいが合意が取れていればどれを使ってもOK。
自分も開発時に指示があればSlimでもHamlでも書く。

ただやはり特に何も指定がなければERBかな。
Railsのデフォルトであり、HTMLが分かればだいたい書けるということで、保守をする人のスキルも気にせずに済む。

参考