しばたテックブログ

気分で書いている技術ブログです。

WindowsのVisual Studio CodeでGo言語の開発環境を作る

【2017/07/20追記】

最新バージョンでの新しい手順を以下のエントリでまとめています。
本エントリではなく、こちらの手順を参照してください。

blog.shibata.tech

【追記ここまで】


@ishisakaさんのブログの手順を参考に私もやってみました。

opcdiary.net

注意事項

本エントリは2016/07/23に公開後、2017/01/05に各ツールのバージョンを以下の様に更新して書き直しています。

  • Visual Studio Code 1.3.1 → 1.8.1
  • Git for Windows 2.9.2 → 2.11.0
  • Go 1.6.3 → 1.7.4
  • Go for Visual Studio Code 0.6.39 → 0.6.51

1. Visual Studio Codeのインストール

こちらは特に言うことは無いでしょう。

code.visualstudio.com

からインストーラーをダウンロードして適当にインストールします。
私の場合は以前からインストールしてましたが、現時点の最新バージョンはVer.1.8.1です。

そしてGo for Visual Studio Codeの拡張機能を追加します。

Goで拡張機能を検索すると2つ出てくるのですが、キモいかわいいGopher君の方を追加してください。

f:id:stknohg:20160723021647p:plain

2. Gitのインストール

go getコマンドなどでGitが必要になるのでインストールします。

git-for-windows.github.io

からインストーラーをダウンロードして適当にインストールします。
今回はVer.2.11.0をインストールしました。

通常であればPATHが通っているのでgitコマンドが普通に使える様になるはずですが、通っていなければPATHを通しておいてください。

3. Goのインストール

The Go Programming Language

からWindows用のインストーラーをダウンロードしてインストールします。
今回はgo1.7.4.windows-amd64.msi (Ver.1.7.4)C:\Go\にインストールしました。

インストール後、GOROOTを設定し、%GOROOT%\binに対してPATHを通します。
PowerShellからだと以下の様な感じで設定できます。

# GOROOTの設定 (要管理者権限)
$GOROOT = 'C:\Go'
$GOROOTBIN = (Join-Path $GOROOT "bin")
[Environment]::SetEnvironmentVariable('GOROOT', $GOROOT, 'Machine')
[Environment]::SetEnvironmentVariable('PATH', [Environment]::GetEnvironmentVariable('PATH', 'Machine') + ";$GOROOTBIN", 'Machine')

また、今回はGOPATHの設定も併せて行います。
GOPATH%USERPROFILE%\Goにして、%GOPATH%\binに対してPATHも通しておきます。

# GOPATHの設定
$GOPATH = (Join-Path $env:USERPROFILE "Go")
$GOPATHBIN = (Join-Path $GOPATH "bin")
mkdir -p $GOPATHBIN
[Environment]::SetEnvironmentVariable('GOPATH', "$GOPATH", 'User')
[Environment]::SetEnvironmentVariable('PATH', [Environment]::GetEnvironmentVariable('PATH', 'User') + ";$GOPATHBIN", 'User')

ここまでで必要なソフトウェアのインストールは完了です。

4. Go for Visual Studio Codeための環境設定

ここからGo for Visual Studio Codeための環境設定を行います。

必要パッケージのインストール

以下のコマンドを実行してGo for Visual Studio Codeに必要なパッケージをインストールします。

# ※この情報はエントリ公開時のものです
# (旧)Go for Visual Studio Codeに必要なパッケージをインストール
# go get -u -v github.com/nsf/gocode
# go get -u -v github.com/rogpeppe/godef
# go get -u -v github.com/golang/lint/golint
# go get -u -v github.com/lukehoban/go-outline
# go get -u -v sourcegraph.com/sqs/goreturns
# go get -u -v golang.org/x/tools/cmd/gorename
# go get -u -v github.com/tpng/gopkgs
# go get -u -v github.com/newhook/go-symbols
# go get -u -v golang.org/x/tools/cmd/guru
# go get -u -v golang.org/x/tools/cmd/goimports

# 以下最新
# Go for Visual Studio Codeに必要なパッケージをインストール
go get -u -v github.com/nsf/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v github.com/zmb3/gogetdoc
go get -u -v github.com/golang/lint/golint
go get -u -v github.com/lukehoban/go-outline
go get -u -v sourcegraph.com/sqs/goreturns
go get -u -v golang.org/x/tools/cmd/gorename
go get -u -v github.com/tpng/gopkgs
go get -u -v github.com/newhook/go-symbols
go get -u -v golang.org/x/tools/cmd/guru
go get -u -v github.com/cweill/gotests/...

エラーがなければ%GOPATH%\bin配下に各パッケージの実行ファイルができているはずです。


【2017/01/05追記】

本エントリ公開時はフォーマットツールにgoimportsを使っていましたが、最新バージョンではgoreturnsに変更された様でインストールが不要になっています。
代わりにgogetdocgotestsが増えています。

また、使用するツールの設定は.vscode/settings.jsonである程度カスタマイズすることができます。

たとえばgo.formatToolであれば以下の様に、gofmtgoimportsgoreturnsのいずれかを選択できる様になっています。

  // Pick 'gofmt', 'goimports' or 'goreturns' to run on format.
  "go.formatTool": "goreturns",

細かい情報は公式サイトか実際の設定ファイルで確認してください。

Delve(デバッガ)のインストール

Go for Visual Studio CodeはデバッガにDelveを使用するのでインストールします。

以前はソースをMinGW上のGCCでMakeする必要があったのですが、今は単純にgo getするだけでインストール出来る様になっています。

# 今はgo getだけでDelveのインストールが可能
go get -u -v github.com/derekparker/delve/cmd/dlv

と、コマンドを実行して%GOPATH%\bindlv.exeができていればOKです。

最終的に%GOPATH%\binが以下の様になっていれば完了となります。

f:id:stknohg:20170105210928p:plain

最後に

これでGoの開発環境が出来上がります。
あとは適当にコードを書いてデバッグしてやればOKです。

f:id:stknohg:20170105211506p:plain

Delveのインストールが楽になったおかげで環境構築はものすごく簡単になりました。