読者です 読者をやめる 読者になる 読者になる

GAE/G用golangフレームワーク選び

GAE/G用golangに使えるwebフレームワーク的なものを色々調べてみました。

Revel

http://revel.github.io/
一番有名?ぽいフレームワークでした。
ScalaのPlay frameworkを参考に作ったらしく高機能なようです。
Rails -> Play -> Revelという順でインスパイアされ作られたようでRailsすごいなーと思いました。
ただ、GAEは未サポートというか使えないそうなので断念。

Gorilla

http://www.gorillatoolkit.org/
golang gae framework」でググったらすぐに出てきた。
公式でもGAEでの使い方に触れていたり、公式サイト自体がGAE&Gorillaで動いているらしい。
フレームワークではなくライブラリらしい。
ルーターやセッション管理とか使いたいものごとに、公開されている。

Martini

http://martini.codegangsta.io/
出てすぐに話題になっったらしいDIできるフレームワーク
GAE上でもHello world的なのは動かせた。
ただしDI(リフレクション)できることが逆にパフォーマンスを落としてしまっているらしい。

Negroni

http://negroni.codegangsta.io/
「MartiniのDIできるのはせっかくgolangは型あるのに残念だよねー」的な話になって
Martini作者がDIをなくしてリメイクしたフレームワーク。(あ、フレームワークではない)
Node.jsのconnect的なもので、プラグインをつないでいくための仕組みがメイン機能のようです。
Handlerつないで、ルーティングする前後に処理をはさむこともできる。
これもGAEで動いた。
そんなサクサク作っちゃうってすごいね。

goweb

https://github.com/stretchr/goweb
GAE上で動くよという情報見かけたのですが
Github上のStarがちょっと少なかった。
ちゃんと調べてないけど、そっと閉じた。

結局どれを使うか

Gorilla + Martiniでやってみようと思います。
Martiniでフィルタ的な機能を実現しつつ
それ以外のルーティングやらJSON的な部分を主にGorillaでやってみようかなと。