Loading...

golangのとっても便利な開発支援用ツール

どうも、こだまです。 今日は、goで実装するにあたってとても重宝する開発支援用ツールを紹介します。

goで開発している方ならご存知の通り、goには非常に優秀な開発支援ツールが豊富にあります。ただ、実際に使用している人ってどのくらいいるのだろうなってことをふと思い、こんな内容を書こうと思いました。 (本当のことを言うと、ちゃんと自分が使い始めてから優秀さに気づいたので、ちゃんと使って感動して欲しいというのが本音です。)

今回紹介するのは、以下のものです。 1. gofmt 2. golint 3. go vet 4. goimports 5. godoc それでは順に説明していきましょう。

1. gofmt コードフォーマッター

比較的代表格と言えるgoの開発支援ツールだと思います。 彼は、コードのインデントや改行位置、スペースを入れる位置などを自動調整してくれる機能です。 こちらは標準で搭載されているものなので、わざわざ入れる必要はありません。試しに使用してみましょう。

%e7%94%bb%e5%83%8f%ef%bc%91

ご覧の通り、ぐちゃぐちゃです。ここでgofmtを使用してみます。

$ gofmt -w main.go

フォーマットをかける対象のファイルを指定すると、整形した状態で出力されます。 -wオプションは、出力するのではなく整形した状態に書き換えるというものです。整形後は下図のようになります。

%e7%94%bb%e5%83%8f%ef%bc%92

とても綺麗になりましたね。 gofmtのオプションは他にも以下のようなものがあります。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-16-22-08-30

2. golint

golintは下のgo vetと合わせてgolangのlintツールにおける代表格と言えるでしょう。 彼は、静的解析を行い、Goらしくないコードを検出してくれる代物です。 Goらしくないコードを修正することで、読みやすくというGoの思想を体現します。 これは、標準で搭載されているものではないため、下記のコマンドで取得します。

$ go get -u github.com/golang/lint/golint では早速使用してみましょう。まずは、一見何の変哲もないこちらのコード。

%e7%94%bb%e5%83%8f%ef%bc%93

これをgolintにかけると、 %e3%80%94%e7%94%bb%e5%83%8f%e3%80%95%ef%bc%94

このように怒られます。 これは関数名が大文字で始まるPublicな関数であるのに、コメントをつけていないからです。 そのため、ちゃんと関数にコメントをつけてあげると怒られなくなります。

%e3%80%94%e7%94%bb%e5%83%8f%e3%80%95%ef%bc%95

%e3%80%94%e7%94%bb%e5%83%8f%e3%80%95%ef%bc%96

golintでは、ファイル単体だけでなく、パッケージやディレクトリをまるっと指定することもできます。

3. go vet

上で説明したように、これもlintツールですがこちらは静的解析を行い、バグの可能性がある箇所を検知します。 例えば、以下のような到達しないコードを検知してメッセージを出力します。

%e3%80%94%e7%94%bb%e5%83%8f%e3%80%95%ef%bc%97

%e3%80%94%e7%94%bb%e5%83%8f%e3%80%95%ef%bc%98

4. goimports

golangでは、import文が足りない時はもちろん、余分なimport文がある場合でもエラーの対象になります。 java出身の僕は幾度となくこれで足止めを食らったことがあります。 そんな時は、goimportを使えば、コードフォーマットした上に 余分なimport文の削除と必要なimport文の追加をしてくれます。 こちらは標準装備ではないため、以下のコマンドでgo getしてきます。

$go get golang.org/x/tools/cmd/goimports

それでは早速試してみます。

$goimports -w main.go

goimportsは修正した状態を表示するので、ファイルを書き換える場合は-wオプションをつけましょう。

%e3%80%94%e7%94%bb%e5%83%8f%e3%80%95%ef%bc%99

%e3%80%94%e7%94%bb%e5%83%8f%e3%80%95%ef%bc%91%ef%bc%90

これで、先ほどあったnet/httpというimport文がなくなりました。 前述した通りですが、goimportsは不要なimport文の削除だけでなく、必要なimport文の追加も行ってくれます。

5. godoc

これはドキュメント閲覧用ツールです。 これを使用することで、オフライン環境でもパッケージのドキュメントを閲覧することが可能です。 以下のコマンドで利用することが可能です。

$go get golang.org/x/tools/cmd/godoc

godocにはターミナルで閲覧する方法と、httpサーバで閲覧する方法があります。 まずは、ターミナルで使用してみます。

$godoc net/http // net/httpパッケージのドキュメントが表示されます
$godoc fmt //fmtパッケージのドキュメントが表示されます

また、標準パッケージだけでなく、サードパーティパッケージのドキュメントも閲覧可能です。

$godoc github.com/gin-gonic/gin // FWであるginのドキュメントを閲覧できます

次に、httpサーバで閲覧する方法です。

$godoc -http=:8080

このコマンドを叩いた後に、自身のブラウザでlocalhost:8080にアクセスすると以下の画面に飛ぶと思います。

%e3%80%94%e7%94%bb%e5%83%8f%e3%80%95%ef%bc%91%ef%bc%91

また、このコマンドのすごいところは、以下の画像のように$GOPATH以下のパッケージ全てがドキュメントとして 登録されているということです。これでもういろんなページを行き来しなくても開発ができる!!!

%e3%80%94%e7%94%bb%e5%83%8f%e3%80%95%ef%bc%91%ef%bc%92

今回紹介するのはこんな感じで。 次回は、実際の開発に向けてこれらの開発支援用ツールとIntelliJの連携方法を紹介しようと思います。 ではでは。

情報戦略テクノロジー