Scalaでテンプレートエンジン使いたくなったので調べた。
探し方
GitHubでホスティングされているホットなものを探す。
こういうのを探すときは、
- そこそこstarがついている (= みんなに使われている)
- 定期的に新バージョンがリリースされている
- contributorが一人じゃない
辺りを確認しておくのがオススメ。 そうしておけば、突然ライブラリが消滅したり、時代に取り残されて渋々他のライブラリへの移行を余儀なくされる、みたいな悲しいことを回避出来る確率が上がる。
見つけたもの
探し方
で触れた観点を持って良さげだなと思ったは次の3つ。
1. Scalate
Mustache、Jade、Scaml、SSPと複数の表記方法をサポートしている。 テンプレートエンジンって「こういう風にかけ!」と表記方法をビシッと指定されているものしか使ったことがなかったが、複数の表記方法から手に馴染むものを選べるのは嬉しいんじゃないだろうか。
とは言えいくつかはHTML特化の表記方法なので「メール本文とかPush通知の文面とかもテンプレート管理したいんじゃー」という場合は、選択肢としてはMustacheかSSP表記のいずれかになる。オススメはSSPで、テンプレート変数が未定義だった場合にはランタイムで怒ってくれる。Mustacheはしれっとブランクになってしまうのでそれに気づかず事故りやすそう。
2. Twirl
有名な モリモリ フルスタック系フレームワークplayのテンプレートエンジン。
SBT Pluginとして追加する感じで、templateをコンパイルしてくれるのでテンプレート変数の過不足が無くなるのが良い。
テンプレート変数が未定義だった場合に Scalate * SSP
だとランタイムで気付けるが、Twirlだとコンパイル時点で気づける。
機能的は良いんだけど、コンパイルオプションで fatal-warnings
と warn-unused-import
を有効にしていると、 TwirlKeys.templateImports := Nil
を設定するハックをしないと unused import
で怒られて使えないのが難点。
3. Beard
ScalateとTwirlに比べるとstarが少ないが、表記方法はMustacheベースで手に馴染みやすい印象。 Last releaseが2016/4で、2019/4/5現在新し目なIssueも無いのでメンテは活発では無さそうな感はある。
その他
今回はJava用のテンプレートエンジンは探してないけど、そっちも探せば他にも良さげなものはあるかも。
他にオススメあったら教えて下さい。