Golang の開発環境を一から構築してみる

こちらは　エンジニア歴の浅く開発環境構築がとても嫌いな僕による環境構築時のメモとしての記事になります。
参考になればうれしいですが、ならなくてもご了承ください。
また、当方まだまだ若輩の域を出ないため、手順や認識に誤りがあるかもしれませんが、その場合指摘いただけるととてもうれしいです！！

ということで早速構築していきたいと思います。
皆様ご存じの「みんなのGO言語」を参考書籍といたします。
ちなみに僕の使用している環境はWindows10になります。
どこから始めるの？といいますと、PCにローカルユーザを作成したというものすごい初期からになります。
（Win10でユーザ新規作成すると、タッチパッドのダブルクリックからの範囲選択が初期設定オフになってるの忘れてちょっと焦りました。余談です。）

#①Goをインストールする前に
GOをインストールする前に、いろいろと入れておいたほうがいいツール等をインストールしていきたいと思います。
記事執筆時にインストールしていくものは以下になります。
・VSCode
・Git

そのうち増やしたら追記します。

(1)VSCodeのインストール
こちらについては特に難しいことはありません。
以下のサイトよりダウンロードして指示に従ってインストールしてください。
https://code.visualstudio.com/

その他詳しい内容はすでに素晴らしい記事がたくさんあります。
詳しい使い方や日本語化等はそちら参考にしましょう。

(2)GitのインストールとGitHubの連携
僕はまずここでちょっと躓きました。（長くなってしまったので、どうでもいい場合は読み飛ばしてください。）
Gitについてもたくさんの記事が転がっていますので、詳しいことはそちらで確認するとよいです。
まずは以下のサイトからGitをダウンロードしてください。
https://git-for-windows.github.io/
ダウンロード後、ファイルを実行しインストールを指示に従って行います。
途中テキストエディタを選択する部分がありますが、ここで先ほどインストールしたVSCodeを選択しました。（別に他の物でも大丈夫です）
インストールを行うと「Git Bash」というアプリが追加されているのでそちらを立ち上げてください。
（もしこの段階でたたいてみたければ、「git --version」とか打つと確認できます）
Gitで後程のGitHubとの連携のためにユーザー名、メールアドレスの登録とSSHキーの生成をしておきましょう。

```
$ git config --global user.name "Name"   #ユーザー名
$ git config --global user.email example-mail@mail.com　#メールアドレス。””はいらない
$ ssh-keygen -t rsa -b 4096 -C "example-mail@mail.com"      # SSH認証キー（公開鍵）を生成。
```
ssh-keygenコマンドを入力すると、生成される鍵のファイル名と出力場所を確認するメッセージが表示されますが、特に変更なければそのままEnterで大丈夫です。（いろいろつくる場合はしっかり変更して管理できるようにしたほうがいいです）
その後パスフレーズの入力も要求されます。
未入力でも大丈夫ですが、セキュリティ対策として入れておきましょう。

次に、SSHのconfigファイルというものを編集します。これはGitHubへSSH接続する際に、どの秘密鍵を指定するのかを管理するのが目的らしいです。あんま詳しくないのでとりあえずやっておきました。

```
$ vim ~/.ssh/config
``` 

vimでファイルを開くもしくは新規作成します。vimは使い方がわからなければお調べください。テキストエディタの一つです。
開いた後に以下を張り付けて、:wqで保存して終了してください。

```
Host github
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_github
```

長い。。。もうちょっと説明省いていきます。

次にGitHubでアカウントを作成し、SSHキーの登録を行います。
アカウント作成後公開鍵の登録のために、先ほど作成した以下ファイルの中身を全文コピーしておいてください。
/Users/hoge/.ssh/id_rsa_github.pub

アカウントのメニューより、「Settings」→「SSH and GPG keys」→「New SSH key」とクリックしていきます。
Titleには任意の値、Keyには先ほどコピーした内容をそのまま張り付けて、「Add SSH key」をクリックします。
これでようやくSSHキーの登録までが完了しました。

