開発環境構築

HWはMacBook Pro。2016/04/04現在ではMac OS X El Capitan。

パッケージマネージャはHomebrew。Homebrewのインストールまでは情報が多いので他サイトに任せます。El Capitanにアップデート時にHomebrewの動作に影響があるので注意。私はbrew updateができなくなり、ファイルアクセス権の変更が必要でした。

brew update

brew install go

go version

私はbrew updateを怠りすぎてgoのバージョン1.4が入ってしまい、デバッグ環境がビルドできない原因に気付くのにエラい時間がかかりました。brew updateしようとするとEl Capitanのせいで失敗しここでも躓きました。goの現在最新ver.は1.6です。

エディタはvimSublimeなどのテキストエディタでもいいんですが、デバッグを考えるとIDEを使いたいところです。コマンドラインデバッガもありますが、IDEに慣れた世代としてはマウスオーバーで変数値くらい覗けないと発狂してしまいます。WEB関係のプログラマさんはprint文デバッグのみって人もよく見かけますが流石に効率が違うのでデバッガは活用しましょう。

IDEとしてはLiteIDE、IntelliJ IDEA + GoプラグインVisual Studio Codeなどがあります。デバッガとしてはお馴染みGDBかDelveというものがあるようです。強い根拠はありませんがVisual Studio Code + Delveが私にとってベストだと感じました。Windows上でのVisual Studioに慣れているため少し贔屓目があるかもしれません。

Visual Studio Codeのインストール自体は簡単です。ダウンロードしたものをアプリケーションフォルダに放り込みましょう。

https://www.visualstudio.com/ja-jp/products/code-vs.aspx

Visual Studio Codeでgolangを扱うにはExtentionを追加します。Command + Shift + pでコマンドパレットを表示したらExtentionと入力してください。"Extentions: Install Extention"と入力候補が下に出るので選択します。"ext install"と表示されるので"ext install go"と末尾にgoを追加してEnterを押すと追加できます。

次に諸々の設定をしますがその前にgolangのディレクトリについて説明しておく必要があります。golangには2つの重要な環境変数を指定する必要があります。

  • GOROOT
  • GOPATH

GOROOTはgolangがインストールされたディレクトリを指定します。GOPATHは各ユーザーのワークディレクトリになります。他の言語では理解し難いことですが、golangは開発に使うディレクトリを一つに限定することを想定しています。GOPATH以下に各プロジェクトディレクトリを作って管理します。奇妙な感じですがディレクトリには慣習的なルールがあるためまずは従ってみましょう。

.bash_profile
export GOROOT=/usr/local/opt/go/libexec
export GOPATH=$HOME/golang
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

 Homebrewでインストールした場合は、GOROOTのパスは上記のものに決まります。GOPATHは自由ですが$HOME以下に適当なディレクトリを一段掘るのが無難でしょう。私はgolangフォルダとしました。$GOPATH/binも慣習的なルールですがビルドしたものはbinフォルダに出力するパッケージが多いのでパスを通しておきます。

GOPATHには慣習的に直下に次の3つのディレクトリが使われます。

  • src
  • pkg
  • bin

Subversionのtrunk/branches/tagsみたいなもんですね。ディレクトリについては下記の説明が一番参考になりました。

github.com

自分のコードを書き始めるなら$GOPATH/src/myappとかに書くようにしましょう。

Visual Sudio Codeの話に戻りますが、$GOPATHにいくつかのパッケージがあることを要求します。RubyのgemやPythonのpip、perlCPANなど最近?の言語はパッケージマネージャを備えることが多くなりました。golangも例外ではなくgoコマンドのgetオプションによりコマンド一発で依存関係を解消しつつサードパーティのパッケージを追加できます。次のパッケージをインストールします。

go get -u -v github.com/nsf/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v github.com/golang/lint/golint
go get -u -v github.com/lukehoban/go-find-references
go get -u -v github.com/lukehoban/go-outline
go get -u -v sourcegraph.com/sqs/goreturns
go get -u -v golang.org/x/tools/cmd/gorename
go get -u -v github.com/tpng/gopkgs
go get -u -v github.com/newhook/go-symbols

 -uはインストール済みのパッケージが依存関係でアップデートが必要な場合はアップデートすることを示します。-vは依存関係の表示オプションなので無くても動作に支障はないでしょう。

それにしても環境作りが面倒です。Visual StudioXCodeインストーラーの素晴らしさを実感するところではありますが、更に面倒なことにデバッガのビルドが必要です。デバッガにはDelveを使うと書きました。ビルド方法はGitHubのページから辿れますがMac OSの場合は下記のページに記載があります。

 

https://github.com/derekparker/delve/blob/master/Documentation/installation/osx/install.md

自己証明書が必要なのが面倒ですが、そこは説明通りでさほど迷いませんでした。しかし

Clone this project: git clone git@github.com:derekparker/delve.git && cd delve

 

 と書いてある手順はこれでは上手くいきませんでした。依存パッケージがあるようで

  • go get -v -u github.com/peterh/liner github.com/derekparker/delve/cmd/dlv
  • codesign -s delve bin/dlv

 とするとdlvコマンドが使えるようになりました。これでVisual Studio CodeでHello Worldでも書いてブレークポイントを張ってみてください。F5キーでデバッグ実行でき、ブレークポイントで停まるはずです。