はじめに
この記事はアドベントカレンダー Go5の22日目の記事です。
みなさん、Goのエディタ何を使っていますか?
Vim? Vscode?
そうですねGolandを使いましょう。
去年も同じタイトルの記事を書いたのですが、最新バージョンも2020.3となり新機能が続々と加わっています。
基本的なセットアップの再掲とともに新機能で僕が良いなあと思ったものをピックアップして行きたいと思います。
GoLandセットアップ
前提環境
mac
windowsやLinuxでも大体同じだと思います。多分。
Xcode
macで何かしら開発環境を入れるなら何も考えずに入れておきましょう。
インストール長いので最初にやっておきます。
インストールが完了したら下記コマンド。
xcode-select
echo "export SDKROOT=\"$(xcrun --sdk macosx --show-sdk-path)\"" >> ~/.bash_profile
購入
本家で買っても良いですが、国内代理店のサムライズムさんで買うと200円くらい安いです。
https://samuraism.com/jetbrains/goland
https://www.jetbrains.com/ja-jp/go/buy/#commercial?billing=yearly
どちらで買っても以降のアカウント管理はJetBrainsのマイページで行うことになるのでそこら辺は変わりません。
(サムライズムさんで購入すると購入完了メールが届くまで5分くらいかかるかな?)
買うと以降は下記の流れで購入したライセンスの確認ができるようになります。
- 購入完了メールにpdfがついてくる
- pdfにマイページのワンタイムなリンクがついてくる
- リンク踏んでJetBrainsにログイン(or新規登録&ログイン)
筆者は日頃複数言語使うのでAll Products Packを買っています。JetBrainsのほぼ全てのIDEを使えるのでおすすめです。
無料体験版ももちろんあるよ
インストール
GoLandをそのまま単体でインストールしても良いんですが、Toolbox App
を使いましょう。
IDEの自動アップデートが簡単になります。
他にもJVMのヒープサイズの変更など細かい設定ができるようになります。
アクティベーション
Toolbox App上でJetBrainsアカウントにログインすることでアクティベーションできます。
ブラウザ経由でログインするのですが、最終的にjetbrains://toolbox/jba/auth?code=xxx
にリダイレクトされます。
この際、もしかしたら下記のような警告画面が表示されるかもしれません。
ツールにリダイレクトされるだけなので、このまま送信
をクリックしてしまってください。
anyenv,goenv
GoLand経由でGoインストールもできるんですが、CLIオペレーションも考慮してanyenv,goenv
の使用をお勧めします。
anyenvインストール
こちら参照
https://github.com/anyenv/anyenv#1-install-and-configure-anyenv
anyenv-updateも入れる
https://github.com/znz/anyenv-update#installation
goenvのインストール
anyenv install goenv
exec $SHELL -l
Goインストール
echo "export GOENV_DISABLE_GOPATH=1" >> ~/.bash_profile
source ~/.bash_profile
anyenv update #アップデート情報が更新される
goenv install -l #現在インストール可能なバージョンが表示
goenv install 1.15.6 #最新バージョンをインストール
goenvの更新スピードについて
goenvがホストされているリポジトリにtoshi0607
さんが怒涛のごとくPRを投げていますが、たまにちょっとマージまで時間差が発生することがあります。そんな時は双方にスポンサーするか👍しましょう。
起動〜コーディング〜テスト実行
というわけで諸々準備できたので起動しましょう。
起動したらNew Project -> Go modules
を選択し、GOROOT
は先ほどインストールしたGoのディレクトリを選択します。
${HOME}/.anyenv/envs/goenv/versions/1.15.6
Create
をクリックします。
そして下記のファイルを作りましょう。
hoge/
|- go.mod #最初からある
|- hoge.go #これ作る
`- hoge_test.go #作る
package hoge
import "fmt"
func Do(input string) error {
if input == "yeah" {
return nil
}
return fmt.Errorf("ahhh")
}
package hoge
import "testing"
func TestDo(t *testing.T) {
// 配列にテストケースを記載
testCases := []struct {
name string
input string
isErr bool
}{
{
name: "success",
input: "yeah",
isErr: false,
},
{
name: "error",
input: "ahhh",
isErr: true,
},
}
for _, testCase := range testCases {
t.Run(testCase.name, func(t *testing.T) {
err := Do(testCase.input)
isErr := err != nil
if isErr == testCase.isErr {
t.Log("good!")
} else {
t.Error("bad!")
}
})
}
}
おもむろに↓な感じでデバッグポインタを作ってDebug go test hoge
をしてみましょう
テストできましたね。デバッグポインタ部分で止まったりしましたね。人権をゲットできました。
今回は配列testCases
にテストケースを記載しているのですが、GoLandはテーブルテストに対応しているのでテスト単位ではなくレコード単位でテスト再実行できます。
これで一通り完了です。おつかれさまでした。
GoLandのメリット
上記の通り、Vim, VSCode
はイチから環境構築する楽しみがあると思いますが、GoLandは最初から大体良い感じに仕上がってるので初回インストールからプロダクトコードを書いていくことができます。
もちろんPluginのマーケットもあるので、IDE上から欲しい機能を追加インストールできます。
新機能
かなりの頻度でアップデートされ、2020.3ではgorutine, テスト周りの機能が拡充されました。
https://www.jetbrains.com/ja-jp/go/whatsnew/
個人的にはテーブルテスト、testifyサポート、goroutineダンプの検索方法改善がアツいです。
最後に
比率としてはJetBrains製品はなかなかですが、みなさんGoLandを使いましょう。
[引用]https://job-draft.jp/articles/419
以上