vscode-go/READMEとdelve/Buildingの日本語訳

# はじめに

[Visual Studio Code](https://code.visualstudio.com/) (VS Code) 用のGoエクステンション「[vscode-go](https://marketplace.visualstudio.com/items/lukehoban.Go)」を紹介しようと[vscode-go/README](https://github.com/Microsoft/vscode-go/blob/master/README.md)を翻訳したところ、十分な情報量でしたので今回のメイン記事にさせて頂きました。またOS Xの人にはdelveのセットアップがわかりにくそうでしたので[delve/Building](https://github.com/derekparker/delve/wiki/Building)のページも翻訳しました。

## 不具合情報

OS X版のバージョン0.10.5はVS Codeが起動しない不具合がありますので、バージョン0.10.6以降をご利用ください。

- [https://code.visualstudio.com/Updates](https://code.visualstudio.com/Updates)

## 翻訳について

Google翻訳にて原文の英語を日本語に変換した後、手動にて調整しました。私が補足した部分は*斜体*にしてあります。

# vscode-go/README.md (0.6.33) の日本語訳

vscode-go/README.md at master · Microsoft/vscode-go · GitHub
https://github.com/Microsoft/vscode-go/blob/master/README.md

## Visual Studio Code用のGoエクステンション

本エクステンションはVS CodeにGo言語の豊富な言語サポートを追加します。含まれているもの:

- カラー化
- 補完リスト (`gocode`を使用)
- シグネチャーヘルプ (`godoc`を使用)
- スニペット
- クイック情報 (`godef`を使用)
- 定義への移動 (`godef`を使用)
- 参照の検索 (`go-find-references`を使用)
- ファイル概要 (`go-outline`を使用)
- ワークスペースシンボル検索 (`go-symbols`を使用)
- リネーム (`gorename`を使用)
- 保存してビルド (`go build`と`go test`を使用)
- フォーマット (`goreturns`や`goimports`や`gofmt`を使用)
- importの追加 (`gopkgs`を使用)
- [部分的に実装] デバッグ (`delve`を使用)

## IDEの機能

（元サイトでは「IDEの機能」に関する画像が貼られています）

## デバッガー

（元サイトでは「デバッガー」に関する画像が貼られています）

## 使い方

はじめに、あなたはVisual Studio Code `0.10` *以降* をインストールする必要があります。コマンドパレット（*`ctrl`*`/cmd-shift-p`）にて*`Extensions:`*` Install Extension`を選択して`Go`*`(lukehoban版)`*を選びます。

ターミナルウィンドウでGOPATH環境変数に作業したいGOPATHを設定して、*`vs`*`code`を起動します。GOPATHフォルダーまたは作業したい任意のサブフォルダーを開き、編集を開始する`.go`ファイルを開きます。*画面の* 右下隅に`Analysis Tools Missing`*の文字*が見えるなら、これをクリックすることで、エクステンションが完全な機能セットをサポートするために必要なすべてのGoツールをインストール*できます。* 詳細については下記の「ツール」セクションを参照してください。

注: 本エクステンションを使用するにはVisual Studio Codeの`Auto Save`*`(自動保存)`*をオン（*メニューバーにて* `[File] -> [Auto Save]`）にすることが強く推奨されます。Goツールの多くは保存したファイル上でのみ動作するため、エラー報告は`Auto Save`*`(自動保存)`*をオンにすることでよりインタラクティブになります。

## オプション

次のVisual Studio Codeの設定はGoエクステンションのために用意されています。これらは*メニューバーの[File/Code] ->* [References] のUser *Settings* (*`ctrl`*`/cmd+,`)またはWorkspace Settings (`.vscode/settings.json`)で設定できます。

```
{
    "go.buildOnSave": true,
    "go.lintOnSave": true,
    "go.vetOnSave": true,
    "go.buildFlags": [],
    "go.lintFlags": [],
    "go.vetFlags": [],
    "go.coverOnSave": false,
    "go.useCodeSnippetsOnFunctionSuggest": false,
    "go.formatOnSave": false,
    "go.formatTool": "goreturns",
    "go.goroot": "/usr/local/go",
    "go.gopath": "/Users/lukeh/go"
}
```

*※「go.formatOnSave」項目値をtrueにすると保存時にgofmtが実行されてコードが整形されます。*
*※「go.gopath」項目にはご自分のGOPATH値を設定してください。」*

## コマンド

統合された編集機能に加えて、本エクステンションにもGoのファイルを操作するためのいくつかのコマンドがコマンドパレットに用意されています:

- `Go: Add Import` Goコンテキストでパッケージのリストからインポートを追加します。
- `Go: Current GOPATH` 現在設定されているGOPATHを表示します。
- `Go: Run test at cursor` アクティブなドキュメント内の現在のカーソル位置でテストを実行します。
- `Go: Run tests in current package` アクティブなドキュメントを含むパッケージ内のすべてのテストを実行します。
- `Go: Run tests in current file` 現在アクティブなドキュメント内のすべてのテストを実行します。


## オプション: デバッグ

デバッガーを使用するには、現在のところ手動で`delve`をインストールする必要があります。完全な詳細については[インストール手順](https://github.com/derekparker/delve/tree/master/Documentation/installation)を参照してください。OS Xでは`dlv`バイナリーに署名する自己署名証明書を作成する必要があります。

インストールしたら一度、コードのデバッグビューレットに移動して設定ギア*アイコン*を選択します。launch.json *のconfigurationsパラメーター*に次の*値を追記します*:

```
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "program": "${workspaceRoot}",
            "env": {},
            "args": []
        }
    ]
}
```

`program`オプションではデバッグ用のパッケージフォルダーまたはそのフォルダー内のファイルを参照できます。

`mode`パラメーターは次のように設定できます:

- `debug`は、プログラムフォルダーの内容をコンパイルしてデバッガーで起動します。[デフォルト]
- `test`は、プログラムフォルダー内のテストをデバッグします。
- `exec`は、プログラムフォルダー内の現在のコードをビルドするのではなく事前にビルドされたバイナリーを実行します。

## ビルドとデバッグのエクステンション

あなたはエクステンション開発中の本エクステンションをデバッグするための開発環境を設定することができます。

まず`〜/.vscode/extensions`*配下*にインストール済みのエクステンションがないことを確認してください。次に、あなたのマシン上の別の場所に*vscode-goの*リポジトリーをクローンして、`npm install`を実行し*た後にvs* codeの開発インスタンスを開きます。

*※ npmコマンドを使用するには別途「[node.js](https://nodejs.org/en/)」をインストールしておく必要があります。*

```
rm -rf ~/.vscode/extensions/lukehoban.Go
cd ~
git clone https://github.com/Microsoft/vscode-go
cd vscode-go
npm install
code . 
```

これによりデバッグビューレットに移動して`Launch Extension`を選択した後に*Start* (`F5`)を選択することができます。

`[Extension Development Host]`インスタンスにて、GOPATHフォルダーを開きます。

これによりブレークポイントを設定して本エクステンションをステップ実行することができます。

本エクステンションの`.ts`ファイルで編集を行う場合は、新しいエクステンションコードをロードするために、*vs* codeの`[Extension Development Host]`インスタンスをリロード(`cmd-r`)します。デバッグインスタンスは自動的に再接続します。

デバッガーをデバッグするには、[debugAdapterのreadme](https://github.com/Microsoft/vscode-go/blob/master/src/debugAdapter/Readme.md)を参照してください。

## ツール

本エクステンションは次のツールを使用しており、カレントのGOPATHにインストールされています。いずれかのツールが不足している場合、エディターの右下隅に"Analysis Tools Missing"の警告*文字*が表示されます。*警告文字*をクリックすると不足しているツールをインストール*できます*。

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

これらの*ツールを手動で*インストールするには*次の内容を*ペースト実行するだけです:

```
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
```

そしてデバッグのためには:

delve: [https://github.com/derekparker/delve/wiki/Building](https://github.com/derekparker/delve/wiki/Building)の指示に従ってください。

## ライセンス

MIT

## *[私からの補足]*

### codeコマンド

Linuxでは`code`、Windowsでは`code.exe`がVS Code本体ファイルでありコマンドとして起動できます。OS Xでは`Visual Studio Code.app`が本体ファイルですがVS Code 0.10.10から`code`でコマンド起動できます。

#### [参考] OS XでのVS Code 0.10.10以前での`code`コマンド対応

ターミナルから実行できないため`~/.bash_profile`に次の内容を記述しておくと`code`で起動できるようになります。

```
code () { VSCODE_CWD="$PWD" open -n -b "com.microsoft.VSCode" --args $* ;}
```

# delve/wiki/Building (0.11.0 alpha) の日本語訳

Building · derekparker/delve Wiki · GitHub
https://github.com/derekparker/delve/wiki/Building

## ビルド

DelveはビルドにGo 1.5以上が必要でありGO15VENDOREXPERIMENTが適切に設定されていること*（`~/.bash_profile`ファイルに`set GO15VENDOREXPERIMENT=1`を追記する、など）*を期待しています。(参照: [Go 1.5 Vendor Experiment](https://docs.google.com/document/d/1Bz5-UB7g2uPBdOx-rw5t9MxJwkfpx90cqG9AFL0JAYo/))

### Linux

1) `dlv`バイナリーのmakeとインストール

```
$ GO15VENDOREXPERIMENT=1 make install
```

これで完了です！ もし正しく動作していると思えない場合は、次の*パッケージを取得するコマンドを実行して*$GOPATH/binにインストールして依存関係を解消します。

```
$ go get -v -u github.com/peterh/liner github.com/derekparker/delve/cmd/dlv
```

### OS X

1) 証明書の作成

あなたは自己署名証明書を作成してバイナリーに署名する必要があります：

- 「キーチェーンアクセス」（/Applications/Utilities/Keychain Access.app）アプリケーションを開きます。
- メニュー*バー*にて[キーチェーンアクセス] -> [証明書アシスタント] -> [証明書を作成]を開きます。
- 「名前」*項目*に*入力*し（本例では dvl-cert）、「固有名のタイプ」*項目*に「自己署名ルート」を設定し、「証明書のタイプ」*項目*に「コード署名」を設定し、「デフォルトを無効化」*項目*にチェックを入れます。*次に*「続ける」*ボタン*をクリックします。*ここで証明書の*「有効期間（日数）」を365日から3560日に延長することができます。
- 「証明書の場所を指定」画面が表示されるまで「続ける」*ボタン*を何回かクリックし*て画面を進めます*。「証明書の場所を指定」画面が表示されたら「キーチェーン」*項目*に「システム」を設定します。
- もし「システム」キーチェーンに証明書を格納できない場合、*証明書*をエクスポートして「ログイン」キーチェーンで作成します。これにより「システム」キーチェーンに*証明書*をインポートできます。
- 「キーチェーン」*欄*から「システム」を選択して、新しく作成した証明書を見つける必要があります。証明書のコンテキストメニューを使用し*（＝証明書を選択して右クリック）*、「情報を見る」を選択し、「信頼」の項目を開き、「コード署名」*項目*に「常に信頼」を設定してください。
- [Yosemite以降:] キーチェーンの「分類」*欄*から「鍵」*項目*を選択 -> [dlv-cert] -> [右クリック] -> [情報を見る] -> [アクセス制御] -> 「この項目の使用をすべてのアプリケーションに許可」*項目にチェックを入れる* -> [変更内容を保存]
- 証明書を使うために「キーチェーンアクセス」アプリケーションを終了して現在実行中の"taskgated"サービスを落として再スタートさせる必要があります。別の方法としてはコンピューターを再起動することで*対応*できます。
- 本プロジェクトのクローンします: `git clone git@github.com:derekparker/delve.git && cd delve`
- 次を実行します: `GO15VENDOREXPERIMENT=1 CERT=dlv-cert make install`、これでバイナリーをインストールしてコード署名します。

すべての`make`コマンドは上記で作成した証明書の名前が含まれているCERT環境変数を前提としています。`CERT=dlv-cert make install`でバイナリーをインストールしてコード署名することができます。テストを行うなら、単に`GO15VENDOREXPERIMENT=1 CERT=dlv-cert make test`を実行します。

2) バイナリーのインストール

GO15VENDOREXPERIMENTとCERTの環境変数を準備して`make install`を入力してください。`GO15VENDOREXPERIMENT`環境変数は[Go 1.5 Vendor Experiment](https://docs.google.com/document/d/1Bz5-UB7g2uPBdOx-rw5t9MxJwkfpx90cqG9AFL0JAYo/)で決まっています。

```
$  GO15VENDOREXPERIMENT=1 CERT=mycert make install
```

makefileは`GOPATH`は単一の値でありコロンで区切られていないことを前提としています。

makefileはビルドとコード署名の工程を簡素化にするために必要となります。

### Windows

Windows用のUNIXライクのシェル([MSYS2](https://sourceforge.net/p/msys2/wiki/MSYS2%20installation/), [CYGWIN](https://cygwin.com/install.html), 他)があれば、上記のLinuxインストールの指示に従ってください。

標準のWindowsのcmdシェルからは、次のステップを行います:

1) MinGWのインストール

[Windows上でCGOをビルドする](https://github.com/golang/go/wiki/cgo#windows)ために必要なGCCツールチェーンを取得するには[MinGW-W64](http://sourceforge.net/projects/mingw-w64/)をインストールします。

*以下を*選択する必要があります:

- バージョン： 最新で利用可能 （執筆時点では`5.3.0`）
- アーキテクチャー： `x86_64`
- スレッド： `POSIX` （実際には関係ありません）
- 例外： `seh` （実際には関係ありません）
- ビルドバージョン: 最新で利用可能 （執筆時点では`0`）

2) `dlv`バイナリーのmakeとインストール

```
$ set GO15VENDOREXPERIMENT=1
$ mingw32-make install
```

## *[私からの補足]*

### 作業手順

1) delveのダウンロード

```
go get -u -v github.com/derekparker/delve/cmd/dlv
```

2) OS Xの場合

2-1) 証明書「dlv-cert」を作成
2-2) コード署名＆インストール

```
cd $GOPATH/src/github.com/derekparker/delve
GO15VENDOREXPERIMENT=1 CERT=dlv-cert make install
```

3) 実行バイナリー「dlv」へのパスを追加

`~/.bash_profile`ファイルに`export PATH=$PATH:$GOPATH/bin`を追加。

# 参考リンク

次の記事と読み合せて頂くとVS Codeやvscode-goについて把握できると思います。

- [特集：Visual Studio Code早分かりガイド：Visual Studio Codeの使い方、基本の「キ」 (1/4) - ＠IT](http://www.atmarkit.co.jp/ait/articles/1507/10/news028.html)
- [特集：Visual Studio Code早分かりガイド：Visual Studio Codeでエクステンション機能を使ってみよう (1/2) - ＠IT](http://www.atmarkit.co.jp/ait/articles/1511/27/news029.html)
- [Visual Studio Codeのすゝめ (Golang寄り) - 気まぐれLinux](http://yuntan-t.hateblo.jp/entry/oucc-advent-2015-12-05)
- [VisualStudioCode - Visual Studio CodeでGo言語の設定 - Qiita](http://qiita.com/evalphobia/items/f68396d573c7caf2065b)

# さいごに

巷では「[IntelliJ IDEA](https://www.jetbrains.com/idea/)」+「[Goプラグイン](https://plugins.jetbrains.com/plugin/5047)」や「[Atom](https://atom.io/)」+「[go-plus](https://atom.io/packages/go-plus)」の組み合わせが良いとの話を耳にしますが「VS Code」+「vscode-go」の躍進やいかに！？q@w@p