LoginSignup
3
5

Windows11でGo言語開発環境構築 ~WSL2+Docker+VSCode+Remote Developmentを添えて~

Last updated at Posted at 2023-12-19

はじめに

この記事は「Qiita Advent Calendar 2023 Go言語」の20日目の記事です

ゴール

Windows11上でGo言語で開発したHello Worldアプリケーションをexeとして他の方に使ってもらえる形を目指します

全体の流れ

  1. WSL2 のインストール
  2. Ubuntu の初期設定
  3. Windows Terminalの設定
  4. Docker のインストール
  5. VSCode のインストール
  6. WSL から VSCode を起動する
  7. Go 開発環境を構築する
  8. VSCode拡張の自動インストール
  9. Gitのインストール
  10. Goアプリケーションのビルド

WSL2 のインストール

  1. 管理者権限でターミナルを開く
  2. wsl --install を実行する
    1. デフォルトだと Ubuntu がインストールされる
  3. インストールが完了したら、PCを再起動する

image.png

  1. wsl --version でバージョン情報が出てきたらインストール成功

image.png

Ubuntu の初期設定

image.png

  1. Ubuntu を起動する
  2. ユーザー名とパスワードを入力してログインする

image.png

  1. パッケージを更新する
sudo apt update && sudo apt upgrade

image.png

Windows Terminal の設定(任意)

  1. Ubuntu のターミナルを既定のプロファイルにする

image.png

Docker のインストール

  1. 公式のスクリプトを実行
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

image.png

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

image.png

  1. ログインユーザーでDockerを動かせるように、ログインユーザーをdockerグループに追加
sudo usermod -aG docker $USER
  1. 動作確認用Dockerを動かす
sudo docker run hello-world

image.png

  1. Ubuntuのターミナルを閉じて、PowerShellからWSLを落とす
wsl --shutdown

image.png

  1. もう一度、ターミナルでUbuntuタブを開くとWSLが立ち上がる

VSCodeのインストール

  1. 公式 からWindows用 VSCode をインストールする
  2. Remote Development (ID: ms-vscode-remote.vscode-remote-extensionpack) をVSCodeの拡張機能からインストールする
    (「Remote Development」は「Dev Containers」を含んだ拡張機能パック)

image.png

WSL から VSCode を起動する

  1. 開発を行いたい任意のディレクトリを作成して、WSL から VSCode を起動する
    ※ Windows上のディレクトリ( /mnt/...)を開いていると、Dockerの構築でパスがWindowsの方を見に行ってしまうので、Ubuntu管理下のディレクトリで作業する
mkdir mmd
cd mmd/
code .

image.png

image.png

Go 開発環境を構築する

  1. (念のため上で開いたVSCodeからそのまま作業をすすめる)
  2. コマンドパレットから dev add で開発コンテナー構成ファイルを追加する

image.png

  1. Go は最初のピックアップされた定義には含まれていないので、「すべての定義を表示」を選択する

image.png

  1. すべての定義を表示すると Go 定義が選べるようになる

image.png

  1. 既定の最新バージョンを選ぶ

image.png

  1. 機能の選択は一旦何も選択しないで「OK」

image.png

  1. 「コンテナーで再度開く」を選択

image.png

  1. 右下のメッセージが消えてしまった場合には、コマンドパレットで「コンテナーでリビルドして再度開く」を選ぶ

image.png

  1. 構築完了

image.png

VSCode拡張の自動インストール

好きなVSCode拡張機能があれば、自動でコンテナー構築時に入るよう、.devcontainer/devcontainer.json の customizations に拡張機能IDを追加する
(下記は私の例)

	// Configure tool-specific properties.
	"customizations": {
		"vscode": {
			"extensions": [
				"golang.go",
				"mhutchie.git-graph",
				"streetsidesoftware.code-spell-checker",
				"usernamehw.errorlens",
				"oderwat.indent-rainbow",
				"mechatroner.rainbow-csv",
				"shardulm94.trailing-spaces"
			]
		}
	}

Git のインストール

  1. Git for Windows もしくは GitHub Desktop をインストールする
  2. 適当なリポジトリをcloneして、Gitの認証を通す
  3. WSLに Git をインストール
sudo apt-get install git

image.png

  1. Git構成ファイルのセットアップ
git config --global user.name "Your Name"
git config --global user.email "youremail@domain.com"
git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager.exe"
  1. Windowsで認証を通していれば、WSL側で個別に認証を行わなくてもgitコマンドが使えるようになる

image.png

Goアプリケーションのビルド

  1. go.mod を作成する
go mod init github.com/<Githubアカウント名>/go_hello

image.png

  1. main.goを作成する
package main

import (
	"fmt"
)

func main() {
	fmt.Println("Hello World!")
}
  1. go run . で起動を確認する

image.png

  1. Windows 用に exe としてビルドする
GOOS=windows GOARCH=amd64 go build main.go
  1. 出来上がったexeをコマンドプロンプトから実行する(pauseとか入れてないので)

image.png

おわりに

これでGo言語での開発ができるようになりました!
これから色々と遊んでいきたいと思います。

Merry Christmas & Happy New Year !!!

参考URL

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5