Golangの環境周りの確認と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周りの設定など、とても参考になりました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください