Golang

2021年1月11日

【Go】各ツールのインストール及び設定<環境準備編>

インストール方法

公式サイト「Download and install」を参考にインストールします。
各OS用のインストール方法は公式サイトをご確認ください。ここでは説明は省きます。

https://golang.org/doc/install

AWS EC2(Amazon Linux  2)に最新のGoをインストールする方法

Amazon Linux 2でGoをインストールする場合、普通に検索すると「amazon-linux-extras」を使ってインストールする情報が出てくると思います。
しかしこの方法では古いバージョンのGoしかインストールできません。(この記事の時点で go1.11.3)

Goの公式サイトで最新バージョンを確認します。(この記事の時点で go1.15.6)
下記のようにして最新のソースをダウンロードしてインストールします。

$ wget https://dl.google.com/go/go1.15.6.linux-amd64.tar.gz
$ sudo tar -C /usr/local -xzf go1.15.6.linux-amd64.tar.gz
$ export PATH=$PATH:/usr/local/go/bin
$ exec $SHELL -l
$ go version
go version go1.15.6 linux/amd64

構文チェックや自動整形ツールのインストール

よく使用される構文チェック(静的解析)やフォーマッタ(自動整形)ツールです。
標準パッケージに付属しているものは別途インスールする必要はありません。

構文チェックに関しては「govet」や「golint」は使用せず「GolangCI-Lint」をお勧めします。

GolangCI-Lint

非推奨になったツールの代わりにまとめて推奨ツールをインポートしてくれるのが「GolangCI-Lint」です。現時点ではこのツールを使用したらいいと思います。

https://golangci-lint.run/

インストールはOSごとに違うので、上記の公式サイトを参照ください。
自動的にインストールされるLinterの一覧は下記に記載されており、後述の「govet」も含まれています。

https://golangci-lint.run/usage/linters/

gofmt

goの標準パッケージに含まれるソースコード自動整形ツールです。

goimports

Go のインポート行を自動的に整理・追加してくれるツールです。go fmt + import を実行してくれるため、gofmtの上位互換と言えます。

goreturns

こちらはfmt + importに加えてさらに、function 内で戻り値に合わせた return の補完をしてくれます。基本的にgoreturnsを使用したらいいと思います。インストール方法は下記を参照。

https://github.com/sqs/goreturns

古い情報で非推奨のツールに注意

構文解析やコード整形で調べると、すでに非推奨(deprecated)となったツールの紹介が検索でヒットします。
Go言語界隈はまだまだ日進月歩で変化し続けていますので、ほんの一年前まで公式で使用されているツールが、新ツールに変わりたちまちサポート対象外になるケースがあります。

govet

goの標準パッケージに含まれる静的解析ツールです。上記の「GolangCI-Lint」に含まれています。

golint(※非推奨)

コードのコーディングスタイルの問題を検出するツールで、エラーと言うより提案をしてくれます。このツールも情報量も多いのですが非推奨(deprecated)となっています。
※個人的には「関数の上には必ずコメントをこの形式で書け!」とか、キャメルケースなのに「IdはIDと書け!」とか疑問符がつく指摘事項が多かったので、非推奨になってくれて良かったと思っています。

 

VSCodeの設定

Go言語の拡張機能

これは必須です。インストール方法などは公式サイトを参照。

https://marketplace.visualstudio.com/items?itemName=golang.Go

VSCodeの個別設定

ほんとはハードタブとか嫌いなのですが、公式であるgofmtのスタイルがハードタブになっているため、下記のようにしています。
自動整形は「goreturns」、構文解析は「GolangCI-Lint」を指定しています。
ファイル保存時にフォーマットをかけるようにしています。

{
    "[go]": {
        "editor.tabSize": 4,
        "editor.insertSpaces": false,
        "editor.formatOnSave": true,
        "editor.formatOnPaste": false,
        "editor.formatOnType": false
    },
    "go.formatTool": "goreturns",
    "go.lintTool": "golangci-lint"
}

パッケージ管理ツール

Go Modules

これも古い情報が多く掲載されておりますが、Go 1,11より$GOPATHではなくGo Modulesを使用します。
また環境変数の管理の仕方もGo 1.13より変わっています。

https://github.com/golang/go/wiki/Modules

環境変数でGo Modulesを有効にして、初期化する方法は下記になります。(example.com/golang_echo_sampleの部分は適当です)

$ go env
$ go env -w GO111MODULE=on

$ go mod init example.com/golang_echo_sample

次の記事で、AWS(EC2)でサンプルソースを動かしてみます。

LINEで送る
Pocket

label

isaka

Written by
isaka

バックエンドエンジニア

CONTACT

お問い合わせ、ご依頼などは下記電話番号かメールアドレスまでご連絡ください。
※内容により回答までお時間をいただく場合がございます、予めご了承ください。

tel. 06-6534-9333

10:00-19:00(※土日祝を除く)