GoDay 23

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

More than 3 years have passed since last update.


はじめに

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


不具合情報

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


翻訳について

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 buildgo testを使用)

  • フォーマット (goreturnsgoimportsgofmtを使用)

  • importの追加 (gopkgsを使用)

  • [部分的に実装] デバッグ (delveを使用)


IDEの機能

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


デバッガー

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


使い方

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

ターミナルウィンドウでGOPATH環境変数に作業したいGOPATHを設定して、vscodeを起動します。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をインストールする必要があります。完全な詳細についてはインストール手順を参照してください。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」をインストールしておく必要があります。

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を参照してください。


ツール

本エクステンションは次のツールを使用しており、カレントの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の指示に従ってください。


ライセンス

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)


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で決まっています。

$  GO15VENDOREXPERIMENT=1 CERT=mycert make install

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

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


Windows

Windows用のUNIXライクのシェル(MSYS2, CYGWIN, 他)があれば、上記のLinuxインストールの指示に従ってください。

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

1) MinGWのインストール

Windows上でCGOをビルドするために必要なGCCツールチェーンを取得するには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について把握できると思います。


さいごに

巷では「IntelliJ IDEA」+「Goプラグイン」や「Atom」+「go-plus」の組み合わせが良いとの話を耳にしますが「VS Code」+「vscode-go」の躍進やいかに!?q@w@p