8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HRBrainAdvent Calendar 2024

Day 17

Go言語のMac環境構築における躓き備忘録(2024)

Last updated at Posted at 2024-12-17

HRBrain Advent Calendar 2024 17日目の記事です。

はじめに

こんにちは。yk_engrです。

Go言語で本格的に開発を進めるにあたり、ローカル環境の構築を改めて行うことにしました。その際に少し戸惑った点を備忘録として残しておきたいと思います。

記事作成時のスタック

Go 1.23.2
MacBook Air M3

Go言語自体のインストール方法、バージョン管理

公式サイトのインストール方法に従えば問題ないです。
https://go.dev/dl/

Go言語は後方互換性があるため、特定のプロジェクトで古いバージョンを固定する必要がない限り、最新のGoをインストールすれば問題ありません。
(インストールしたら、$GOPATH$HOME/goに自動で設定されるはず)

なお、Homebrewでのインストール方法もありますが、ここでは割愛します。

モジュールモード

Go 1.11から、モジュール機能が導入され、それ以前のバージョンとの違いは以下のように呼び分けられています。

  • GOPATHモード: バージョン1.10以前のパッケージ管理方法
  • モジュールモード: バージョン1.11以降のパッケージ管理方法
    モードによって、さまざまな部分で挙動が異なるので注意が必要です。

モードの切り替え

$GO111MODULEでモードを切り替えられます。

  • $GO111MODULE=on -> モジュールモード
  • $GO111MODULE=off -> GOPATHモード
  • $GO111MODULE=auto -> go.modがあればモジュールモード

Go1.16以降は、$GO111MODULE=onがデフォルトで、モジュールモードが推奨されているため、この環境変数は触らない方が良いです。

ディレクトリ構造

Go1.11以降ならば、どこでも好きなところにプロジェクトを作成しても大丈夫です。

github.comを含めるか

ローカル専用のプロジェクトであれば自由に作成して問題はないですが、将来的にGitHubに公開する可能性がある場合は、モジュール名をGitHubのリポジトリURLと一致させておくと良いと思います。

プロジェクトの新規作成

$ mkdir myapp
$ cd myapp
$ go mod init myapp    // go.modファイルが作成される

パッケージ管理

Go言語では、パッケージ管理にgo.modとgo.sumを用います。(モジュールモードの場合)

  • go.mod: モジュール名と依存モジュールのバージョンが記載される
  • go.sum: 依存モジュールのチェックサム情報が記録される

パッケージの追加

基本的には、以下で問題ないです。

  1. パッケージをインポート
import "github.com/gin-gonic/gin"
  1. go mod tidyを実行
$ go mod tidy

必要な依存関係はgo.modとgo.sumに追加され、依存関係のキャッシュは$GOMODCACHEが設定されていればそのディレクトリに、設定されていなければ$GOPATH/pkg/modに保存されます。

特定のバージョンをインストールしたい場合は、go getを使います。

$ go get <package-name>@v1.2.3

必要なパッケージが自動的にダウンロードされ、go.modgo.sumに追記されます。

CLIツールのインストール

go installを使います。(Go1.16以降)

  • goplsのインストール例
$ go install golang.org/x/tools/gopls@latest

上記のコマンドを実行すると、$GOBINが設定されていればそのディレクトリに、設定されていなければ$GOPATH/binにインストールされます。

キャッシュの削除

  • ビルドキャッシュのクリア
$ go clean -cache
  • モジュールキャッシュのクリア
$ go clean -modcache

まとめ

Go言語は比較的新しい言語で、特にGo1.11以降とそれ以前では変更点が多く、混乱しやすい部分があると思います。
今後、もしGo言語を触らなくなったときでも、この記事を見れば基本的な内容を思い出せるようにしたいと考えました。

PR

株式会社HRBrainでは新しいメンバーを募集中です。
興味がある方は下記のリンクからよろしくお願いいたします。

8
6
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
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?