ほげほげほげほ

ただのメモ置き場です。基本的にプログラム関連のメモ。

Goのフレームワークを調べてみた

前回、前々回はbeego, echo と実際触って見ましたが、全部触ると時間がかかるので今回はGoで使えるその他ウェブアプリケーションフレームワークを何点か調べてみました。

Goで使えるウェブフレームワーク

iris

特徴

  • 超高速webフレームワーク
  • すごくシンプル
  • githubで公開している速度の数値は良さげ

しかし、ぐぐると権利問題やらこのフレームワークだけは選んではいけないみたいなことが書かれていました…

Goji

特徴

  • 軽量フレームワーク
  • echoと同じ匂いを感じる
  • Middlewareという仕組みがあり、リクエスト毎に必要な処理を集約することが可能
  • Sinatra的高度な正規表現マッチも使えるルータ
  • 簡単に実装出来るミドルウェアスタック
  • グレースフルシャットダウン
  • マルチプレクサ
  • Goji自体にはほとんど機能はないらしい

ドキュメント

  • 英語でならある。日本語はちらほら

Gin

特徴

ドキュメント

  • 情報は豊富。日本語でも多い印象

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

特徴

  • github star 3003(2019/03/11)
  • ビズネスロジックオンリーの開発ができる
  • swagger documentの自動生成
  • CLI goagen

ドキュメント

gizmo

特徴

  • NY Timesが開発したFW

ドキュメント

  • 調べてない

とまぁいろいろありまして、自分が今回使おうと思ったのは Gin でした。
Pairsでの実例もありなかなか良さげなので Gin を使おうかなと思います。

それでは!