Go開発環境の包括的な設定ガイド
Min-jun Kim
Dev Intern · Leapcell

Go(Golangとも呼ばれる)は、Googleが設計したオープンソースのプログラミング言語です。そのシンプルさ、堅牢な標準ライブラリ、優れた並行性サポート、および強力なパフォーマンスで知られており、Webサービス、コマンドラインツール、ネットワークアプリケーションなどの構築に広く利用されています。
このガイドでは、主要な3つのオペレーティングシステム(Windows、macOS、Linux)で完全なGo開発環境をセットアップする手順を説明します。インストール、環境構成、不可欠なツール、および最新のプロジェクト管理のためのGo Modulesの概要について説明します。
前提条件
始める前に、以下を確認してください。
- 必要なファイルをダウンロードするためのアクティブなインターネット接続。
- オペレーティングシステムのコマンドラインまたはターミナルの基本的な知識。
1. Goのインストール
Goの公式ディストリビューションは、すべての主要プラットフォームに対応したインストーラーを提供しています。通常は、Goの最新の安定バージョンを使用することをお勧めします。最新のダウンロードは、Goの公式Webサイト(https://go.dev/dl/)にあります。
1.1. Goのインストール確認
OSに関係なく、インストール後、ターミナル/コマンドプロンプトを開き、次を実行します。
go version
次のような出力が表示され、インストールされているGoのバージョンが示されます。
go version go1.22.2 windows/amd64
1.2. Windows
オプション1:公式MSIインストーラー(推奨)
- ダウンロード: https://go.dev/dl/にアクセスし、Windowsインストーラー(例:
go1.22.2.windows-amd64.msi
)をダウンロードします。 - インストーラーの実行: ダウンロードしたMSIファイルをダブルクリックします。
- プロンプトに従う: インストーラーがプロセスをガイドします。通常、Goはデフォルトで
C:\Program Files\Go
にインストールされ、bin
ディレクトリ(C:\Program Files\Go\bin
)がシステムのPATH
環境変数に自動的に追加されます。 - 確認: 新しいコマンドプロンプトまたはPowerShellウィンドウを開き、
go version
を実行します。既存のウィンドウを使用する場合は、PATH
の変更を有効にするために再起動が必要になる場合があります。
オプション2:Chocolatey(パッケージマネージャー)
Windows用のパッケージマネージャーであるChocolateyを使用している場合は、次の単一のコマンドでGoをインストールできます。
choco install golang
1.3. macOS
オプション1:公式PKGインストーラー(推奨)
- ダウンロード: https://go.dev/dl/にアクセスし、macOSインストーラー(例:Intelの場合は
go1.22.2.darwin-amd64.pkg
、Apple Siliconの場合はgo1.22.2.darwin-arm64.pkg
)をダウンロードします。 - インストーラーの実行: ダウンロードしたPKGファイルをダブルクリックします。
- プロンプトに従う: インストーラーがガイドします。通常、Goは
/usr/local/go
にインストールされ、インストーラーは/etc/paths.d/go
にPATH
環境変数を自動的に設定します。 - 確認: 新しいターミナルウィンドウを開き、
go version
を実行します。
オプション2:Homebrew(パッケージマネージャー)
Homebrewは、macOSで最も人気のあるパッケージマネージャーです。Homebrewがインストールされている場合は、次のようにしてGoをインストールできます。
brew install go
Homebrewは通常、go
をPATH
に自動的に追加します。
1.4. Linux
Linuxには、いくつかのオプションがあります。手動のtarballインストールは最も制御が可能で、パッケージマネージャーは便利です。
オプション1:公式Tarball(手動制御に推奨)
この方法では、Goから直接最新バージョンを取得し、インストール場所を制御できます。
-
ダウンロード: https://go.dev/dl/にアクセスし、Linux tarball(例:
go1.22.2.linux-amd64.tar.gz
)をダウンロードします。 -
抽出: ターミナルを開き、アーカイブを
/usr/local
に抽出します。この場所は、システム全体のソフトウェアの一般的な規則です。sudo rm -rf /usr/local/go # 以前のGoインストールを削除します sudo tar -C /usr/local -xzf go1.22.2.linux-amd64.tar.gz
(
go1.22.2.linux-amd64.tar.gz
をダウンロードした実際のファイル名に置き換えてください。) -
環境変数の設定: Goのバイナリディレクトリを
PATH
に追加する必要があります。テキストエディターでシェル構成ファイル(例:~/.bashrc
、~/.zshrc
、または~/.profile
)を開きます。# Bashの場合 nano ~/.bashrc # Zshの場合 nano ~/.zshrc
ファイルの末尾に次の行を追加します。
export PATH=$PATH:/usr/local/go/bin
ファイルを保存してエディターを終了します。
-
変更の適用: 変更を有効にするには、ターミナルを再起動するか、構成ファイルをソースします。
source ~/.bashrc # または source ~/.zshrc
-
確認:
go version
を実行します。
オプション2:APTの使用(Debian/Ubuntu)
便利な一方で、標準リポジトリのバージョンは、最新の安定リリースよりも古い可能性があります。
sudo apt update sudo apt install golang-go
オプション3:Snapの使用(Ubuntu)
Snapパッケージは、分離された環境を提供し、apt
よりも新しいバージョンを提供することがよくあります。
sudo snap install go --classic
2. Go環境変数の理解
Goは、その動作のためにいくつかの環境変数に依存しています。go env
を使用して現在のGo環境設定を調べることができます。
go env
出力は異なりますが、主要な変数には次のものがあります。
GOROOT
:Goのインストールパス(例:/usr/local/go
またはC:\Program Files\Go
)。これは、インストーラー/ tarball抽出によって自動的に設定されます。GOPATH
:歴史的には、これはGoプロジェクト、パッケージ、およびバイナリが保存されていたワークスペースディレクトリでした。Go Modules(Go 1.11で導入され、1.16以降はデフォルト)では、プロジェクトのソースコードに対してGOPATH
はほとんど非推奨になりました。 モジュールのキャッシュ(GOMODCACHE
)や、モジュールを認識しないツールがインストールされる場合のgo install
ターゲット(例:go install golang.org/x/tools/cmd/guru@latest
はguru
を$GOPATH/bin
にインストールします)に使用されます。デフォルトでは、Unixライクなシステムでは~/go
、Windowsでは%USERPROFILE%\go
です。GOBIN
:go install
がコンパイルされたバイナリを配置するディレクトリ。デフォルトでは、これは$GOPATH/bin
です。多くのGoツールをインストールする場合は、$GOBIN
をシステムのPATH
に追加することをお勧めします。PATH
:これは、シェルが実行可能プログラムを見つける場所を示す重要なシステム変数です。go
コマンドがあらゆるディレクトリから機能するためには、Goのbin
ディレクトリ(例:/usr/local/go/bin
)がPATH
にある必要があります。GOOS
とGOARCH
:これらの変数は、クロスコンパイルのターゲットオペレーティングシステムとアーキテクチャを定義します。たとえば、macOSからARM 64ビットシステム上のLinux用のバイナリをコンパイルするには、GOOS=linux GOARCH=arm64 go build
とします。
Modulesを使用する最新のGo開発では、通常、GOPATH
またはGOBIN
を手動で設定する必要はありません。Goは、プロジェクトディレクトリ内で依存関係を管理および構築します。
3. 最初のGoプロジェクトの設定(Goモジュール)
Goモジュールは、Goの公式の依存関係管理ソリューションです。バージョン管理、パッケージング、および外部ライブラリの操作を簡素化します。
-
プロジェクトディレクトリの作成:
GOPATH
の外側の任意の場所を選択します。mkdir my-go-project cd my-go-project
-
新しいモジュールの初期化: これにより、プロジェクトの依存関係を追跡する
go.mod
ファイルが作成されます。example.com/my-go-project
を、目的のモジュールパス(オンラインでホストされている場合はインポートパス、そうでない場合はローカル識別子)に置き換えます。go mod init example.com/my-go-project
次のように表示されます。
go: creating new go.mod: module example.com/my-go-project
-
Goソースファイルの作成:
my-go-project
内にmain.go
という名前のファイルを作成します。// main.go package main import ( "fmt" "log" "rsc.io/quote" // この依存関係を追加します ) func main() { fmt.Println("Hello, Go World!") fmt.Println(quote.Hello()) log.Printf("Current Go version: %s", quote.GoV1()) }
-
プログラムの実行:
go run
コマンドは、コードをコンパイルして実行します。また、不足している依存関係(この場合はrsc.io/quote
)を自動的にダウンロードします。go run main.go
次のような出力が表示されます。
Hello, Go World! Hello, world. 2023/10/26 10:30:00 Current Go version: go1.14
(注:
quote.GoV1()
は古いGoバージョン文字列を返す可能性があります。これは、この特定の依存関係の例では想定されています。) -
プログラムのビルド:
go build
コマンドは、ソースコードをプロジェクトディレクトリ内の実行可能なバイナリにコンパイルします。go build
これにより、現在のディレクトリに実行可能ファイル(Windowsの場合は
my-go-project.exe
、Linux/macOSの場合はmy-go-project
)が作成されます。その後、直接実行できます。./my-go-project # Linux/macOSの場合 my-go-project.exe # Windowsの場合
-
go.mod
とgo.sum
の理解:go.mod
:モジュールパス、モジュールのGoバージョンを宣言し、直接および間接的な依存関係とそのバージョンを記録します。go.sum
:ダウンロードされたモジュールの内容を検証し、サプライチェーンのセキュリティを確保する暗号化ハッシュファイル。
go run
またはgo build
の後、go.mod
は次のようになります。module example.com/my-go-project go 1.22 require rsc.io/quote v1.5.2
そして、
go.sum
には、rsc.io/quote
とその推移的な依存関係(rsc.io/sampler
)のハッシュが含まれます。
4. 必須ツールと開発環境
Go開発は単純なテキストエディターで行うことができますが、Go拡張機能を備えたIDEまたはコードエディターを使用すると、生産性が大幅に向上します。
4.1. Visual Studio Code(強く推奨)
VS Codeは、Googleによる公式拡張機能を介して優れたGoサポートを備えた、無料のオープンソースで非常に人気のあるコードエディターです。
-
VS Codeのダウンロードとインストール: https://code.visualstudio.com/
-
Go拡張機能のインストール:
- VS Codeを開きます。
- 拡張機能ビューに移動します(Ctrl+Shift+XまたはCmd+Shift+X)。
- 「Go」を検索し、Googleによる公式拡張機能をインストールします。
-
Goツールのインストール: 拡張機能をインストールした後、VS Codeは追加のGoツール(リンター、デバッガー、フォーマッター)をインストールするように求めることがよくあります。「すべてインストール」をクリックするか、コマンドパレット(Ctrl+Shift+PまたはCmd+Shift+P)から「Go: Install/Update Tools」を実行します。
一般的なツールには次のものがあります。
gopls
:Intellisense、リファクタリングなどを提供するGo言語サーバー。delve
:Goデバッガー。golint
、staticcheck
:静的分析ツール。goimports
、goreturns
:コードフォーマットツール。
インストールされると、VS Codeは次のような機能を提供します。
- 構文の強調表示と自動補完。
- 保存時のコードフォーマット。
- 統合デバッグ。
- リファクタリング。
- リンターの警告とエラー。
4.2. GoLand(商用IDE)
JetBrainsのGoLandは、高度なコード分析、統合デバッグ、堅牢なリファクタリング、データベースツールなどの高度な機能を提供する、強力な専用Go IDEです。商用製品ですが、無料試用版と寛大なアカデミックライセンスを提供しています。
4.3. その他のエディター
- Vim/Neovim:
vim-go
やcoc.nvim
(LSPサポート用)などのプラグインを使用。 - Emacs:
go-mode
およびLSPクライアントの設定を使用。 - Atom、Sublime Text: 関連するGoパッケージ/プラグインを使用。
5. セットアップのテスト
すべてが正しく機能していることを確認するために、完全なワークフローを試してみましょう。
-
VS Codeで
my-go-project
ディレクトリを開きます。 -
Go拡張機能の確認: VS Codeの下部ステータスバーに、「Go」または同様の表示があるはずです。これは、Go拡張機能がアクティブであることを示しています。
-
main.go
の変更: 簡単な関数とテストファイルを追加します。新しいファイル
calculator.go
を作成します。// calculator.go package main func Add(a, b int) int { return a + b }
テストファイル
calculator_test.go
を作成します。// calculator_test.go package main import "testing" func TestAdd(t *testing.T) { sum := Add(2, 3) expected := 5 if sum != expected { t.Errorf("Add(2, 3) was incorrect, got: %d, want: %d.", sum, expected) } }
-
テストの実行: ターミナル(
my-go-project
内)で、次を実行します。go test
次のように表示されます。
ok example.com/my-go-project 0.003s
これは、テストに合格したことを示します。
-
ビルド成果物のクリーンアップ:
go clean
このコマンドは、オブジェクトファイルとキャッシュされたアーカイブを削除します(ただし、デフォルトではメインの実行可能ファイルは削除しません)。
go build
からコンパイルされた実行可能ファイルを削除するには、通常、手動で削除するか、go clean -i
を使用してインストールされたバイナリを削除します。
6. 一般的な問題のトラブルシューティング
go: command not found
またはThe term 'go' is not recognized
:- 原因: Goのバイナリディレクトリがシステムの
PATH
環境変数にありません。 - 解決策: セクション1の手順に従って
PATH
変数を正しく設定し、変更を加えた後、新しいターミナル/コマンドプロンプトウィンドウを開くことを忘れないでください。
- 原因: Goのバイナリディレクトリがシステムの
- モジュールのダウンロードエラー(例:
go: module download failed
):- 原因: ネットワークの問題、企業のプロキシ、または
GOPROXY
の誤った構成。 - 解決策: インターネット接続を確認します。プロキシの背後にある場合は、
HTTP_PROXY
およびHTTPS_PROXY
環境変数を設定し、場合によってはGOPROXY
をdirect
または会社のプロキシに設定します。 - シェルの場合の例:
export GOPROXY=https://proxy.golang.org,direct
- Windows PowerShellの場合の例:
$env:GOPROXY='https://proxy.golang.org,direct'
- 原因: ネットワークの問題、企業のプロキシ、または
- アクセス許可のエラー:
- 原因: 書き込み権限がないディレクトリ(例:
sudo
なしの/usr/local
)にGoまたはツールをインストールしようとしています。 - 解決策: 必要な権限があることを確認するか、システム全体のインストール(Linuxでのtarballメソッドなど)には
sudo
を使用します。
- 原因: 書き込み権限がないディレクトリ(例:
- 「Go language server is not running」:
- 原因:
gopls
(Go言語サーバー)またはその他の必須のGoツールがインストールされていないか、エディターで見つかりません。 - 解決策: VS Codeで、コマンドパレット(Ctrl+Shift+P / Cmd+Shift+P)を開き、「Go: Install/Update Tools」を実行します。
gopls
およびその他の不足しているツールを選択します。
- 原因:
結論
これで、選択したオペレーティングシステムに完全に機能するGo開発環境がセットアップされ、依存関係管理のために最新のGoモジュールと統合されました。標準ツールチェーンと一般的なエディター拡張機能の力を活用して、Goアプリケーションの作成、ビルド、およびテストを行うことができます。Goプログラミングへの旅はエキサイティングです。構築を開始してください!