ドキュメント
GinはGoで書かれた高性能HTTPウェブフレームワークです。Martiniに似たAPIを提供しますが、httprouterのおかげで最大40倍高速という大幅なパフォーマンス向上を実現しています。GinはREST API、Webアプリケーション、マイクロサービスなど、速度と開発者の生産性が重要な場面向けに設計されています。
なぜGinを選ぶのか?
GinはExpress.jsスタイルのルーティングのシンプルさとGoのパフォーマンス特性を組み合わせており、以下の用途に最適です:
- 高スループットのREST APIの構築
- 多数の同時リクエストを処理するマイクロサービスの開発
- 高速な応答時間が求められるWebアプリケーションの作成
- 最小限のボイラープレートでWebサービスを素早くプロトタイピング
Ginの主な機能:
- ゼロアロケーションルーター - ヒープアロケーションなしの極めてメモリ効率の良いルーティング
- 高性能 - ベンチマークで他のGoウェブフレームワークを上回る速度を実証
- ミドルウェアサポート - 認証、ロギング、CORSなどの拡張可能なミドルウェアシステム
- クラッシュフリー - 組み込みのリカバリミドルウェアがpanicによるサーバーのクラッシュを防止
- JSONバリデーション - リクエスト/レスポンスの自動JSONバインディングとバリデーション
- ルートグルーピング - 関連するルートの整理と共通ミドルウェアの適用
- エラー管理 - 一元的なエラーハンドリングとロギング
- 組み込みレンダリング - JSON、XML、HTMLテンプレートなどのサポート
- 拡張可能 - コミュニティミドルウェアとプラグインの豊富なエコシステム
はじめに
前提条件
インストール
Goのモジュールサポートを使用して、コード内でGinをインポートするだけで、ビルド時にGoが自動的にフェッチします:
import "github.com/gin-gonic/gin"最初のGinアプリケーション
Ginのシンプルさを示す完全な例を紹介します:
package main
import ( "net/http"
"github.com/gin-gonic/gin")
func main() { // デフォルトミドルウェア(loggerとrecovery)を含むGinルーターを作成 r := gin.Default()
// シンプルなGETエンドポイントを定義 r.GET("/ping", func(c *gin.Context) { // JSONレスポンスを返す c.JSON(http.StatusOK, gin.H{ "message": "pong", }) })
// ポート8080でサーバーを起動(デフォルト) // サーバーは0.0.0.0:8080でリッスンします(Windowsではlocalhost:8080) r.Run()}アプリケーションの実行:
-
上記のコードを
main.goとして保存します -
アプリケーションを実行します:
Terminal window go run main.go -
ブラウザを開いて
http://localhost:8080/pingにアクセスします -
{"message":"pong"}と表示されるはずです
この例で示していること:
- デフォルトミドルウェアを含むGinルーターの作成
- シンプルなハンドラ関数によるHTTPエンドポイントの定義
- JSONレスポンスの返却
- HTTPサーバーの起動
次のステップ
最初のGinアプリケーションを実行した後、以下のリソースでさらに学びましょう:
学習リソース
- Ginクイックスタートガイド - APIの例とビルド設定を含む包括的なチュートリアル
- サンプルリポジトリ - さまざまなGinのユースケースを示すすぐに実行できる例:
- REST API開発
- 認証とミドルウェア
- ファイルのアップロードとダウンロード
- WebSocket接続
- テンプレートレンダリング
公式チュートリアル
ミドルウェアエコシステム
Ginには、一般的なWeb開発ニーズに対応するミドルウェアの豊富なエコシステムがあります。コミュニティが提供するミドルウェアをご覧ください:
-
gin-contrib - 公式ミドルウェアコレクション:
- 認証(JWT、Basic Auth、セッション)
- CORS、レート制限、圧縮
- ロギング、メトリクス、トレーシング
- 静的ファイル配信、テンプレートエンジン
-
gin-gonic/contrib - その他のコミュニティミドルウェア