2012年10月27日土曜日

SlimかHamlか、Rails Rumbleで使われたGem はてなブックマーク

Slim

Railsのテンプレートでは、ERBにするかHamlにするかという選択になるのが一般的ですが、比較的新しいSlimという、Hamlに似た優れたテンプレートがあります。
まだまだ十分に知られていないようなので、もっと普及させるべく、紹介したいと思います。

まずは見てみましょう。Slimはこんな感じ。
http://slim-lang.com/

Hamlはこんな感じになります。
http://haml.ursm.jp/

一見してわかるように、SlimはHamlによく似た、インデントによってHTML構造を表すテンプレート言語です。
一番の違いはタグに%(パーセント)がつかないこと。
行の先頭はタグの扱われるため、%をつける必要がありません。
その代わり、先頭にテキストを書く場合は |(パイプ)が必要です。

細かい文法の違いがあり、後発であることからSlimのほうが少し洗練されているようにも思いますが、それほどの違いではありませんので、Hamlを使っていた人はすぐに使えるでしょう。

Slimのほうが書きやすく、読みやすいのではないかと思いますが、%がついたほうがタグということが視覚的にわかりやすいという人もいますね。Slimの場合は、シンタックスハイライトが特に重要になってきそうです。

僕としてはHamlの%が、Perlの$と同じように人を寄せつけない雰囲気をもっていて、特にデザイナーに受け入れてもらいにくいのではないかと思っているので、Slim推しでいきたいなと今のところは思っています。

GitHubのリポジトリを見ると、Starが1,440(2012/10/27時点)ついていますし、開発も十分活発なようです。
https://github.com/slim-template/slim

Railsテンプレートの選択肢として、Hamlとともに検討してみてはいかがでしょうか。

Rails Rumbleで使われたGem

Ruby5を聞いていたらRails Rumbleで勝者が使っていたGemをまとめたブログが紹介されていました。とても興味深かったので紹介します。
http://www.dwellable.com/blog/Rails-Rumble-Winners-Gem-Teardown

なお、Rails Rumbleというのは4人までの少人数で、48時間以内に一気にRailsアプリを作り、その出来を競うイベントのようです。

勝者10チーム中10チームがjQueryを使い、9チームがCoffeeScriptSassを使用。
Twitter Bootstrapの使用が6チーム。

テンプレートでは、Hamlが5チーム、先ほど紹介したSlimが3チーム
Rails Rumbleに出るようなチームは先進的だと思われるので、Slimは今後もっと普及してくるのではないかと期待しています。(ただし、SidekiqでSlimが必要になるからかもとの注意書きがあります。)
HamlとSlimは兄弟のようなものなので、Haml系が8チームとも言えます。エンジニアだけで一気に作ろうというところでは、ERBのようなテンプレートよりも、よりプログラマーフレンドリーなHamlやSlimのような言語が使われるのでしょう。

DBでは、MySQLが5チームに対して、MongoDBが3チームというのも面白いです。
僕も自分のプロジェクトでMongoDBを使いはじめていますが、スキーマがないというのはとても快適です。

テストはRSpec。
DHHがRSpecを好きじゃないようなのでRailsのデフォルトにはなかなかなりませんが、そろそろ現実にほとんどの場合でRSpecが選ばれているということを受け入れてもいいのではと思いますね。

そしてバックグラウンドジョブの仕組み。
GitHubのdefunktが作ったResqueが定番かと思っていましたが、SidekiqというGemが今後の定番になるのかもしれません。

ちなみにSidekiqでもSlimを使ってるみたいです。
https://github.com/mperham/sidekiq/blob/master/web/views/layout.slim

Slimのシンタックスハイライト

SlimではVimやEmacsのシンタックスハイライトは用意されているのですが、ひとつ残念なのがGitHub上でのシンタックスハイライトが効かないこと。
上記SidekiqのGitHubリポジトリを見てもわかるとおり、Slimテンプレートはハイライトされていません。
対してHamlはシンタックスハイライトが効きます。
GitHubクローンの定番GitLabでも同様です。

GitLabではシンタックスハイライトに、PygmentsというPython製のライブラリを利用する、pygments.rbというGemを使っていますが、それがSlimに対応していないのです。

Slim向けのlexerというのを自分で書いてPygmentsに取り入れてもらえれば、GitLabでも(もしかするとGitHubでも)シンタックスハイライトされるようになるはずなので、このあたりを読んで勉強しようと思っています。

0 件のコメント:

コメントを投稿