LoginSignup
4
2

More than 5 years have passed since last update.

go modでモジュール管理、はじめました

Last updated at Posted at 2019-03-31

What’s "go mod" ?

ざっくりと

  • モジュール管理ができるやつだよー
  • go1.12から使えるよー

というもの

Why need "go mod" ?

  • 外部パッケージを使ってる時、バージョンの管理簡単にできるよー
  • 今まではvenderディレクトリで管理するのが主流っぽいよー
  • 私の場合はdockerを利用してCIするときに、go get全部書くのが面倒だったから入れたよー

How to use?

  1. GO111MODULE=on を設定しておくよー (v1.12ではこれしないと上手く動かないことあるよー)
  2. 開発してる環境で go mod init プロジェクトパス を叩くとmodファイルつくるよー
  3. パッケージを管理したいgoファイルをgo build するよー
  4. go.modに使ってるモジュールが自動で入力されるよー
  5. バージョン上げたければ go getするといいよー

Let's Try!

例えば、↓みたいな簡単な「gin」を用いたクライアントサーバーを立ち上げるパッケージがあったとします

package main

import "github.com/gin-gonic/gin"

func main() {
    r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "pong",
        })
    })
    r.Run() // listen and serve on 0.0.0.0:8080
}

ここで使ってるパッケージは gin-gonic/gin ですねー
とすると、 gin-gonic/gin のバージョンをmodで管理できると楽ですよねー

まずは modファイルを作っていきますー

$ go mod init main
go: creating new go.mod: module main

$ ls
go.mod  main.go

プロジェクト名は本当は$GOPATHでのパスを設定するのが良さそうですよー
でも今回は動作テストのために適当な名前をつけてますー

中身を確認すると

$ cat go.mod 
module main

go 1.12

こんな感じになってますー

次はbuildしたあとに中身を確認しますよー

$ cat go.mod 
module main

go 1.12

require (
        github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3 // indirect
        github.com/gin-gonic/gin v1.3.0
        github.com/golang/protobuf v1.3.1 // indirect
        github.com/mattn/go-isatty v0.0.7 // indirect
        github.com/ugorji/go/codec v0.0.0-20190320090025-2dc34c0b8780 // indirect
        gopkg.in/go-playground/validator.v8 v8.18.2 // indirect
        gopkg.in/yaml.v2 v2.2.2 // indirect
)

なんかすごく色々増えてることがわかりますねー
gin-gonic/gin でサーバーを立ち上げる時に利用しているパッケージをまとめて管理してくれてるようですねー

ちなみに、↑のように色々パッケージが書かれているmodファイルがあれば、go buildするときに勝手に足りないパッケージをDLしてくれますよー

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2