Go インストールから go get まで

とある OSS のツールが便利だと聞き、試しに使ってみようと思ったところ Go のパッケージ管理コマンドでインストールができるという情報が記載されていました。
今まで Go には触れたことがなかったので、Go 環境のセットアップから Hello world、パッケージインストールまでを一通りやってみます。

検証環境

インストール

ダウンロードと展開

Go 公式の Downloads から Linux 用の URL を取得します。

バイナリをダウンロードして /usr/localgo ディレクトリを展開します。

$ curl -O https://dl.google.com/go/go1.11.linux-amd64.tar.gz
$ sudo tar -xzf go1.11.linux-amd64.tar.gz -C /usr/local

PATH 設定

ユーザの .bash_profile 末尾に環境変数を追加します。
なお、新しく追加する GOPATH は Go のワーキングディレクトリとなります。

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin

追加した環境変数を読み込み、go コマンドを実行してパスが通っていることを確認します。

$ source ~/.bash_profile
$ go version
go version go1.11 linux/amd64

Hello world

以下の内容で hello.go を作成します。
また、Go の規約ではインデントはハードタブ (\t) を使用することになっています。

package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}

ソフトタブ (\s) でコーディングしてしまっても、フォーマット用コマンドで自動整形してくれます。

$ go fmt hello.go

go runソースコードを実行します。

$ go run hello.go
hello, world

パッケージインストール

ghkw インストール

今回は ghkw (GitHub KeyWord) という GitHub 上のソースコードに出現する単語数を調べてくれるツールを使用してみます。

$ go get -u github.com/kyoshidajp/ghkw

インストールに成功すると、GOPATH のワーキングディレクトリに srcbin が作成され、以下のようにファイルが配置されます。

$ ls go/src/github.com/kyoshidajp/ghkw/
Changes  cli_test.go  Gopkg.toml  main.go   README.md
cli.go   Gopkg.lock   LICENSE     Makefile  search_term.go

$ ls go/bin/
ghkw

ghkw 実行

bin 配下のバイナリが実行ファイルとなっているので、適当に引数を与えて実行します。
通知関連の機能を実装しているときに命名に迷った notify と notification を引数に与えて検索を行ってみます。

$ ./go/bin/ghkw notify notification
| RANK |   KEYWORD    |    TOTAL    |
|------|--------------|-------------|
|    1 | notify       | 143,190,506 |
|    2 | notification |  90,243,988 |

件数が多い順に結果が表示されました。
使い所にもよりますが、命名に迷ったときなどに参考になるかもしれません。

こういったパッケージの利用も容易にできるということが分かったので、今後は積極的に Go 製のツールも使っていきたいと思います。

参考サイト