Go インストールから go get まで
とある OSS のツールが便利だと聞き、試しに使ってみようと思ったところ Go のパッケージ管理コマンドでインストールができるという情報が記載されていました。
今まで Go には触れたことがなかったので、Go 環境のセットアップから Hello world、パッケージインストールまでを一通りやってみます。
検証環境
- CentOS 7.5
- Go 1.11
インストール
ダウンロードと展開
Go 公式の Downloads から Linux 用の URL を取得します。
バイナリをダウンロードして /usr/local
に go
ディレクトリを展開します。
$ 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 のワーキングディレクトリに src
と bin
が作成され、以下のようにファイルが配置されます。
$ 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 製のツールも使っていきたいと思います。