Windows上で快適なGo言語の開発環境を整える WSL(Ubuntu) + Go + VSCode

はじめに

Windows 上で Go 言語の開発環境を整える必要があったのでメモしておきます。

WSL のインストール

WSL のインストール | Microsoft Docs を参考に WSL をインストールします。
スタートメニューから powershell と入力すると、以下の画像のように Windows PowerShell が出てくるので、右クリックして 管理者として実行 を選択します。

image

許可後、WSL をインストールします。

wsl --install

インストール後、コンピュータを再起動します。

WSL 上に Ubuntu をインストール

Microsoft Store から Ubuntu をインストールします。
Ubuntu 20.04 を入手 - Microsoft Store ja-JP のリンク化もしくは Windows 上で Microsoft Store のアプリを起動して ubuntu と検索すると、アプリをダウンロードできます。

image

ダウンロードをクリック。
インストールが完了するまで待ちます。

image

開く をクリックします。

image

コマンドプロンプトが開くので、Ubuntu で使用するユーザー(とパスワード)を入力します。
これで Ubuntu のインストールは完了です。

image

Ubuntu 上に golang をインストール

Go の公式プロジェクトでは apt パッケージは提供されていません。
また、普通に apt install することはできますが、2022/03/08 時点で go1.13 と古めのバージョンがインストールされます。

image

現時点最新の Go 1.17 をインストールしたいので Wiki を参考にインストールします。

Ubuntu · golang/go Wiki · GitHub

以下のコマンドで apt レポジトリを追加、更新後、インストールします。

sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt update
sudo apt install golang-go

正常にインストールに成功して PATH が通っていればバージョンが確認できます。

> go version
go version go1.17.8 linux/amd64

Windows 上に VSCode をインストール

Visual Studio Code - Code Editing. Redefined から VSCode をダウンロードしてインストールします。

image

インストール後、起動します。

image

VSCode に Remote SSH をインストール

Ctrl + Shift + X キーで拡張機能のウィンドウを開く、または以下のリンクから Remote - SSH の拡張機能をインストールします。

Remote - SSH - Visual Studio Marketplace

image

これで準備は整いました。

Go の開発

適当なフォルダを作成して以下のような main.go を作成します。

package main

func main() {
  fmt.Println("Hello 世界!")
}

このコードは import "fmt" が抜けています。
コンパイルエラーで検出もできますが、自動で import 文を挿入、fmt を適用してもらいたいものです。

まず、Ctrl + Shift + P からコマンドパレットを表示し、WSL と入力します。
その中から Remote WSL: New WSL Window を選択して、フォルダを選択します。

image

WSL で開いた後、左下の緑色部分が WSL:Ubuntu-20.04 となっていることが確認できます。

image

この状態で Ctrl + S などで Go 言語のファイルを保存すると以下のように ~~ is not available 的なカードが出てくるので Install All をクリックします。

image

インストールが完了すると以下のようになります。

image

インストール後に ファイルを保存すると、自動で補完してくれるはずです。

image

おまけ: WSL 上のファイルのアクセス

WSL2 では /mnt/c/ に C ドライブがマウントされており、Ubuntu から Windows のファイルにアクセスできます。
反対に Windows から Ubuntu にアクセスする場合はエクスプローラーから ¥¥wsl$ とパスを直接入力することでアクセスできます。

image

おわりに

今までは基本的に Mac で Go の開発環境を構築して開発していましたが、WSL を使用することで Windows 上でも不便なく開発することができます。
また、Mac 上で開発を行っていてスクリプトなどが sh などのシェルスクリプトで書かれている場合などに WSL の Ubuntu 上で実行することができたりと非常に便利です。
Windows 上で Go 言語の開発環境を整える人の助けになれば幸いです。