はじめに
GolangでGin(ジン)を5分で試すサンプルです。
本記事では以下の3要素のみ扱います。
- Golang
- Go Modules
- Gin
アジェンダ
1. Ginとは
Ginは、Golangのフレームワークです。
歴史も長く、Golangで最も使われているフレームワークと言っても過言ではありません。
特徴は「薄い/早い/情報多い」と言った三拍子が揃っています。
Ginは数年前に職場で利用していました。
最近になり、あらためて触る機会が出たので再学習しています。
参考程度に、Golangのフレームワーク5つの人気比較を載せておきます。
FW Name | Stars | Forks | Open Issues |
---|---|---|---|
Gin | 40.2k | 4.6k | 238 |
beego | 25.5k | 4.9k | 746 |
echo | 17.7k | 1.6k | 37 |
kit | 17.5k | 1.8k | 59 |
fasthttp | 13k | 1.1k | 34 |
ref: Top 5 Golang Frameworks in 2020
2. Go Moduleで環境用意
ローカル環境
まずは、ローカルの環境を参考程度に載せておきます。
あくまでも自分の環境ですのであしからず。
$ sw_vers ProductName: Mac OS X ProductVersion: 10.15.7 BuildVersion: 19H524 $ go version go version go1.15.5 darwin/amd64
Go Modules
ディレクトリをつくり、go mod init
でセットアップを行います。
# ディレクトリを作る $ mkdir go-gin-sample $ pwd /Users/tweeeety/go/src/github.com/tweeeety/go-gin-sample # go modulesを初期化する $ go mod init github.com/tweeeety/go-gin-sample $ cat go.mod module github.com/tweeeety/go-gin-sample go 1.15
3. Ginを試す
Ginいれる
Go Modulesが整っていればgo get
するだけです。
正常であればgo.mod
、go.sum
のファイルが作成されているはずです。
$ go get github.com/gin-gonic/gin $ cat go.mod module github.com/tweeeety/go-gin-sample go 1.15 require github.com/gin-gonic/gin v1.6.3 // indirect
GinでGolang書いてみる
main.goにroutingとhtmlを表示するコードのみ書きます。
- main.go
package main import ( "github.com/gin-gonic/gin" ) func main() { router := gin.Default() router.LoadHTMLGlob("templates/*.html") data := "Hello Go/Gin!!" router.GET("/", func(ctx *gin.Context) { ctx.HTML(200, "index.html", gin.H{"data": data}) }) router.Run() }
- index.html
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Sample App</title> </head> <body> <h1>{{.data}}</h1> </body> </html>
起動してwebで確認
特に問題がなければgo run
で立ち上がります。
$ go run main.go [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env: export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode) [GIN-debug] Loaded HTML Templates (2): - - index.html [GIN-debug] GET / --> main.main.func1 (3 handlers) [GIN-debug] Environment variable PORT is undefined. Using port :8080 by default [GIN-debug] Listening and serving HTTP on :8080 [GIN] 2021/02/15 - 19:57:13 | 200 | 452.175µs | ::1 | GET "/" [GIN] 2021/02/15 - 19:57:14 | 404 | 660ns | ::1 | GET "/favicon.ico"
ブラウザでhttp://localhost:8080/
にアクセスすると以下のように表示されるのが確認できます。
参考
おわりに
かなり爆速で試せたんではないでしょうか?
今回のリポジトリは以下です。
https://github.com/tweeeety/go-gin-sample
薄いと開始が早くて良いですね!
routingもいろいろできます。そのあたりを含めたAPI Sampleは公式をご確認ください。