いろいろな言語用のSinatra的フレームワークまとめ
Sinatraはよくできたウェブアプリ開発用フレームワークだと思う。前にも書いたが、URLから呼び出されるメソッドを決定するところがよくできているし、依存するライブラリもRackだけなので使いやすい。beforeフィルタの存在やstatus, content_typeといったメソッドなど、細かいところまで開発がやりやすいように作られているように感じる。
しかし、SinatraはRubyで書かれているので、他の言語では使えない。趣味で書いているならRubyを使えばいい話なのだが、仕事だとそうもいかないこともあるだろう。
そこで、Sinatraに似た感じで使えそうなフレームワークを探してみた。
※コメント欄などで教えていただいたものをいくつか追加しました。感謝!
- sinatra-on-perl
- perl用
- http://code.google.com/p/sinatra/
- 名前の通り、かなりSinatraっぽい。
- Schenker
- perl用
- http://d.hatena.ne.jp/spiritloose/20090730/1248925782
- yharaさんに教えてもらいました。これもかなりSinatraっぽく書けそう。
- juno
- python用
- http://github.com/breily/juno/tree/master/
- Sinatraという記述はどこにもないが、URLの記述の仕方がSinatraっぽく書ける。
- filter的な機能が見つけられなかったのがちょっと不安。web.pyのときにそれで困ったので。
- Fitzgerald
- PHP用
- http://github.com/jim/fitzgerald/tree/master
- ドキュメントがほとんどないのがちょっと困ったところ。
- limonade
- PHP用
- http://limonade.sofa-design.net/
- ooooooooさんに教えてもらいました。fitzgeraldよりもこっちの方がSinatraっぽいかも。
- loli
- haskell用
- http://github.com/nfjinjing/loli/tree/master
- なんとHaskellにまで。たしかにかなりSinatraっぽい雰囲気。
- step
- Scala用
- http://github.com/alandipert/step/tree/master
- oukayukaさんに教えてもらいました。
- 番外編
- 番外編2, web4r
- Common Lisp用
- Sinatraというよりは独自のポリシーを持ったフレームワークだと思うけど、せっかく紹介していただいたので。
- http://web4r.org/
- URLルーティングはSinatraとも似てるけどやっぱりちょっと違う感じ。ドキュメントは充実している。
こうやっていろいろなフレームワークに影響を与えているSinatraだが、本家Sinatraの方は、ここしばらくの最新版では、パッチを当てないとCGIとして動かないとか、WEBサーバとしてWEBRickを使えないとか、初心者が最初に使うときには地味にちょっと面倒くさいのが難点だった。どれもgithubで開発中の最新版では解決されている問題なので、早く新しいバージョンがリリースされないかなと個人的に待ち望んでいたのだが、そんな待望のSinatra 0.9.4が、7/26にリリースされていた。(0.9.3は出なかったぽい。理由はよくわからない。)これでパッチを当てないとCGIとして動かせないとかそういったバッドノウハウが不要になり、より一層便利に使えるようになったと言える。
余談だが、今回紹介したフレームワークは、本家Sinatraまで含めて全部がgithub上にリポジトリがあって、githubの普及ぶりを見せつけられた思いだ。