Goの環境周りの確認とREPL、フォーマッター、リンターについて

雰囲気でgolangを使っていたのですが、 みんなのGo言語 という本を読んで、もう少し土台を見直した方が良いなと影響を受けました。本を参考に、環境周りの設定など整理したので、情報を共有します。

環境変数

GOROOT

golangのインストールパス。 go env GOROOT コマンドで確認できます。

go env GOROOT

# ↓出力結果例
/go/app # go env GOROOT
/usr/local/go

GOROOT配下の bin/ ディレクトリに gogofmt の実行バイナリが置かれています。インストール先のディレクトリなどを変更した場合は環境変数として $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 というリンターが標準装備されています。

他には外部パッケージに goimportsgolint などがあります。

  • フォーマッター

    - gofmt…標準のフォーマッター

    - goimports…必要なパッケージを自動でコードに挿入してくれるフォーマッター

  • リンター

    - go vet…標準のリンター

    - golint…ガチガチに細かくチェックしてくれるリンター

golintはコメントの挿入場所まですごく細かく指摘してくれるので、チーム開発向け。goimportsは好みに応じて。

gofmtgo vet はファイルの保存時に自動で実行されるよう、エディタの設定をしておくとすごく便利です。

まとめ

文法やコーディングにばかり目を向けがちですが、効率よく開発しようと思えばフォーマッターやリンターなど、環境周りの設定はとても重要ですよね。

雰囲気で把握していたGOROOTとGOPATH周りの設定など、とても参考になりました。