ドキュメント
Ginは Go で書かれた高性能なHTTP Webフレームワークです。httprouter の採用により、Martiniに似たAPIを提供しながら、パフォーマンスは最大40倍高速です。GinはREST API、ウェブアプリケーション、マイクロサービスの開発で、高速性と開発効率を重視するシナリオに最適です。
Ginを選ぶ理由
GinはExpress.js風ルーティングのシンプルさとGoの高性能を組み合わせ、次の用途に理想的です:
- 高スループットなREST API構築
- 多数の同時リクエストを捌くマイクロサービス開発
- 高速レスポンスが要求されるウェブアプリ
- 最小限のボイラープレートで素早くサービスを試作
Ginの主な特徴:
- メモリ割り当てゼロのルーター - ヒープ割り当てなしで極めてメモリ効率の良いルーティング
- 高パフォーマンス - Go製他フレームワークと比較したベンチマークで圧倒的な速度
- ミドルウェア対応 - 認証、ログ、CORSなど拡張可能なミドルウェアシステム
- クラッシュ防止 - 内蔵リカバリーによる安全な運用
- JSONバリデーション - リクエスト/レスポンスの自動バインディングと検証
- ルートグループ化 - 関連するルートの整理と共通ミドルウェア適用
- エラー管理 - 集中管理によるエラーロギングとハンドリング
- レンダリング機能 - JSON, XML, HTMLテンプレート等対応
- 拡張性 - 豊富なコミュニティミドルウェア・プラグイン
はじめに
必要条件
インストール
Goモジュール対応環境なら、コードでGinをimportすればビルド時に自動取得されます:
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には充実したコミュニティ製ミドルウェアが揃っています。主なミドルウェアは下記で探せます:
-
gin-contrib – 公式のミドルウェアコレクション。内容例:
- 認証(JWT, Basic認証, セッション)
- CORS, レート制限, 圧縮
- ログ, メトリクス, トレーシング
- 静的ファイル配信, テンプレートエンジン
-
gin-gonic/contrib – 追加のコミュニティ製ミドルウェア