Ginの概要
Ginは、Go言語で書かれたWebフレームワークです。同じGo言語のWebフレームワークであるmartini*1に似たAPIを提供していますが、性能面ではhttprouterを使用することでmartiniの40倍高速にリクエストを処理することが可能になっています。
コミュニティによる開発が活発に行われておりGithubのStarやContributorの数でもGo言語のWebフレームワークの中では最多です。公式のドキュメントや各APIを使った各種のWebサービスのサンプルコードも充実している上、公式の日本語のドキュメントが提供されている数少ないWebフレームワークの1つです。
*1 martiniは初期のGo言語Webフレームワークとしてよく知られていますが、開発が2014で止まっています。
Ginの主な特徴
高速なリクエスト処理
httprouter パッケージを使うことで高速なリクエスト処理を可能にしています。httpサーバの多くはwebサイトの構成をTree構造で保存します。そしてリクエストを受け取るとtree構造のデータから探索します。httprouter は圧縮されたRadix tree(基本木)を使用することで効率的にリクエストにマッチするデータを探索します。
多数のミドルウェアサポート
Ginが受け取ったリクエストは複数のミドルウェアを経由して処理されます。Ginは多くのミドルウェアが提供されていますので、モダンなWebサイトで必要とされる機能はほぼ網羅しており、各種ミドルウェアを組み合わせることで目的の機能を提供することが可能です。 また、目的のミドルウェアがない場合は自身でミドルウェアを作ることも可能です。
クラッシュフリー
GinはHTTPリクエスト処理中に発生したパニックをキャッチしてリカバーするためサーバプロセスがクラッシュすることがありません。サーバの停止が発生せず、常にサービスを提供することが可能です。発生したパニックはSentryなどのモニタリングツールに送信することもできます。
JSONバリデーション
標準でJSONのパーサーとバリデーション機能が提供されています。
ビルトインのレンダリング
標準で提供されているHTML、XML、JSONのレンダリングエンジンを簡単なAPIを通じて使用可能です。
エラーマネージメント
ミドルウェアによって発生するエラーをいろいろな方法で管理することが可能です。ログに出力したり、データベースに送ることや、ネットワーク経由で送信することもできます。
Ginの動作環境
Go 1.13以上のバージョンで動作します。
Ginのライセンス
Ginは、MITライセンスの元に提供されているオープンソースのソフトウェアです。ユーザーはそのソフトウェアの使用や頒布、修正、派生版の頒布をすることに制限を受けません。
参考情報
公式サイト
https://gin-gonic.com/
公式リポジトリ
https://github.com/gin-gonic/gin
公式ドキュメント
https://gin-gonic.com/docs/
https://gin-gonic.com/ja/docs/ (日本語版)
サンプルコード
https://gin-gonic.com/docs/examples/
https://github.com/gin-gonic/gin/blob/master/README.md
Ginのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。