Goの環境周りの確認とREPL、フォーマッター、リンターについて
雰囲気でgolangを使っていたのですが、 みんなのGo言語
という本を読んで、もう少し土台を見直した方が良いなと影響を受けました。本を参考に、環境周りの設定など整理したので、情報を共有します。
環境変数
GOROOT
golangのインストールパス。 go env GOROOT
コマンドで確認できます。
go env GOROOT
# ↓出力結果例
/go/app # go env GOROOT
/usr/local/go
GOROOT配下の bin/
ディレクトリに go
、 gofmt
の実行バイナリが置かれています。インストール先のディレクトリなどを変更した場合は環境変数として $GOROOT
を設定したり、 $PATH
を通したりします。
GOPATH
外部のパッケージが保管されるパス。 go env GOPATH
で確認できます。
go env GOPATH
# ↓出力結果例
/go/app # go env GOPATH
/go
ちなみにパッケージは go get hoeghoge~
でgithubのリポジトリを指定してインストール。GOROOTと同じく bin/
に実行バイナリが置かれます。
src/
はソースコードが置かれているディレクトリ。バージョンが1.13以降は pkg/
に置かれる模様。
開発コードもこのGOPATH配下に設置します。
REPL
gore
というパッケージがあります。PythonやRubyでいうインタプリタのような機能をgolangで使えるようにするパッケージです。手軽に挙動を確認できて便利です。
# goreのインストール
go get -u github.com/motemen/gore/cmd/gore
REPL上で入力補完や色付けをしてくれるパッケージもあるので、一緒にインストールすると良さそうです。
# ↓gore上で入力補完を可能にする
go get -u github.com/mdempsky/gocode
# ↓色付けしてくれるパッケージ
go get -u github.com/k0kubun/pp
gore
コマンドでREPLが起動します。
/go # gore -autoimport
gore version 0.4.1 :help for help
gore> fmt.Println("Hello")
Hello
6
nil
フォーマッター・リンター
golangでは gofmt
というフォーマッターと、 go vet
というリンターが標準装備されています。
他には外部パッケージに goimports
、 golint
などがあります。
フォーマッター
- gofmt…標準のフォーマッター
- goimports…必要なパッケージを自動でコードに挿入してくれるフォーマッター
リンター
- go vet…標準のリンター
- golint…ガチガチに細かくチェックしてくれるリンター
golintはコメントの挿入場所まですごく細かく指摘してくれるので、チーム開発向け。goimportsは好みに応じて。
gofmt
と go vet
はファイルの保存時に自動で実行されるよう、エディタの設定をしておくとすごく便利です。
まとめ
文法やコーディングにばかり目を向けがちですが、効率よく開発しようと思えばフォーマッターやリンターなど、環境周りの設定はとても重要ですよね。
雰囲気で把握していたGOROOTとGOPATH周りの設定など、とても参考になりました。