Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
76
Help us understand the problem. What is going on with this article?
@jumbOrNot

概観からGoのWebFrameworkを選ぶ(2016/02)

More than 5 years have passed since last update.

Goでweb作るよ

そう、作るんすよ。
というのも割といい感じだというのがわかったから
iOSエンジニアがGoを使ってみての所感

作るものは?

よくあるログイン機能を持ったCGMのなにがし。

既存の記事

Goフレームワークのパフォーマンス比較
Echo – Go 言語 REST API 開発向け Web Framework の紹
ʕ  ゚皿゚ ʔ GolangのWeb Application Frameworkを色々試してみてもいいかしら?

比較対象

どこを見るの?

  1. Star数、リポジトリ情報
  2. パフォーマンス
  3. 簡単さ
  4. 名前
  5. チームに適しているか?

見ていくよ〜

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を参考にすると

  1. echo
  2. Gin
  3. Goji
  4. beego
  5. Revel
  6. 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がいいなと感じた。

実際に触ってみるよ

書き途中

76
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
jumbOrNot
RareJobでEMをしています。フロント・ネイティブアプリ・webアプリ・デザインのチームの開発を担当しています。typescript/javascript/swift/kotlin/flutter/firebase/laravelあたりが好きです。
rarejob
明治神宮にあるオンライン英会話サービスを提供するベンチャー

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
76
Help us understand the problem. What is going on with this article?