GOPATHを設定する

Goをやっていく

最近数ヶ月、腰を据えてGoを学んでいる。今までも何度も挑戦してきたけど、途中でやめてしまっていた。

Tour of Goとメルカリ社が提供しているGopher道場の資料を一通りこなし、簡単なツールを見よう見まねで書いている。進捗としては過去最高な気がする。もちろん実務レベルではないけど。学生でもGoを書いてる人多いしISUCONでもGoを使う人が多かったり、みんなどうやって身につけたんだろうと不思議で仕方ない。

今は『Go言語でつくるインタプリタ』を進めている。字句解析の章を終わらせ、今は構文解析器を作っている。単なる写経にならないように、本をじっくり読解し、意味を理解(しようと)しながら続けている。続けることが大事。

いずれは仕事でGoを書いてみたい。

GOPATHを設定する

Goに関するブログを書く第一歩として、今回はGOPATHの設定についてかく。

OSはmacOS catalina 10.15です。

.zshrc、.bash_profileなどに追記する。

export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN

これらが反映されているか go envで確認できる。

GO111MODULE=""
GOARCH="amd64"
GOBIN="/Users/your_name/go/bin"
GOCACHE="/Users/your_name/Library/Caches/go-build"
GOENV="/Users/your_name/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/your_name/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/your_name/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/Cellar/go/1.15.1/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.15.1/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/2s/bg49sl_x61x4ng46j34lpbsh0000gn/T/go-build685570820=/tmp/go-build -gno-record-gcc-switches -fno-common"

使っているGoのバージョンは1.15です。

#ありがとうradigo そしてmacOSとの格闘

普段、Goのツールに大変お世話になっていて、go getして自分の環境でバイナリをビルドして使っている。特にお世話になっているのがradigoである。

現在23歳だが、ラジオを聴くようになって10年以上になる。radikoが誕生したのが2010年。その頃は中学生で、パソコンやiPod touchで利用していた。エリアフリーとタイムフリーの機能はまだ無かった。東京のラジオが聴きたくて仕方なかった。そのために東京の大学に行きたいと思っていたくらい。

今やいつどこにいても全国のラジオが聞けて便利である。でも、リスナーとして、現行のradikoアプリは不便を感じる点が未だにある。10秒送り/戻り機能がないとか…。何より録音機能がないのはつらい。大人の事情で実現できないのは察せる。

radigoを知ってから、もう手放せない。オードリーのオールナイトニッポンと山下達郎のサンデーソングブックをエンドレスリピートしている。

radigoはdocker imageが用意されているのでそれを使うのも良い。けどエリアフリー機能を使うための環境変数をdockerで設定する仕方が分からないので、今はソースコードからバイナリをビルドして使っている。

go get -u github.com/yyoshiki41/radigo
cd go/src/github.com/yyoshiki41/radigo

make installdeps
make build

macからXcodeをアンインストールしている場合、make installdepsでつまずく。エラー文に

xcode-select --install

を実行しろと出るので実行すると

xcode このソフトウェアは、現在ソフトウェア・アップデート・サーバから入手できないため、インストールできません。

というポップアップがでた。

https://developer.apple.com/download/more/

から、自分のOSとXcodeのバージョンに符号するXcode Command Line Toolsを取得してあげれば良い、というのが常套手段なのだけど、Xcode使ってないんだからXcodeのバージョンなんか分からないよ…

Catalina10.15だからXcode12かな?と思ってインストールしたけどダメだったし、11でもダメだった。結局Xcodeインストールした。

Xcodeインストールしたらmakeが成功しました。

(最終的にはGoのブログじゃなくなっている…)

参考

A Tour of Go

「プログラミング言語Go完全入門」の「完全」公開のお知らせ

Go言語でつくるインタプリタ

今日からGoをはじめる人に伝えたい$GOPATHではまった話

po3rin/github_link_creator (レポジトリのリンク生成ツール)

carbon-app/carbon (Twitterでよく見るソースコード画像生成ツール)