メモ。
Xcode のインストール
Golang のシステム要件に Xcode 付属の gcc が含まれている。
ターミナルで以下のコマンドを実行して、インストールされていることを確認しておこう。
$ gcc -v
まだ一度も使用していない場合、ここでライセンス条件への同意が要求される。
Homebrew のインストール
下記ページを参照。
実行の様子は以下のとおり。途中で Enter の入力が要求される。
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ==> This script will install: /usr/local/bin/brew /usr/local/Library/... /usr/local/share/man/man1/brew.1 Press RETURN to continue or any other key to abort ==> /usr/bin/sudo /bin/mkdir /usr/local ==> /usr/bin/sudo /bin/chmod g+rwx /usr/local ==> /usr/bin/sudo /usr/bin/chgrp admin /usr/local ==> /usr/bin/sudo /bin/mkdir /Library/Caches/Homebrew ==> /usr/bin/sudo /bin/chmod g+rwx /Library/Caches/Homebrew ==> Downloading and installing Homebrew... remote: Counting objects: 235189, done. remote: Compressing objects: 100% (373/373), done. remote: Total 235189 (delta 248), reused 0 (delta 0), pack-reused 234815 Receiving objects: 100% (235189/235189), 30.46 MiB | 911.00 KiB/s, done. Resolving deltas: 100% (176342/176342), done. From https://github.com/Homebrew/homebrew * [new branch] master -> origin/master Checking out files: 100% (3499/3499), done. HEAD is now at ac4e213 passenger: update 5.0.2 bottle. ==> Installation successful! ==> Next steps Run `brew doctor` before you install anything Run `brew help` to get started $
以下のコマンドでバージョンを確認できる。
$ brew -v Homebrew 0.9.5 $
Golang のインストール
以下のコマンドでインストール。
$ brew install go
インストールの様子は以下のとおり。
$ brew install go ==> Downloading https://homebrew.bintray.com/bottles/go-1.4.2.yosemite.bottle.1. ######################################################################## 100.0% ==> Pouring go-1.4.2.yosemite.bottle.1.tar.gz ==> Caveats As of go 1.2, a valid GOPATH is required to use the `go get` command: https://golang.org/doc/code.html#GOPATH You may wish to add the GOROOT-based install location to your PATH: export PATH=$PATH:/usr/local/opt/go/libexec/bin ==> Summary 🍺 /usr/local/Cellar/go/1.4.2: 4566 files, 155M $
以下のコマンドでバージョンを確認できる。
$ go version go version go1.4.2 darwin/amd64 $
Go の環境変数設定
Go インストール中に以下のように表示されていた。
As of go 1.2, a valid GOPATH is required to use the `go get` command: https://golang.org/doc/code.html#GOPATH You may wish to add the GOROOT-based install location to your PATH: export PATH=$PATH:/usr/local/opt/go/libexec/bin
環境変数 GOPATH は、自分が Go の開発に使用するディレクトリを表す。以下の 3 つのサブディレクトリを作って使うことになっている。実際にどこにするかは、自分で自由に決めてよい。公式サイトのチュートリアルでは $HOME/go を使う例が載っている。GOPATH を設定しなくても Go のコンパイルができないというわけではないが、go get を使うために必要なので、実質的には必須と言える。
- src
- 自分がソースを書くためのサブディレクトリ
- pkg
- ビルドしてできたライブラリの配置先。go get コマンドで入手したライブラリもここに置かれる
- bin
- ビルドしてできたコマンドの配置先。go get コマンドで入手したコマンドもここに置かれる
なお、GOPATH は自由に決めてよいと書いたが、Go のインストール先と同じにしたり、Go のインストール先のサブディレクトリにしたりしてはいけない。
[2017-06-08 追記] Go バージョン 1.8 以降、環境変数 GOPATH の設定は必須ではなくなった。ない場合はデフォルトで $HOME/go が使われる。ただし、$GOPATH/bin にあたる $HOME/go/bin にパスを通すのは引き続き必要。[2017-06-08 追記ここまで]
環境変数 GOROOT は、Go のインストール先を示す環境変数だが、現在では設定する必要がないらしい。Go 自身がインストール先を知っているからだ。
$ go env GOROOT /usr/local/Cellar/go/1.4.2/libexec $
最後に PATH についてだが、Brew で Go をインストールした時点で、標準のコマンド (go/godoc/gofmt) については /usr/local/bin にシンボリックリンクが置かれているので、わざわざパスを通す必要はない。
ということで、まとめると、環境変数まわりで設定するべきなのは以下の 2 つ。
- 作業ディレクトリを作成して、GOPATH に設定する
- 今後コマンドが置かれるであろう $GOPATH/bin にパスを通す
ということで、$HOME/.bash_profile に以下のように書く (このファイルがない場合は新規作成)。
export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin
繰り返すが、GOPATH で指定するパスは自分で好きなように決めてよい (Go のインストール先ディレクトリの外でさえあれば)。上記はあくまで例である。
[2017-06-08 追記] 上の方にも追記したが、Go バージョン 1.8 以降、環境変数 GOPATH の設定は必須ではなくなった。ない場合はデフォルトで $HOME/go が使われる。ただし、$GOPATH/bin にあたる $HOME/go/bin にパスを通すのは引き続き必要。
export PATH=$PATH:$(go env GOPATH)/bin
[2017-06-08 追記ここまで]
設定したら、ターミナルを開き直すか、以下を実行するかして変更を反映する。
$ . ~/.bash_profile
Mercurial のインストール
Revel のインストールに必要なので、以下のコマンドで Mercurial を先にインストールする。
$ brew install hg
実行の様子は以下のとおり。
$ brew install hg ==> Downloading https://homebrew.bintray.com/bottles/mercurial-3.3.yosemite.bott ######################################################################## 100.0% ==> Pouring mercurial-3.3.yosemite.bottle.tar.gz ==> Caveats Bash completion has been installed to: /usr/local/etc/bash_completion.d zsh completion has been installed to: /usr/local/share/zsh/site-functions Python modules have been installed and Homebrew's site-packages is not in your Python sys.path, so you will not be able to import the modules this formula installed. If you plan to develop with these modules, please run: mkdir -p /Users/sardine/Library/Python/2.7/lib/python/site-packages echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/sardine/Library/Python/2.7/lib/python/site-packages/homebrew.pth ==> Summary 🍺 /usr/local/Cellar/mercurial/3.3: 366 files, 4.9M $
Revel のインストール
以下のコマンドでインストールする。
$ go get github.com/revel/cmd/revel
実行してもコンソールには何も出力されないが、$GOPATH$GOPATH/bin に revel コマンドがインストールされている。引数なしで revel コマンドを実行するとヘルプが表示される。
$ revel ~ ~ revel! http://revel.github.io ~ usage: revel command [arguments] The commands are: new create a skeleton Revel application run run a Revel application build build a Revel application (e.g. for deployment) package package a Revel application (e.g. for deployment) clean clean a Revel application's temp files test run all tests from the command-line Use "revel help [command]" for more information. $
また、$GOPATH/src にライブラリのソースが配置され、ビルド結果が $GOPATH/pkg に格納されている。
Revel のサンプルアプリを試す
公式サイトの Quick Start に、以下のコマンドでサンプルのチャットアプリケーションが起動できるとある。
$ revel run github.com/revel/revel/samples/chat
実行の様子は以下のとおり。"Listening on :9000" の行が出たら起動完了。止めたくなったら Ctrl-C を押せばよい。
$ revel run github.com/revel/revel/samples/chat ~ ~ revel! http://revel.github.io ~ 2015/03/08 00:27:07 revel.go:326: Loaded module static 2015/03/08 00:27:07 revel.go:326: Loaded module testrunner 2015/03/08 00:27:07 run.go:57: Running chat (github.com/revel/revel/samples/chat) in dev mode 2015/03/08 00:27:07 harness.go:165: Listening on :9000
ここでブラウザから http://localhost:9000 にアクセスすると、簡単なチャットアプリが表示される。
Revel アプリの新規作成と実行
revel コマンドで、スケルトン (ひな形) からアプリを新規作成することができる。
$ revel new <パス> <スケルトン>
引数で指定するのは Go の import パス。 とりあえずのお試しなら適当な名前を与えればよいが、例えば GitHub に置くつもりならそれに応じたパスを指定することになる。スケルトンを省略するといわゆる Hello World 的なシンプルなアプリが生成される。
実行の様子は以下のとおり。今回はお試しなので適当な名前を指定した。
$ revel new helloapp ~ ~ revel! http://revel.github.io ~ Your application is ready: /Users/sardine/go/src/helloapp You can run it with: revel run helloapp $
上記で出力されているとおり、revel run <パス> でアプリを実行できる。止めるには Ctrl-C を押す。
$ revel run helloapp ~ ~ revel! http://revel.github.io ~ INFO 2015/03/08 00:48:28 revel.go:326: Loaded module testrunner INFO 2015/03/08 00:48:28 revel.go:326: Loaded module static INFO 2015/03/08 00:48:28 run.go:57: Running helloapp (helloapp) in dev mode INFO 2015/03/08 00:48:28 harness.go:165: Listening on :9000
ブラウザから http://localhost:9000 にアクセスすると、"It Works!" というメッセージが表示されるはずだ。
その他に http://localhost:9000/@tests にアクセスすると、テストを実行するためのページが表示される。このシンプルなアプリを新規作成した時点では 1 つしかテストがないが、ボタンを押して実行することができる。これは Revel に用意されているテストフレームワークによるもので、アプリの内容によって自由に増やしていくことができる。
なお、$GOPATH/src/<指定したパス>/README.md に、生成されたファイルの内容が書かれている。