それと、Gitのクローンとかするために証明書の追加をすると思いますが、「ssh-add」しただけではうまくいかなくて？？になりました。どうもWindowsの場合以下のコマンドと合わせてやる必要があるらしいです。
とりあえずGitのインストールはここまでですかねえ。

```
$ eval `ssh-agent`
$ ssh-add id_rsa_github
```

**※どこの作業やってる時だったか忘れてしまったんですが、「fatal: Not a git repository (or any of the parent directories): .git」のメッセージが出て詰まってしまったタイミングがありました。
その時は以下のようにGitの初期化をしたら解決したのでメモしておきます。初期設定がしっかりできていないときに出るものらしい。。。**

```
$ git init
```


#②GOをインストールして動かしてみる
さて、長かったですがここからGOをインストールしていきましょう。
(1)以下サイトよりダウンロードして実行し、GOのインストールを行ってください。
https://golang.org/

(2)インストール後に動作の確認として、GOのREPLとして有名らしいgoreというものを使って動かしてみていきたいと思います。
ちなみにREPLとは、キーボードなどから式や文を一行入力すると、即座に実行して結果を返してくれるやつです。対話式のツールのようなものですかね。
それとさっきまでGitBashでしたがここからはコマンドプロンプト使ってます。

```
$ cd C:\Users\hoge\go
$ go get -u github.com/motemen/gore/cmd/gore
```

cdはいいとして、go getってなんだ？ってところかと思いますが、こちらは外部パッケージをインストールするコマンドになります。
こちらのコマンドを実行すると、作業ディレクトリ配下にインストールされているかと思います。
このコマンドはgit cloneしているのと変わらないそうです。

次にgore を起動して実行してみましょう。

``` 
$ gore version 0.5.1  :help for help   #起動すると←のメッセージが表示されます
$ gore -autoimport
$ gore: could not load 'fmt' package: err: exit status 1: stderr: build flag -mod=mod only valid when using modules
```

おや、起動してみたところ何かエラーが出てしまいましたねえ。
いろいろ調べてみた結果、私のWindows10環境での解決方法は以下を行いました。

``` 
$ go install
``` 

これで解決しない場合は、一度GOREを物理的に削除して、go env で表示されるGO111MODULEをONにして再度go getしてみたりするとよいかもです。

``` 
$ gore -autoimport
gore version 0.5.3  :help for help
gore$  fmt.Println("hello")
hello
6
nil
``` 

ここまででひとまずインストールして動かしてみるとこまではできたかなと思います。
そのあと書籍でおすすめされているツールも go getしましょう。
goのインストールフォルダ（C:\Users\hoge\go）まで戻って以下を入力します。

``` 
C:\Users\hoge\go$ go get -u github.com/mdempsky/gocode
C:\Users\hoge\go$ go get -u github.com/k0kubun/pp
``` 
gore上でコード補完や出力ハイライトをしてくれるそう。


(3)プロジェクト管理ツールのインストール
管理ツールとして、ghqとpecoというツールをインストールしておきます。
まずghqですが、Windowsだとbrewが使用できないのでchocoを使おうかと思いましたが、chocoでも落とせなかったので以下でまずghqをインストールします。

``` 
C:\Users\hoge\go$ go get -u github.com/x-motemen/ghq
C:\Users\hoge\go$ git config --global ghq.root %GOPATH%\src  #ghqで取得するソースの置き先を指定

#以下コマンドでソースコードを取得できる。取得したソースは↑で設定した場所に置かれます
C:\Users\hoge\go$ ghq get https://go.googlesource.com/go
```

次にpecoをインストールします。こちらはchocoで落とせるので、powershellを管理者権限で開いて、

``` 
choco install peco
``` 
でダウンロードが可能です。
pathを通しておくのを忘れないようにしましょう。
pecoの使い方に関しては、ほかの記事を参考にしてください（詳しく理解できておらず。。）
Windowsで使う場合は、.batファイルにpecoのコマンドを登場させて使う形になるでしょうか。


長くなってしまいましたが、ひとまず導入の初歩中の初歩ということで、今回はここまでに致します。
自分用のメモ帳ですが、どなたかの参考になれば幸いです。