Go で godoc を使えるようにする〜godoc のインストール〜

## はじめに

Go 言語は `godoc` コマンドを使用することで、
簡単にドキュメントを参照することができます。

と、いいながら、
Go をインストールしたら使えると思いきや、
godoc を使用するには、別途インストールが必要です。ぶーぶー。

以下、godoc のインストール手順を書き残します。

## 参考サイト

今日も先人様に感謝。ありがとうございます！

* godoc のインストールについて
    - [Installing Go from source - The Go Programming Language](https://golang.org/doc/install/source#tools "Installing Go from source - The Go Programming Language")
    （Go の[日本語版公式サイト](http://golang-jp.org/ "The Go Programming Language")はもあるけど、情報が古いから本家がオススメ。）
    - [Mac(homebrew)でGoのインストールと、Emacsの環境構築 - ありの日記](http://d.hatena.ne.jp/hiro_nemu/20140113/1389620004)
    - [Go 1.4 の環境構築 Homebrew + Vim 編 (2014.12) - Qiita](http://qiita.com/methane/items/4905f40e4772afec3e60 "Go 1.4 の環境構築 Homebrew + Vim 編 (2014.12) - Qiita")

* Mercurial のインストールについて
    - [k5naka気まぐれBlog: Macにmercurialをインストールする](http://k5naka.blogspot.jp/2014/03/macmercurial.html)

## 環境

* OS X Yosemite 10.10.1
* Homebrew 0.9.5（インストールされていない場合は[こちら](http://qiita.com/megu_ma/items/820695ac525030285682 "Homebrew をインストールして使えるようになるまで 〜私の場合〜 - Qiita")。ご参考まで。）
* Go 1.4 darwin/amd64 （インストールされていない場合は[こちら](http://qiita.com/megu_ma/items/7208be8de52b712955a0 "Golang Macへのインストール〜Homebrewを使って〜 - Qiita")。ご参考まで。）

## godoc のインストール

`go get` コマンドを使用します。

```sh:ターミナル
$ go get code.google.com/p/go.tools/cmd/godoc
go: missing Mercurial command. See http://golang.org/s/gogetcmd
package code.google.com/p/go.tools/cmd/godoc: exec: "hg": executable file not found in $PATH
```

Mercurial（マーキュリアル） の `hg` コマンドがない、と怒られました。

Mercurial ってなんだ？という方はこちら↓

* [Mercurial - Wikipedia](http://ja.wikipedia.org/wiki/Mercurial)
* [Mercurial SCM](http://mercurial.selenic.com/)

なにはともあれ、Mercurial をインストールしましょう。


## Mercurial のインストール

`brew` コマンドでインストールします。

```sh:ターミナル
$ brew install mercurial
```

インストールの確認ということで、バージョンを確かめてみましょう。

```sh:ターミナル
$ hg version
Mercurial Distributed SCM (version 3.2.3)
(see http://mercurial.selenic.com for more information)

Copyright (C) 2005-2014 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
```

無事、インストールが完了しました。

## godoc のインストール（再挑戦）

では、もう一度、godoc のインストールを試みます。

```sh:ターミナル
$ go get code.google.com/p/go.tools/cmd/godoc
the code.google.com/p/go.tools/cmd/godoc command has moved; use golang.org/x/tools/cmd/godoc instead.
```

また怒られた。。。

そういえば、英語サイトの情報には、
`golang.org/x/tools/cmd/godoc` のコマンドで書いてあって、
なんでやろ〜て思ってたら、そういうことね。
日本語サイト＆記事はまだ古い情報が多かったみたい。

ということで、言われた通りにやってみる。

```sh:ターミナル
$ go get golang.org/x/tools/cmd/godoc
```

うんともすんとも言わず終了しました。

確認してみましょう。

```sh:ターミナル
$ godoc fmt
-bash: godoc: command not found
```

だめじゃん！
自分が `$PATH` に `$GOROOT/bin` を追加してなかったのが問題のよう。
(`$GOPATH/bin` は `$PATH` に追加してたのに。。)
`go` コマンドは使えたから気づかんかったな〜。なんでやろ。

色々調べてたら、参考サイトにて、

> GOROOT/binをPATH環境変数に追加しているのは、godocのコマンドのインストール先がここになるから。（通常は、GOPATH/binにインストールされるらしい）

との情報がありました。なるほど。
では、とにかく、`$GOROOT/bin` のパスを通して、再挑戦。

```sh:ターミナル
$ godoc fmt
PACKAGE DOCUMENTATION

package fmt
    import "fmt"

    Package fmt implements formatted I/O with functions analogous to C's
    printf and scanf. The format 'verbs' are derived from C's but are
    simpler.

〜以降、つらつらと続く〜
```

やっと見れました！

せっかくなので、ブラウザバージョンも見てみましょう。

```sh:ターミナル
$ godoc -http=":3000"
```

ブラウザで `http://localhost:3000/` にアクセスします。
トップページはこんな感じ。

![godoc_top.png](https://qiita-image-store.s3.amazonaws.com/0/62698/7896b7ae-c246-498d-5995-5aee0b2304dc.png)

先ほどの `fmt` パッケージのページを見てみましょう。

![godoc_fmt.png](https://qiita-image-store.s3.amazonaws.com/0/62698/a31a5580-0387-57bf-b4bd-07e9a1e33c44.png)

ほへ〜。
ローカルでも公式サイトと同じように閲覧できることがわかりました。
ちゃんちゃん。

以上、おわり。