sgykfjsm.github.com

Scalatraについて調べた

最近、PHPのSilexを再び触り始めたこともあって、Scalaのマイクロフレームワークをちょっと探してみたら、Scalatraというものを見つけた。

Scalatra is a simple, accessible and free web micro-framework.

It combines the power of the JVM with the beauty and brevity of Scala, helping you quickly build high-performance web sites and APIs.

Scalatraの特徴

InfoQの記事“Scalatra: Sinatraに似たScalaのウェブフレームワーク”および公式の”Why would you want to use Scalatra?“より。超訳。

  • RubyのSinatraの原則を踏襲している。
  • マイクロフレームワーク。
  • Restfulでステートレス。
  • BBCとかLinkedInGuardin newspaperとかで使われてるらしい。
  • 手軽にハイ・パフォーマンスでスケーラブルなHTTP APIをWeb用やモバイル用に作れるらしい。
  • backbone.jsとかember.jsとかangular.jsとかと相性が良いらしい。
  • Scalaを学ぶのにいいんじゃない?
  • 16コアをフルに使うことができるので、Akka Actorsを楽に使えるよ。

後はScalatra’s philosophyを見とけば良いのかな。

ライブラリ類

公式が主に使ってそうなやつをデファクトのライブラリだとして、 scalatra / scalatraを見て勝手に判断した。

Test Framework

Specs2を使っている模様()。 ただ、ちょっとテストコードが少ないような…他にもある?

Template Engine

ScalateExampleで使っている。
一方で、scalatra-website-examplesでは、twirlを使ってたりするので、どちらかを使えればいいのだろう。なお、twirlはPlay Frameworkで採用でされているようなので、こっちを使えるようになっておくと潰しが効くかもしれない。

Database Access

DBアクセスというかは、永続層的なアレ。

公式のscalatra-website-examplesではscalatra-slickとして紹介されているが、要は普通にSlickも使えますよ、ということ。 一方、Squeryl紹介されているが、このへんはやっぱりSlickがType Safe社謹製なので、Slickを素直に使うほうが無難っぽい。

おまけ

ちょっと古いけど、UstにScalatraの解説動画があった。


Video streaming by Ustream

同じ人がブログ上でソースコードリーディングしてた。必読。


他にも押さえないといけないことはあると思うが、とりあえずはこんなところでそろそろScalatraを触ってみようと思う。 個人的にはOAuthあたりを標準でサポートしてくれると嬉しいんだけど、そのへんは自分で実装するしかないかなー。