WindowsにGo言語をインストールする方法まとめ

WindowsにGo言語環境を整える方法は主に3つあります。

* Chocolatey でインストールする (**オススメ**)
* MSI形式インストーラーを使用してインストールする
* WSL(Windows Subsystem for Linux) に対して、Linuxのインストール手順を実施する

開発を手元のWindowsパソコンで継続的に行っていく場合、パッケージマネージャのChocolateyは非常に便利なので、Chocolateyでインストールする手順を強くオススメします。

# Chocolatey でインストールする

この手順を進めると、

* `GOROOT = C:\tools\go` 
* `GOPATH = %USERPROFILE%\go`

の構成でGo言語がインストールされます。

## まず管理者権限でコマンドプロンプトを起動する

以下の手順で操作します

1. `Winキー`を押す
2. `cmd` とタイプする
3. `最も一致する検索結果` に表示された、 `コマンド プロンプト` を右クリックする
4. `管理者として実行` をクリックする

![コマンドプロンプトを管理者として開く.png](https://qiita-image-store.s3.amazonaws.com/0/193814/d7760cf7-2c35-5f41-ddc9-45cf4ac92c2a.png)


## Chocolateyのインストール

すでにインストール済の場合はこの手順はスキップして下さい。

Chocolateyのドキュメントにある [Install with cmd.exe](https://chocolatey.org/docs/installation#install-with-cmdexe) に従って、以下のコマンドを実行します。

```sh:管理者：コマンドプロンプト
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
```

## Go言語のインストール

Chocolateyがインストール済みであれば、以下のコマンドでGo言語をインストール出来ます。

```sh:管理者：コマンドプロンプト
choco install golang
```

Go言語のバージョンアップをするときは、以下です。

```sh:管理者：コマンドプロンプト
choco upgrade golang
```

## GOPATH/bin をPATHに登録する

`GOPATH/bin` は`go get` コマンドでインストールしたコマンドが入る場所です。
ここをPATHに登録しておかないと`go get`でインストールしたコマンドが動きません。

以下の手順で操作します

1. `Winキー`を押す
2. `env` とタイプする
3. `最も一致する検索結果` に表示された、 `環境変数を編集` をクリックする
     ![環境変数を編集の呼び出し.png](https://qiita-image-store.s3.amazonaws.com/0/193814/4f16d9b3-6d74-c69b-e721-915cea8cd6ea.png)

4. ユーザーの環境変数の一覧から `Path` を選択状態にして、`編集`　をクリックする
    ![環境変数.png](https://qiita-image-store.s3.amazonaws.com/0/193814/b140b520-44c8-948c-3b1c-11afdb524948.png)
5. `新規` をクリックする
6. `%GOPATH%\bin` を入力する
    ![環境変数名の編集.png](https://qiita-image-store.s3.amazonaws.com/0/193814/7c8510ae-916f-ae4f-9fa1-e9f57dcc84ba.png)
7. `OK`をクリックして、環境変数名の編集ウィンドウを閉じる
8. `OK`をクリックして、環境変数ウィンドウを閉じる


## コマンド プロンプト を再起動する

コマンド プロンプトを❎で閉じたら、再び起動します。
今回は、管理者権限は不要なので、以下の手順で起動できます。

以下の手順で操作します

1. `Winキー`を押す
2. `cmd` とタイプする
3. `最も一致する検索結果` に表示された、 `コマンド プロンプト` をクリックする

![コマンドプロンプト起動](https://qiita-image-store.s3.amazonaws.com/0/193814/9124fc78-192c-3b07-a308-e111abdafaba.png)

## goコマンドのバージョンを確認する

コマンド プロンプトで以下をタイプして、Enterキーを押します。

```sh:コマンドプロンプト
go version
```

```sh:コマンドプロンプト表示結果
go version go1.10.2 windows/amd64
```

のように表示されたら無事インストール完了です。

# MSI形式インストーラーを使用してインストールする

この手順を進めると、

* `GOROOT = C:\go` 
* `GOPATH = %USERPROFILE%\go`

の構成でGo言語がインストールされます。

## MSI形式インストーラーをダウンロードする

<https://golang.org/dl/> にアクセスして、Windows用のインストーラー(.msiファイル)をダウンロードして実行します。

ダウンロードリンクは以下のあたり。

![Go言語MSIインストーラーのダウンロード](https://qiita-image-store.s3.amazonaws.com/0/193814/4fe80fb4-4cb6-28da-4906-600cf0c86064.png)

## インストーラーを実行する

表示される手順に従ってインストールを進めていきます。

![SetupWizard.png](https://qiita-image-store.s3.amazonaws.com/0/193814/1bfc5c34-8aad-a260-f2a5-785e1de93927.png)
*ゴーファー君かわいい*

インストール先フォルダは、変更せずに標準のままにしておく方が後で困りにくいので、そのままにしておきます。

![インストール先フォルダ.png](https://qiita-image-store.s3.amazonaws.com/0/193814/1753e986-6bff-42b8-97ba-73c30306d318.png)

あとはそのまま進めていって、Finishまで進めたらインストール完了です。

## GOPATH/bin をPATHに登録する

Chocolateyを使う場合と手順が同じです。
[こちら](#gopathbin-をpathに登録する)を参考に設定をしてください。

# WSL を使う場合

実際に試していないので、メモだけ。

https://stefanprodan.com/2016/golang-bash-on-windows-installer/

WSL上では問題ないが、Windows側でVSCodeなどを使う場合に、どうするかは解決していなさそう。
https://github.com/Microsoft/vscode-go/issues/926

WSL上の `~/go` が Windowsファイルシステムの `/mnt/c/Users/.../go` になるようにシンボリックリンクを貼り、Windows側にも同期される方法が良いらしい...
`ln -s /mnt/c/Users/go ~/go`

# インストールの確認

Go言語のインストール確認も込めて、Go言語の現在の標準的なパッケージマネージャ`dep`コマンドをインストールしてみましょう。

まずは、コマンド プロンプトを以下の手順で立ち上げます。

1. `Winキー`を押す
2. `cmd` とタイプする
3. `最も一致する検索結果` に表示された、 `コマンド プロンプト` をクリックする

![コマンドプロンプト起動](https://qiita-image-store.s3.amazonaws.com/0/193814/9124fc78-192c-3b07-a308-e111abdafaba.png)

`dep`コマンドのインストールコマンドを実行します。

```sh:コマンドプロンプト
go get -u github.com/golang/dep/cmd/dep
```

以下のコマンドでインストールが成功しているか確認します。

```sh:コマンドプロンプト
dep version
```

バージョン情報が表示されたら、成功です。

```sh:コマンドプロンプト表示結果
dep:
 version     : devel
 build date  :
 git hash    :
 go version  : go1.10.3
 go compiler : gc
 platform    : windows/amd64
 features    : ImportDuringSolve=false
```

以下のように表示される場合は、念のためWindowsの再起動を行ってから、`dep version`を再度試してみてください。

```sh:コマンドプロンプト表示結果
'dep' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
```