Goのフレームワークを調べてみた
前回、前々回はbeego, echo と実際触って見ましたが、全部触ると時間がかかるので今回はGoで使えるその他ウェブアプリケーション用フレームワークを何点か調べてみました。
Goで使えるウェブフレームワーク
iris
特徴
- 超高速webフレームワーク
- すごくシンプル
- githubで公開している速度の数値は良さげ
しかし、ぐぐると権利問題やらこのフレームワークだけは選んではいけないみたいなことが書かれていました…
Goji
特徴
- 軽量フレームワーク系
- echoと同じ匂いを感じる
- Middlewareという仕組みがあり、リクエスト毎に必要な処理を集約することが可能
- Sinatra的高度な正規表現マッチも使えるルータ
- 簡単に実装出来るミドルウェアスタック
- グレースフルシャットダウン
- マルチプレクサ
- Goji自体にはほとんど機能はないらしい
ドキュメント
- 英語でならある。日本語はちらほら
Gin
特徴
- 比較的軽量なフルスタックWebアプリケーションフレームワーク
- マティーニと類似のAPIを提供
- HTTPルーターがレスポンスの速度を上げている
- 早い
- 軽量なため多くの機能はないが、WEBの最低限の機能はありそう。
ドキュメント
- 情報は豊富。日本語でも多い印象
Revel
特徴
- JavaのPlay Frameworkを参考に設計されたフルスタックフレームワーク
- MVCフレームワーク
- Webアプリケーション開発に必要な機能が一式揃ってる
- ホットリロード対応
- Go Templatesを使用
- ルーティング、 パラメータ解析、 検証、 セッション/フラッシュ、 テンプレート作成、 キャッシング、 ジョブ実行、 テストフレームワーク、国際化
- devモードでロギングが可能
- Filters機能がある(SpringのFileterと同じような機能。認証とかに便利)
- ライブラリ管理はdepを使用
ドキュメント
公式サイトのドキュメントは豊富。
日本語の情報も色々とある。
Martini
特徴
- モジュール形式のWebアプリケーションサービスフレームワーク
- PythonのFlaskのような感覚でコーディング
- ハンドラ、ルーティング、サービス、静的ファイル配信、ミドルウェアハンドラ(Filterのようなもの)、認証はある
ドキュメント
日本語の公式ドキュメントあるにはあるが、量が少ない。はじめのチュートリアルレベル。
深い情報は英語になっている。しかし知りたいことの情報は豊富にありそう。
Gorilla
特徴
- httpパッケージなどが揃っている
- パッケージを組み合わせて利用するイメージ
ドキュメントある?
- 日本語のドキュメントはあまりない。
ここからはマイクロフレームワーク
go-kit
特徴
- microservices用ツールキット
- tracing packageで、ログなのか追いやすい
- DNSやconsulなど様々なプラグインを追加可能
- Go-MicroやGizmoでも使われている
- go-kit用のCLIあり(kit)
- github star 12841(2019/03/11)
- パッケージを組み合わせて利用するイメージ
- 他のWAFにある軽量系のFWとあまり違いがわからない…
ドキュメント
- 日本語に訳された公式Docは無い
- qiitaとかの記事は結構見かける
Go Micro
特徴
- 一通り思想から理解しなければ使いこなすのが難しそう
- RPCベースのライブラリ(proto-rpc. json-rpc)
- microservices運用のpacageが一通り揃っている
- サービスをトレースするためのtrace-web
- Webサービスを展開するためのgo-web
- モニタリングツールのmonitor-web
ドキュメント
- 調べてない
goa
特徴
ドキュメント
- そんなに多くなさそうだが、公式の日本語Docはある
gizmo
特徴
- NY Timesが開発したFW
ドキュメント
- 調べてない
とまぁいろいろありまして、自分が今回使おうと思ったのは Gin
でした。
Pairsでの実例もありなかなか良さげなので Gin を使おうかなと思います。
それでは!