個人的な備忘録です。
仕事上 Ubuntu をターゲットに Go のプログラム開発をする必要があるのですが、従前 Windows デスクトップに Hyper-V の Ubuntu で Emacs で開発していたところをVisual Studio Code(vscode) に開発環境を変えたいと考えました。理由は省略。
最初は Ubuntu 上に vscode を入れて X 越し(VcXsrv)で試してみたのですが大画面だと描画速度が遅すぎてストレスたまってダメでした。
仕方がないので Windows 上の vscode で WSL の Ubuntu を併用しつつネイティブ Windows 開発環境を構築することにしました。大分手順が多くなってきたのでメモとして残します。
WSL のセットアップ
公式手順に従えば難しいことはない。 WSL を有効にしたら Microsoft Store で Ubuntu をインストール。
Visual Studio Code のインストール
公式サイトからインストーラーを落として入れるだけ。
wsltty のインストール
WSL 付属のターミナルは非常にしょぼい。もっとましな端末ソフトウェアが欲しいので、wsltty をインストール。
Go 環境を構築
Ubuntu 上で Go のコードをビルドする必要があるなら Ubuntu 上でも一通りセットアップが必要。 そこら中に手順はあるので省略。
Go のインストール
Windows 上の Visual Studio Code で Go 開発環境を整えるには、WSL Ubuntu の Go とは別に Windows 版の Go をインストールする必要がある。公式サイトからダウンロードしてきて、C:\Go
にインストールする。
Git for Windows のインストール
go get
を動作させるには、Windows 用の Git が必要になる。Git for Windows を以下の設定でインストールする。
- 改行コードの自動変更はしない
- symlink は利用可能にする
msys2 のインストール
cgo を使う Go パッケージがある場合、Windows 上でも gcc が必要になる。gcc 含めた開発環境の構築には msys2 が便利なので入れる。
64bit 版(msys2-x86_64-YYYYMMDD.exe
)を選択すること。
手順通りにセットアップ・パッケージ更新した後、以下を msys2 端末上で操作する。
$ pacman -S --needed base-devel $ pacman -S gcc $ pacman -S libgpgme-devel
GOPATH の設定
Go のソースコードを置く場所(GOPATH
)は WSL ではなく Windows に置くようにする。WSL 上のファイルを Windows 側から編集するとおかしくなるそうなので。Windows 上にあるファイルは WSL Ubuntu 側からも安全に編集できる。
PowerShell で以下を実行する。
> mkdir $Home\go > [System.Environment]::SetEnvironmentVariable("GOPATH", $Home+"\go", "User") > [System.Environment]::SetEnvironmentVariable("GO111MODULE", "on", "User") > [System.Environment]::SetEnvironmentVariable("Path", $env:Path+";C:\go\bin;"+$Home+"\go\bin;C:\msys64\usr\bin", "User")
WSL Ubuntu からは Windows に symlink を張っておくと楽。
$ ln -s /mnt/c/Users/xxxx/go $HOME/go
bingo などをインストール
再び PowerShell を立ち上げて以下を実行する。
> [System.Environment]::SetEnvironmentVariable("GO111MODULE", "off", "Process") > go get golang.org/x/tools/cmd/goimports golang.org/x/lint/golint > [System.Environment]::SetEnvironmentVariable("GO111MODULE", "on", "Process") > git clone https://github.com/saibing/bingo go\src\github.com\saibing\bingo > cd go\src\github.com\saibing\bingo > go install ./...
フォントのインストール
後述する VSCode の設定で Ricty Diminished を指定するので、インストールする。
- 4.1.1 の tar archive をダウンロード
- 適当に解凍 (WSL から
/mnt/c/Users/xxxx/Download
に行ってtar xzf ricty_diminished-4.1.1.tar.gz
とか) RictyDiminished-Regular.ttf
を右クリックしてインストール
Visual Studio Code の設定
拡張のインストール
今のところ以下をインストールした。
- Bracket Pair Colorizer 2
- Code Spell Checker
- Go (0.8.0)
- GraphQL for VSCode
- Markdown All in One
- sftp
- systemd-unit-file
- vscode-icons
- YAML
- zenkaku
設定
Go 拡張で bingo を使う設定は以下に書いてある。
Go modules support in Visual Studio Code · Microsoft/vscode-go Wiki · GitHub
その他もろもろ含めた設定は以下の状態:
{ "editor.fontFamily": "'Ricty Diminished'", "editor.fontSize": 16, "editor.quickSuggestions": { "other": false, "comments": false, "strings": false }, "editor.renderWhitespace": "all", "editor.suggestOnTriggerCharacters": false, "files.eol": "\n", "files.insertFinalNewline": true, "files.trimFinalNewlines": true, "go.alternateTools": { "go-langserver": "bingo" }, "go.formatTool": "goimports", "go.installDependenciesWhenBuilding": false, "go.languageServerExperimentalFeatures": { "autoComplete": true }, "go.languageServerFlags": [ "-maxparallelism=4" ], "go.toolsEnvVars": { "GOOS": "linux" }, "go.useLanguageServer": true, "markdown.extension.toc.levels": "1..3", "workbench.iconTheme": "vscode-icons", "[go]": { "editor.formatOnSave": true, "editor.formatOnSaveTimeout": 100000 }, "[markdown]": { "editor.formatOnSave": true } }