Golang 入門

Go 開発環境の構築

Go の開発環境を適切に構成することは、優れた Go プログラマーへの第一歩です。正しく設定された環境は、コードの記述、コンパイル、実行の効率を劇的に向上させます。

本章では、Go のインストール、ワークスペースの構成、および必須ツールのセットアップをステップバイステップでガイドします。この章を終える頃には、最初のプログラムをいつでも書き始められる、フル機能の Go 開発環境が整っているはずです。

1. Go 言語のインストール

最初のステップは、使用しているオペレーティングシステム(OS)に適した Go ディストリビューションをダウンロードしてインストールすることです。Go 公式は、Windows、macOS、および Linux 用のプリコンパイル済みバイナリインストールパッケージを提供しています。

1.1 Go のダウンロード

Go 公式ダウンロードページにアクセスします: https://go.dev/dl/

OS に合わせて適切なインストーラーを選択してください:

  • Windows: .msi インストーラーをダウンロード。
  • macOS: .pkg インストーラーをダウンロード。
  • Linux: .tar.gz アーカイブをダウンロード。

1.2 Windows でのインストール

  1. ダウンロードした .msi ファイルをダブルクリックしてインストールを開始します。
  2. 画面の指示に従って進めます。デフォルトのインストールパスは C:\Program Files\Go です。通常はデフォルト設定のままにすることをお勧めします。
  3. インストーラーは自動的に Go をシステムの PATH 環境変数に追加します。自動で追加されない場合は、手動で構成する必要があります(後述の「GOPATH 環境変数の設定」セクションのパス設定を参考にしてください)。
  4. PC を再起動するか、新しいコマンドプロンプト(cmd)ウィンドウを開き、PATH 変数の変更を反映させます。

1.3 macOS でのインストール

  1. ダウンロードした .pkg ファイルをダブルクリックしてインストールを開始します。
  2. 画面の指示に従います。デフォルトのインストールパスは /usr/local/go です。
  3. 通常、インストーラーによって環境変数が自動的に設定されます。設定されない場合は、手動で Go のバイナリディレクトリを PATH に追加する必要があります。ターミナルを開き、~/.zshrc または ~/.bash_profile ファイルの末尾に以下のコードを追加してください:
export PATH=$PATH:/usr/local/go/bin

4. 新しいターミナルウィンドウを開くか、設定反映コマンド(例:source ~/.zshrc)を実行して変更を有効にします。

1.4 Linux でのインストール

1. ダウンロードした .tar.gz アーカイブを /usr/local ディレクトリに展開します:

sudo tar -C /usr/local -xzf go<バージョン番号>.<OS>-<アーキテクチャ>.tar.gz

注意:<バージョン番号> は実際にダウンロードしたバージョンに、<アーキテクチャ> はシステムのアーキテクチャ(例:amd64)に置き換えてください。

2. Go のバイナリディレクトリを PATH 環境変数に追加します。~/.profile または ~/.bashrc ファイルを開き、以下を追加します:

export PATH=$PATH:/usr/local/go/bin

3. 新しいターミナルウィンドウを開くか、source ~/.profile を実行して変更を適用します。

2. インストールの確認

インストール完了後、コマンドプロンプトまたはターミナルを開き、以下のコマンドを実行して Go が正しくインストールされたか確認します:

go version

システムがインストール済みの Go バージョン情報(例:go version go1.21.5 linux/amd64)を返せば成功です。もし「go command not found(go コマンドが見つかりません)」のようなエラーが表示された場合は、PATH 環境変数の設定を再度確認してください。

3. Go ワークスペース(Workspace)の構成

Go ワークスペースとは、PC 上で Go のソースコードを保存するディレクトリのことです。ワークスペースを正しく設定することは、Go コンパイラがパッケージ(packages)や依存関係(dependencies)を正確に見つけるために非常に重要です。

3.1 GOPATH 環境変数

GOPATH 環境変数は、Go ワークスペースの場所を指定するために使用されます。現代の Go(Go Modules を使用するバージョン)では、厳密には GOPATH の設定は必須ではありませんが、古いプロジェクトのメンテナンスやプロジェクトを一括管理したい場合には、理解しておくのが良い習慣です。

  1. Go ワークスペースとして使用するディレクトリを選択します。一般的な選択肢は、ユーザーディレクトリ下の go フォルダです:$HOME/go(Windows の場合は %USERPROFILE%\go)。
  2. GOPATH 環境変数をそのディレクトリに設定します:

Windows の場合:

  1. 「システムプロパティ」ダイアログを開きます(スタートメニューで「環境変数」を検索)。
  2. 「環境変数」ボタンをクリックします。
  3. 「ユーザー変数」または「システム変数」の下にある「新規...」をクリックします。
  4. 変数名に GOPATH、変数値に選択したワークスペースのパス(例:C:\Users\あなたの名前\go)を入力します。
  5. 「OK」をクリックして保存します。

macOS と Linux の場合:

  1. シェル設定ファイル(~/.zshrc や ~/.bash_profile)を開きます。
  2. 以下のコードを追加します:
export GOPATH=$HOME/go

3. ファイルを保存して新しいターミナルを開くか、source ~/.zshrc を実行します。

3.2 go.mod ファイルと Go Modules

Go Modules は、Go プロジェクトにおける現代的な依存関係管理手法です。これにより、コードを必ずしも GOPATH 内に置く必要がなくなり、より強力なバージョン管理と依存関係管理が可能になりました。

  1. GOPATH 外に新しいプロジェクトディレクトリを作成します。例えば、ホームディレクトリに myproject というフォルダを作成します。
  2. ターミナルでそのプロジェクトディレクトリに移動します。
  3. 以下のコマンドを実行して、新しい Go モジュールを初期化します:
