前提環境
- Windows 11/10 + WSL2
- Ubuntu 22.04 LTS(WSL2上)
- インターネット接続環境
Goインストール方法の比較検討
WSL2上でGoの開発環境を構築する際、主に3つの選択肢がある。それぞれの特徴を理解した上で、適切な方法を選択することが重要である。
公式バイナリによるインストール
Go公式サイトから直接バイナリをダウンロードして /usr/local にインストールする方法である。最新版が確実に入手できる一方で、アップデート作業が完全に手動となる。
# 最新版のダウンロード(例:go1.21.5)
cd /tmp
wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz
# 既存版の削除とインストール
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz
# 環境変数設定
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
この方法は確実性が高いものの、新しいバージョンがリリースされるたびに同じ作業を繰り返す必要がある。
Ubuntu標準パッケージでのインストール
apt コマンドで標準リポジトリからインストールする最もシンプルな方法である。
sudo apt update
sudo apt install golang-go
ただし、Ubuntu 22.04の標準リポジトリに含まれるGoは1.18系と古く、最新の言語機能やライブラリが利用できない場合がある。
PPAを利用したインストール(推奨)
Personal Package Archive(PPA)を使用することで、最新のGoを apt で管理できる。具体的には ppa:longsleep/golang-backports を利用する。
sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt update
sudo apt install golang-go
このPPAはSimon Eisenmann氏によって個人的に維持されており、Go公式Wikiでも推奨されている。通常のパッケージ更新の流れでGoも最新版に更新される利便性がある。
パッケージ管理ツールの選択理由
現在のLinux環境では、従来の apt に加えて snap というパッケージ管理システムも選択肢として存在する。しかし、snapには以下の課題がある。
snapはCanonical社が開発した新しいパッケージ形式で、依存関係を含む自己完結型のパッケージを提供する。一見便利に思えるが、実際には起動速度の低下、メモリ使用量の増加、そしてSnapストアがCanonicalの独占管理下にあるという構造的な問題を抱えている。
Linux コミュニティでは「便利だが本質的ではない」という評価が一般的であり、特に開発環境のような基盤的なツールには従来のパッケージ管理を選択する開発者が多い。
実際のインストール手順
上記の検討を踏まえ、PPAを使用したインストールを実行する。
# PPAリポジトリの追加
sudo add-apt-repository ppa:longsleep/golang-backports
# パッケージリストの更新
sudo apt update
# Goのインストール
sudo apt install golang-go
# インストール確認
go version
期待される出力例:
go version go1.21.5 linux/amd64
開発環境の設定
Goの開発に必要なディレクトリ構造を作成し、環境変数を設定する。
# Go作業ディレクトリの作成
mkdir -p ~/go/{bin,src,pkg}
# 環境変数の設定
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc
# 設定の反映
source ~/.bashrc
# 環境確認
go env GOPATH
go env GOROOT
動作確認
実際にGoプログラムをビルドして実行し、環境が正しく構築されていることを確認する。
# テスト用ディレクトリの作成
mkdir ~/go/src/hello
cd ~/go/src/hello
# サンプルプログラムの作成
cat << 'EOF' > main.go
package main
import "fmt"
func main() {
fmt.Println("Hello, Go on WSL2!")
}
EOF
# ビルドと実行
go build
./hello
正常に動作すれば Hello, Go on WSL2! と出力される。
今後の運用
PPAを使用している場合、Goのアップデートは通常のシステム更新で自動的に行われる。
# 定期的なシステム更新でGoも更新される
sudo apt update && sudo apt upgrade
この方法により、手動でのバージョン管理作業から解放され、常に最新の安定版を利用できる開発環境が維持される。
まとめ
WSL2上でのGo開発環境構築において、複数の選択肢がある中でPPAを利用する方法が実用性と保守性のバランスが取れている。個人管理のリポジトリに依存するリスクはあるものの、長期間の運用実績とGo公式の推奨により、実用的な選択肢として評価できる。