Golang +VSCode環境構築(Mac編)
今回は、GolangをVSCodeを使った開発環境の構築手順を書きます。
私は、地図データ形式を変換するプログラムを主にPythonで作成していますが、”CやC++を置き換える言語を目指す”というGo言語を使えば処理性能の向上が期待できるのかと思い使ってみることにしました。
Goの環境構築については、様々なサイトに情報がありますが、情報が古かったりVSCodeに開発環境を構築するまでの手順が示されていなかったりしたので、本記事にまとめようと思います。
今回は以下の環境にGoの開発環境を構築します。
- MacMini(M1)+BigSur11.4
- VSCode May 2021 (version 1.57)
Goのインストール
Goは、以下のサイトからインストール物件をダウンロードしてインストールします。
“Download Go”をクリックします。
Macの場合、Intel版とArm版の2種類のインストーラがあり、”Featured downloads”(注目のダウンロード)にはIntel版が表示されています。
M1-Macの場合は、”Stable versions”からarm64版のインストーラ(go1.16.5)をダウンロードします。
今回はデフォルトのままインストールしたので、画面キャプチャや説明は割愛します。
Goが正常にインストールできたか確認するためには、以下のコマンドを実行します。
% which go
/usr/local/go/bin/go
% go version
go version go1.16.5 darwin/arm64
なお、Macであれば、homebrewでもインストールできます。
実行イメージは以下の通りです。
% brew install go
Updating Homebrew…
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core and homebrew/cask).
==> New Formulae
ciphey envoy@1.17 multi-git-status sqsmover
==> Updated Formulae
Updated 124 formulae.
==> New Casks
final-fantasy-xiv-online tabby
midiview vial
==> Updated Casks
Updated 81 casks.
==> Deleted Casks
terminus
==> Downloading https://ghcr.io/v2/homebrew/core/go/manifests/1.16.5
################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/go/blobs/sha256:416c5e2b7247c78
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh
################################################################## 100.0%
==> Pouring go–1.16.5.big_sur.bottle.tar.gz
🍺 /usr/local/Cellar/go/1.16.5: 9,957 files, 503.6MB
takamotokeiji@Savoie ~ % go version
go version go1.16.5 darwin/amd64
環境設定
goインストール後の環境設定は、以下の2つを行います。
- 環境変数の設定
- ディレクトリの作成
環境変数の設定
環境変数の設定は、PATH環境変数へのパス追加とGOPATHの設定を行います。
私は、.zshrc
に以下の2行を追加しました。
export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin
環境変数GOPATHには、goコマンドを使用してインストールした拡張モジュールなどがインストールされます。
また、ネット上の情報では$HOME/go
を指定するケースが多いですが、任意のディレクトリで構いません。
ディレクトリの作成
先ほど決めた環境変数GOPATH
配下に、以下のように3つのディレクトリを作成します。
$GOPATH
├── bin
├── pkg
└── src
コマンド的には以下のようになります。
% cd
% mkdir -p go/bin
% mkdir -p go/pkg
% mkdir -p go/src <- おそらく不要
srcは、推奨の開発ディレクトリですので、作成しなくても問題ないと思われます。
VSCodeの開発環境の構築
VSCodeの開発環境は、以下の手順で構築します。
- Goの拡張機能のインストール
- ソースコードの作成
- go modコマンドの実行
Goの拡張機能とツールのインストール
VSCodeの拡張機能を”go”
で検索し、”Rich Go language support for Visual Studio Code”をインストールします。
次に、goのコードアシストなどのツール類をインストールします。
コマンドパレット(表示 -> コマンドパレット)に、"Go:Install/Update Tools"
と入力し、goのツール類をインストールします。
この操作により、goコマンド(go install
)を使って$GOHOMEのbinやpkgに開発に必要なツール類がインストールされます。
ソースコードの作成
ここまでの作業で、VSCodeおよびgoの開発環境の設定が終了しました。
次に、"$GOHOME/src"
に任意のディレクトリを作成し、ソースコードを作成します。("$GOHOME/src"
以外のディレクトリでも問題ありません。)
私は、ディレクトリhelloを作成し、goのホームページに表示されている以下のコードをコピーして、hello.goを作成しました。
// You can edit this code! // Click here and start typing. package main import "fmt" func main() { fmt.Println("Hello, 世界") }
この時点で、コードアシストが可能となっています。
go modコマンドの実行
ここまでの作業でコード作成までは可能となりましたが、VSCode上でデバッグ実行はできません。
デバッグ実行をするためには、ソースディレクトリにファイルgo.mod
を作成し、作成したモジュールをgoに認識させなければなりません。
ファイルgo.mod
は、goコマンドにて作成します。
具体的には、ソースコードが存在するディレクトリで以下のコマンドを発行します。
% go mod init hello
ファイルgo.modの内容は以下のようなテキストファイルです。
module hello go 1.16
VSCodeによるデバッグ実行
ここまでで、環境構築作業が終了しましたので、先ほどのhello.goを使ってVSCode上でデバッグ実行を行います。
他の言語の開発と同様に、VSCodeにてF5キー押下により、ビルドおよびデバッグ実行が行われます。
初回のビルド時には、以下の実行許可確認画面が表示されます。
実行が成功すると、以下のようにコンソールにPrintln関数で指定した文字が表示されます。
また、以下のようにブレークポイントの設定もできるようになります。
まとめ
ここまで、VSCode+Goの環境構築を行いました。
私もネット上で調べながら作業しましたが、Pythonのようにサクッと環境構築できるわけではなく、多少手がかかる印象を受けました。
このあたりは、Goの普及に伴って改善されていくように思います。
一つ未解決の問題がありまして、私の自宅の環境では、go install
時に以下のエラー(golang.org/x/tools/cmd/goimports@latestが取得できずにタイムアウト)が発生ました。
自宅で使用しているプロバイダー(Asahinet)が原因と判断し、PCを事務所(プロバイダーはJCOM)に持ち込んで同じ作業を実施したところ、問題なくインストールできました。。
% go install golang.org/x/tools/cmd/goimports@latest
go: downloading golang.org/x/tools v0.1.4
go install golang.org/x/tools/cmd/goimports@latest: golang.org/x/tools@v0.1.4: read tcp [2405:6582:2760:4200:c94f:5100:11c8:1845]:49572->[2404:6800:4004:80c::2011]:443: read: operation timed out
コメント