こんにちは、daihaseです。およそ2年ぶりくらいの投稿です。
最近仕事が色々目まぐるしく変わっていて、更新する余裕がなかったので滞っていましたが、また少しずつやっていければと思います。
さて、本日はGo Moduleについて。
Go ModuleはGo1.13から導入されたGo言語公式の依存パッケージ管理ツールです。
そのため、かつての$GOPATH/src配下にプロジェクトを作らないといけないといった制約がなくなりました。
(よってここの記事は古い情報になりますのでご注意を...)
Go Moduleの仕組みやそれ自体の説明は他の方も書かれているので、ここではサクっと最新のGo環境を整えることをゴールとします。
goenvのインストール
Home brewの場合はこちら
$ brew install goenv
Gitの場合はこちら
$ git clone https://github.com/syndbg/goenv.git ~/.goenv
goenvのPATHを通す
$ echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.zshrc
$ echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(goenv init -)"' >> ~/.zshrc
追記した後は以下のコマンドでzshを更新します。
$ source ~/.zshrc
また以下を入力してバージョンを確認しておきましょう。
goenv -v
goenv 2.0.0beta11
Goのインストール
次に以下のコマンドでGoをインストールします。
インストール可能なバージョンがリストで表示されるので、任意のバージョンをインストールしましょう。
goenv install -l
Available versions:
1.2.2
1.3.0
1.3.1
1.3.2
1.3.3
1.4.0
1.4.1
...
..
.
1.15beta1
1.15rc2
バージョン番号を指定しインストールします。
$ goenv install 1.**.*
インストールが完了したら、以下コマンドでglobal設定を行います。
$goenv global 1.**.*
最後にちゃんと指定したバージョンになっているか確認します。
go version
go version go1.15 darwin/amd64
GOPATHなどの設定
go getでインストールするパッケージなどをディレクトリとしてGOPATHを設定する必要があるので追記しましょう。
上記で設定したgoenvのPATHと合わせて以下のようになっていれば問題ありません。
export GOPATH=$HOME/go
export GOENV_ROOT=$HOME/.goenv
export PATH="$GOENV_ROOT/bin:$PATH"
eval "$(goenv init -)"
export PATH="$GOROOT/bin:$PATH"
export PATH="$PATH:$GOPATH/bin"
export GO111MODULE=on // 1.13 以降は不要
※コメントにもありますが、環境変数$GO111MODULEに関してはモジュール対応モードがデフォルトで有効となります。
プロジェクトの作成
任意のディレクトリ上で以下を実行し初期化します。
go mod init github.com/${GITHUB_USER}/${PROJECT_NAME}
これでディレクトリ直下に go.mod
が作成されます。
(なお間違えたらこちらのファイルを削除し、go mod init
からやり直せばOKです)
次にhello.goを作成し、以下のようなコードを書いてみます。
package main
import (
"fmt"
"rsc.io/quote"
)
func main() {
fmt.Println(quote.Hello())
}
プロジェクトの実行
以下のコマンドで作成したコードを実行してみましょう。
go run hello.go
...
go: finding module for package rsc.io/quote
go: downloading rsc.io/quote v1.5.2
go: found rsc.io/quote in rsc.io/quote v1.5.2
go: downloading rsc.io/sampler v1.3.0
go: downloading golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c
Hello, world.
go runはコンパイル(go build) + 実行までを行うコマンドです。
ちゃんと Hello, world
が表示されていますね。
※Go1.16以降はgo build
によるパッケージのインストールが廃止となっています。
go mod tidy
or go get <パッケージ名>@<指定するバージョン>
でインストールした後、 go build
or go run
を実行してください。
どうでしょうか、$GOPATH/src
時代の開発に比べるとずいぶんシンプルになったかと思います。
それでは良い開発ライフを〜