Goでweb作るよ
そう、作るんすよ。
というのも割といい感じだというのがわかったから
iOSエンジニアがGoを使ってみての所感
作るものは?
よくあるログイン機能を持ったCGMのなにがし。
既存の記事
Goフレームワークのパフォーマンス比較
Echo – Go 言語 REST API 開発向け Web Framework の紹
ʕ ゚皿゚ ʔ GolangのWeb Application Frameworkを色々試してみてもいいかしら?
比較対象
どこを見るの?
- Star数、リポジトリ情報
- パフォーマンス
- 簡単さ
- 名前
- チームに適しているか?
見ていくよ〜
Star数、リポジトリ情報
Framework | Star | リポジトリ見ての印象 |
---|---|---|
Revel | 6,337 | サンプル・モージュール・クーロンもプロモページもあっていい感じ |
beego | 6,234 | Sinatraを参考にしているのでさくっとAPI作るのには良さそう、Auto API documentsが気になる |
Gin | 5,425 | すごく早いらしい、martiniの40倍早いらしい |
martini | 8,178 | 一番人気、名前もいいね。唯一日本語ドキュメントがある |
goji | 2,947 | シンプル(小並感) |
echo | 2,976 | Ginよりさらに早い。まだ若い感じする |
パフォーマンス
標準になっているgo-http-venchmarkを参考にすると
- echo
- Gin
- Goji
- beego
- Revel
- Martini
ということだ。
Go Web Frameworks 比較を見てみてもMartiniが圧倒的に遅いという報告がある。
Build You Own Web Framework In Go
SinatraっぽいのとRailsっぽいのがあるという分類ができる。Martiniは内部的にリフレクションを使っているから遅いとか黒魔術が入っていたり、依存性の注入という話もややこしいのでちょっと嫌になってきた。
There are two main types of web frameworks. Rails-like frameworks with everything built-in so you can bootstrap your project really quickly. In Go there are some frameworks like this: Beego and Revel.
And there are Sinatra-like frameworks with a router and a few built-in features but you must bring your own ORM and lots of features have to be added. Most Go frameworks have adopted this style: Martini, Goji, Gin, gocraft/web, etc.
martiniとgin
それも一長一短あるかもだけど向かないかも
速度あっても機能がないとか、機能あってもめちゃ重いし難解とかは困るのでほどよいところを使いたい。
簡単さ
これはなんとなくRevelかなという印象。なるべく大変な理解はしたくないのだ・・・
Railsは触ったことあるし、同じような構成で開発できると嬉しいのだ。
Revelのサンプル
名前
これは非常に大事なことだ、愛着に影響する
Framework | 意味 |
---|---|
Revel | 大いに楽しむ、ふける、凝る、酒盛り、お祭り騒ぎ |
beego | 意味なし |
Gin | ジン(酒) |
martini | マティーニ(カクテル) |
goji | ヒマラヤで取れる赤い実 |
echo | 反響 |
うん、Revelいいね。
チームに適しているか?
Rails経験者2人、cakePHP経験者3人・・・go未経験者全員という状態で考えれば、なるべく言語以外のフレームワークに対する学習コストは下げたい。
またクライアント、バックエンド、その他開発で分業になるので繋ぎこみのめんどくささも回避したい。
そうなるとライブラリとか管理しやすい方がいい。
あと未経験者ばっかなのでサンプルプロジェクトが充実していると嬉しい。
結論 is Revel
それぞれ中身を見た感じRevelがいいなと感じた。
実際に触ってみるよ
書き途中