0Pricing
Go Academy · レッスン

go modによるGo Modules

モジュールの初期化、go.mod、go.sum

「go modによるGo Modules」はCoddyKit上の無料Go Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはGo Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Go Academyコースには全4レッスンが含まれています。

Goモジュールとは

モジュールは、ルートにgo.modファイルを持つGoパッケージの集合です。モジュールは、Goにおけるコードの配布とバージョン管理の単位です:

// go.mod — created with: go mod init github.com/myuser/myapp
module github.com/myuser/myapp

go 1.21

require (
    github.com/gin-gonic/gin v1.9.1
    golang.org/x/sync v0.5.0
)

go mod init

go mod initで新しいモジュールを初期化します:

# In project directory:
go mod init github.com/myuser/myapp

# This creates go.mod:
# module github.com/myuser/myapp
# go 1.21

# The module path is the canonical import path prefix
# for all packages in this module

go.sum — 整合性の検証

go.sumには、すべての依存関係の暗号学的チェックサムが記録されます。手動で編集しないでください。goコマンドが管理します:

# go.sum example entries:
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=

# Commit go.sum to version control — it ensures reproducible builds

go get — 依存関係の追加

依存関係の追加や更新にはgo getを使用します。go.modとgo.sumの両方が更新されます:

# Add latest version
go get github.com/pkg/errors

# Add specific version
go get github.com/pkg/errors@v0.9.1

# Upgrade to latest patch release
go get -u=patch github.com/pkg/errors

# Remove unused dependency from go.mod
go mod tidy

go mod tidy

go mod tidyは、go.modとgo.sumから不足している要件を追加し、使用されていない要件を削除します。インポートを編集した後に実行します:

# After adding/removing imports:
go mod tidy

# What it does:
# 1. Adds any missing module requirements
# 2. Removes requirements for packages no longer imported
# 3. Updates go.sum with needed checksums
# 4. Best practice: run before committing

Semverによるモジュールのバージョン管理

Goモジュールはセマンティックバージョニングを使用します。メジャーバージョンが2以上の場合は、パスにサフィックスが必要です:

// v1: github.com/pkg/errors
import "github.com/pkg/errors"

// v2+: module path includes major version
import "github.com/foo/bar/v2"
import "github.com/foo/bar/v3"

// go.mod:
// require github.com/foo/bar/v2 v2.3.1

go mod vendor

Vendorモードでは、オフラインビルドのためにすべての依存関係をローカルのvendor/ディレクトリへコピーします:

# Copy deps to vendor/
go mod vendor

# Build using vendor/
go build -mod=vendor ./...

# Useful for:
# - Air-gapped environments
# - Reproducible CI builds without network
# - Code review of dependencies

replaceディレクティブ

go.modのreplaceディレクティブは、モジュールをローカルパスまたは別のバージョンに置き換えます。ローカル開発に便利です:

module github.com/myapp

go 1.21

require github.com/mylib v1.0.0

// Use local fork during development:
replace github.com/mylib => ../mylib

// Replace with a specific version:
// replace github.com/mylib v1.0.0 => github.com/myfork v1.0.0

go env GOPATH と GOMODCACHE

Goモジュールで重要な環境変数:

# Module cache location (default: ~/go/pkg/mod)
go env GOMODCACHE

# Proxy for downloading modules (default: proxy.golang.org)
go env GOPROXY

# Sum database for checksum verification
go env GONOSUMCHECK

# Disable module proxy (use direct)
export GOPROXY=direct

go list と go mod graph

次のコマンドでモジュールの依存関係を調べます:

# List all modules in the build
go list -m all

# Show module dependency graph
go mod graph

# Find which module provides a package
go list -m -json all | grep -A5 gin

# Check for available updates
go list -m -u all

クイックチェック

go mod tidyは何を行いますか?

まとめ:Goモジュール

モジュールの主な概念:

  • go mod initはgo.modファイルを含むモジュールを作成します
  • go.modにはモジュール名、Goのバージョン、依存関係が記載されます
  • go.sumにはチェックサムが保存されます。コミットしてください
  • go getは依存関係を追加・更新し、go mod tidyは整理します
  • ローカル開発用のフォークにはreplaceを使用します
  • メジャーバージョンv2以降では、パスにサフィックスが必要です

よくある質問

「go modによるGo Modules」レッスンは無料ですか?

はい。「go modによるGo Modules」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Go Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Go Academyコースには全4レッスンが含まれています。

「go modによるGo Modules」で何を学びますか?

モジュールの初期化、go.mod、go.sum ブラウザで直接実行するハンズオンコードでGo Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Go Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのGo Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「go modによるGo Modules」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このGo Academyレッスンでコードを書いて実行できますか?

はい。すべてのGo Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. パッケージ:Goコードの整理
  2. go modによるGo Modules
  3. 外部依存関係の追加
  4. 内部パッケージとワークスペース
← Go Academyに戻る