go mod init example.com/myproject

       説明:[example.com/myproject](https://example.com/myproject) はプロジェクトのインポートパスに置き換えてください。通常、これはプロジェクトのリポジトリ URL(GitHub のリンクなど)です。まだリポジトリがない場合は、プレースホルダーとして [example.com/myproject](https://example.com/myproject) を使用できます。

このコマンドを実行すると、プロジェクトディレクトリに go.mod ファイルが生成されます。Go はこれを使用してプロジェクトの依存関係を追跡し記録します。

3.3 ディレクトリ構造のリファレンス

一般的な Go Modules ベースのワークスペースまたはプロジェクトのディレクトリ構造は、以下のようになります:

myproject/
├── go.mod          # Go モジュール定義ファイル (プロジェクトの依存関係を記録)
├── go.sum          # 依存関係のチェックサム (改ざん防止用)
├── main.go         # メインプログラムのソースコードファイル
└── ...             # その他のソースコードファイルやディレクトリ

4. コードエディタまたは IDE の設定

シンプルなメモ帳でも Go コードは書けますが、専用の IDE(統合開発環境)や Go プラグインを備えたコードエディタを使用することで、開発効率は飛躍的に向上します。

4.1 主要な Go エディタと IDE

  • Visual Studio Code (VS Code): 無料でオープンソースのエディタ。Microsoft 公式の Go 拡張機能をインストールすることで、コード補完、静的解析(Linting)、デバッグなどの優れた機能を提供します。
  • GoLand: JetBrains 社が提供する商用グレードのプロフェッショナルな Go 開発向け IDE。高度なコード分析、リファクタリング、強力なデバッグ機能を提供します。
  • Sublime Text: 人気のある軽量エディタ。GoSublime プラグインをインストールすることで Go 開発をサポートします。
  • Vim: 強力なコマンドラインテキストエディタ。vim-go プラグインを通じて Go をサポートします。

4.2 VS Code を使用した Go 開発の設定

  1. https://code.visualstudio.com/ から VS Code をダウンロードしてインストールします。
  2. VS Code の拡張機能マーケットプレイスを開き("Go" を検索)、Microsoft 提供の Go 拡張機能をインストールします。
  3. インストール後、VS Code の右下に、追加の Go ツールをインストールするようポップアップが表示される場合があります。「Install All(すべてインストール)」をクリックしてください。これらのツールは、コード補完やフォーマットを実現するための核心部分です。
  4. VS Code の設定を構成します。settings.json ファイルを編集して動作をカスタマイズできます。以下は推奨される設定です:
{
    "go.formatTool": "goimports",
    "go.lintTool": "golangci-lint",
    "go.useLanguageServer": true,
    "gopls": {
        "usePlaceholders": true,
        "completeUnimported": true
    }
}
  • go.formatTool: コードフォーマットツールを指定します。goimports はコードを整形するだけでなく、import 文の自動追加・削除も行います。
  • go.lintTool: コードチェックツールを指定します。golangci-lint は現在最も人気があり包括的なリンター(linter)です。
  • go.useLanguageServer: Go Language Server (gopls) を有効にし、高度な補完や診断機能を提供します。
  • gopls: Language Server の詳細設定です。usePlaceholders は関数補完時に引数のプレースホルダーを自動挿入し、completeUnimported はインポートされていないパッケージのインテリジェントな補完候補を表示します。

4.3 GoLand の設定

GoLand は「開封後すぐに使える(Out of the box)」IDE であり、通常、煩雑なプラグイン設定は不要です。

  1. https://www.jetbrains.com/go/ からダウンロードしてインストールします。
  2. GoLand を開き、新しい Go プロジェクトを作成します。
  3. システム内の Go SDK(ソフトウェア開発キット)を自動的に検出し、プロジェクトを構成します。
  4. メニューバーの File -> Settings(macOS は GoLand -> Preferences)から、コードスタイル、テーマ、ショートカットキーなどの好みを調整できます。

5. 必須の Go ツール (CLI)

Go をインストールすると、システムには非常に強力なコマンドラインツール一式が自動的に含まれます。これらはコードのビルド、テスト、パッケージ管理に使用されます。

5.1 go fmt

go fmt ツールは、Go 公式のコードスタイル仕様に従って、ソースコードを自動的にフォーマットします。リポジトリにコードをコミットする前にこのコマンドを実行するのは素晴らしい習慣であり、全員のコードスタイルを一貫させることができます。

単一ファイルのフォーマット:

go fmt myfile.go

現在のディレクトリ下のすべての Go ファイルをフォーマット:

go fmt ./...

5.2 go run

go run ツールは、Go プログラムを直接コンパイルして実行します。現在のディレクトリに余分な実行ファイルを生成しないため、開発段階でのクイックテストに最適です。

プログラムの実行:

go run main.go

5.3 go build

go build ツールは、Go プログラムを独立した実行ファイルにコンパイルするために使用されます。生成されたファイルは、Go がインストールされていない環境でも直接実行できます。

プログラムのコンパイル:

go build main.go

これにより、現在のディレクトリに main という名前のファイル(Windows の場合は main.exe)が生成されます。

5.4 go mod

go mod ツールは、Go Modules(モジュールと依存関係)管理の中核です。

  • go mod init: モジュールの初期化に使用します。
  • go mod tidy: 依存関係を自動的に整理します。go.mod ファイル内の未使用の依存関係を削除し、不足している依存関係をダウンロードします。
  • go mod vendor: プロジェクトのすべての依存関係を、プロジェクトのルートディレクトリにある vendor フォルダにコピーします。これにより、ネットワークがない環境でもコンパイルが可能になります。
  • go mod download: go.mod にリストされているモジュールをローカルのモジュールキャッシュにダウンロードします。