GoLandのインストールと基本設定（MacOS）

# 概要
MacOSでGoLangの開発を快適に行う環境構築をまとめた記事です。

ツールとしては [GoLand](https://www.jetbrains.com/go/download/#section=mac) を利用します。

# 対象読者
- MacOSを所持している方
- Linuxコマンドの基礎を理解しMacのターミナル操作が出来る方

# 前提条件

[Homebrew](https://brew.sh/index_ja) がインストールされている前提でお話させて頂きます。

# 筆者の実行環境
- MacOS Big Sur
  - CPU 2 GHz クアッドコアIntel Core i5
  - メモリ 32GB

# GoLangをMac上にインストールする

最初に `brew update` を実行してpackageを最新の状態にします。

続いて `brew install go` を実行します。

`go version` を実行し下記のように表示されれば成功です。

```bash
$ go version
go version go1.12.5 darwin/amd64
```

ちなみに複数のGoLangプロジェクトを運用していて各プロジェクト毎にバージョンが異なる場合は [goenv](https://github.com/syndbg/goenv) 等を利用すると良いでしょう。

（参考）[Mac に goenv を利用して Go をインストールする](https://qiita.com/daskepon/items/2bd71fdb54dc3967a528)

MacOS上にGoをインストール一番の理由は後の説明で出てくる [GoLand](https://www.jetbrains.com/go/download/#section=mac) によるコード補完やリファクタリング機能を利用しやすくする為です。

[Docker](https://www.docker.com/) 等を利用してバージョンが異なる複数のGoLang実行環境を作る事はさほど難しくないので無理に [goenv](https://github.com/syndbg/goenv) を利用しなくても良いというのが個人的な見解です。

# GoLandをMac上にインストールする

JetBrains製のIDEです。

現時点ではこのGoLandを利用する方法が最も開発体験が良いという印象です。

一応 [IntelliJ IDEA](https://www.jetbrains.com/idea/) のGo Pluginを利用する方法でも、ほぼ同様の事が実現出来るので、そちらを使っても問題ありません。（使い方もほぼ同じです）

（参考）[IntelliJ IDEAでGo言語(golang)を始める〜GOPATHの設定など](https://qiita.com/mokrai/items/7bd8b879572f58b03cdc)

https://www.jetbrains.com/go/download/#section=mac よりダウンロードを行います。

インストール手順に関しては非常に簡単なので省略させて頂きます。（アプリケーションディレクトリにコピーするだけ）

# GoLandの設定を行う

アプリケーションを起動します。

最初は設定がないと思いますので `Do not import settings` を選び次に進みます。

<img width="412" alt="GoLand-settings-1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/71899/10d23a4a-09d3-a6b9-bfbf-e0d3ee09b8b8.png">

## エディタの設定

ここは好みの領域になってきますが、私がいつもやっている設定を書いておきます。

### Preferences → Editor → General

- Remove trailing blank lines at the end of saved files - ON「行末の不要なスペースやタブを保存時に削除する」
- Ensure every saved file ends with a line break - ON「保存されたファイルの最後が改行で終わるようにする」

![GoLand.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/71899/5cf3cd11-a5c2-2e6a-5005-306ebad2bd8a.png)

### Preferences → Editor → General → Appearance

- Show line number - ON「行番号の表示」
- Show method separators - ON「メソッドの区切り線」
- Show whitespaces - ON「空白の表示」

<img width="746" alt="GoLand-settings-3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/71899/a06bf648-71f1-ce18-570c-a8979679cc48.png">

## GoLandにGOROOTを認識させる

この記事の通りにやっていれば `/usr/local/Cellar/go/1.12.5/libexec` になります。

Go → GOROOTを選択すればサジェスト欄に出てくるので、それを選択します。

<img width="998" alt="GoLand-settings-4.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/71899/7af373c4-b8f2-a4cc-9423-bb66a740e8da.png">

~~ただし [goenv](https://github.com/syndbg/goenv) を利用しているとサジェストで出てこないので、~~ その場合は明示的に絶対パスを指定する必要があります。

下記の記事等を参考にすると良いでしょう。

（参考）[GoLand のGOROOTにanyenv(goenv)内のgolangを指定する．](https://qiita.com/tatsuya_oyanagi/items/8f6fcc07a6b36995ce70)

### 2019-09-10 追記

Go 1.13に対応する為に `anyenv + goenv` でGoLangのインストールを行いました。

```
anyenv install goenv
exec $SHELL -l
goenv install 1.13.0
goenv global 1.13.0
```

`which go` の結果は `/Users/${username}/.anyenv/envs/goenv/shims/go` となっていますが、これはシンボリックリンクで実体は `/Users/${username}/.anyenv/envs/goenv/versions/1.13.0` にありますのでGoLandからは実体のパスを設定してあげる必要があります。

<img width="1007" alt="goenv.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/71899/6134c409-4c03-f297-e32a-bba753d5b7aa.png">

### 2022-10-25 追記

最近は `asdf` と `asdf-go-sdk` を利用しているので、`GOROOT` と `GOPATH` は↓のような感じで設定しています。

![GOROOT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/71899/e3bbbad3-60fa-bd7b-6ab9-49642e01889f.png)

![GOPATH.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/71899/54e914e9-4f57-4ca5-b43d-db553c70c317.png)

これらの値に関してはプロジェクトルートで以下のようなコマンドで確認可能です。

```
go env GOROOT
/Users/ユーザー名/sdk/go1.17.13

go env GOPATH
/Users/ユーザー名/go
```

（参考記事）
https://zenn.dev/yacchi21/articles/dd6d41b50fa1be#fn-158e-1

# 動作確認

動作確認用のプロジェクトを下記に用意しました。

https://github.com/keitakn/go-rest-api

上記のプロジェクトを自身のPCにダウンロードします。

```bash
git clone https://github.com/keitakn/go-rest-api.git
```

プロジェクトのインポートを行います。

「Open Project」より先程 `git clone` した動作確認用プロジェクトをインポートします。

<img width="769" alt="import_project.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/71899/c73e1ac0-ac48-d264-7399-8c8263c0fe1c.png">

## Go Modulesを有効にする

このプロジェクトはGo Modulesをpackage管理として利用しています。

Go → Go Modules(vgo)からGo Modulesを有効にします。

<img width="1011" alt="GoLand-settings-5.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/71899/710e3cec-26ec-afa9-c233-888aa3a8fdff.png">

プロジェクトルートで `go build` を実行して下さい。

IDEでのコード補完が有効になった事を確認出来るかと思います。

# おまけ1 目に優しいTheme（Solarized Theme）をインストールする

PCに向かう時間が長いとブルーライトで目に悪影響があるので、一番目に優しいと言われているカラーテーマであるSolarized Themeをインストールし設定します。

Plugins から `Solarized Theme` と検索を行いインストールを行います。

![SolarizedTheme.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/71899/db62ce1f-819d-d96a-9d74-136c3c448bf1.png)

Preferences → Appearance & Behavior → Appearanceから設定を行います。

<img width="1392" alt="SolarizedTheme2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/71899/b87f71c2-9605-210c-c42e-151a154cc702.png">

こんな感じのThemeになります。

[MacのNight Shift](https://support.apple.com/ja-jp/HT207513) と組み合わせるとさらに目に優しくて良い感じです。

# おまけ2 メモリ割当を増やす

PCのスペックに余裕がある場合は [こちら](https://pleiades.io/help/go/increasing-memory-heap.html) を参考にメモリヒープを増やすと動作が快適になります。


またメモリインジケーターを有効にする事で、メモリの使用量を把握出来ます。（設定方法は [こちら](https://pleiades.io/help/go/increasing-memory-heap.html) に記載があります。）

# 参考資料
- [GoLand の日本語ドキュメント](https://pleiades.io/help/go/meet-the-product.html)

以上になります。最後まで読んで頂きありがとうございました。