0Pricing
Go Academy · レッスン

外部依存関係の追加

go get、バージョン管理、モジュールキャッシュ

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

パッケージの検索

Goパッケージを探すための主なリソースはpkg.go.devです。パッケージを検索し、ドキュメントを読み、使用例を確認できます:

# Search and explore at https://pkg.go.dev

# Popular packages:
# github.com/gin-gonic/gin        — HTTP framework
# github.com/stretchr/testify     — test assertions
# golang.org/x/sync               — extended sync primitives
# github.com/spf13/cobra          — CLI framework
# github.com/jackc/pgx/v5         — PostgreSQL driver

go get:依存関係の追加

依存関係を追加するにはgo getを使用します。モジュールがダウンロードされ、go.modとgo.sumが更新されます:

# Add latest version
go get github.com/stretchr/testify

# Add specific version
go get github.com/stretchr/testify@v1.8.4

# Add a pre-release version
go get github.com/foo/bar@main

# go get updates go.mod:
# require github.com/stretchr/testify v1.8.4

依存関係の使用

go getの実行後は、通常どおりパッケージをインポートして使用します:

package main

import (
    "fmt"
    "github.com/stretchr/testify/assert"
    "testing"
)

func TestAdd(t *testing.T) {
    assert.Equal(t, 4, 2+2, "math should work")
    fmt.Println("assertion done")
    _ = assert.New // suppress unused import
}

go mod download

go.modに記載されたすべての依存関係を、モジュールキャッシュへ事前にダウンロードします:

# Download all deps from go.mod
go mod download

# Download specific module
go mod download github.com/gin-gonic/gin@v1.9.1

# Useful for:
# - Docker layer caching (copy go.mod/go.sum first, then download)
# - Pre-warming CI cache
# - Offline development setup

セマンティックバージョンの選択:MVS

GoはMinimum Version Selection(MVS)を使用します。すべての依存関係の要件を満たす、必要最小限のバージョンを常に選択します。メジャーバージョンが自動的にアップグレードされることはありません:

# If A requires gin v1.9.0
# and B requires gin v1.9.1
# MVS selects v1.9.1 (minimum that satisfies both)

# To upgrade ALL dependencies to latest minor/patch:
go get -u ./...

# To upgrade specific package:
go get -u github.com/gin-gonic/gin

go mod why — 依存関係の理由を確認する

ビルドでモジュールが必要とされている理由を確認します:

# Why is encoding/json needed?
go mod why encoding/json

# Why is golang.org/x/net needed?
go mod why golang.org/x/net

# Output shows the import chain:
# github.com/myapp
# github.com/gin-gonic/gin
# golang.org/x/net

再現可能なビルドのためのgo mod vendor

Vendoringを使用すると、再現可能なビルドのためにすべての依存関係がリポジトリ内に固定されます:

# Vendor all deps
go mod vendor

# Build only from vendor (no network)
go build -mod=vendor ./...

# Dockerfile pattern:
# COPY go.mod go.sum ./
# RUN go mod download
# COPY . .
# RUN go build ...

GONOSUMCHECK と GOPRIVATE によるプライベートモジュール

内部サーバーでホストされているプライベートモジュール用にGoを設定します:

# Tell Go not to use proxy/sumdb for private modules
export GOPRIVATE=github.com/mycompany/*
export GONOSUMCHECK=github.com/mycompany/*

# Or in go env:
go env -w GOPRIVATE=github.com/mycompany/*

# For enterprise Go proxy:
export GOPROXY=https://proxy.mycompany.com,direct

go clean -modcache

モジュールキャッシュを消去し、すべての依存関係を強制的に再ダウンロードします:

# Clear entire module cache
go clean -modcache

# Clear cache for specific version
go clean -modcache github.com/gin-gonic/gin@v1.9.1

# Useful when:
# - Cache is corrupted
# - Testing with a fresh environment
# - Disk space cleanup

脆弱性の確認:govulncheck

公式のGo脆弱性スキャナーは、依存関係に既知のCVEがないか確認します:

# Install govulncheck
go install golang.org/x/vuln/cmd/govulncheck@latest

# Scan your module
govulncheck ./...

# Output example:
# Vulnerability #1: GO-2023-1234
# github.com/foo/bar v1.2.3
# Fixed in: v1.2.4
# Suggestion: go get github.com/foo/bar@v1.2.4

クイックチェック

依存関係の特定のバージョンをモジュールに追加するコマンドはどれですか?

まとめ:外部依存関係

まとめ:

  • go get pkg@versionで依存関係を追加します
  • GoはMVSを使用し、すべての要件を満たす最小バージョンを選択します
  • go mod tidyで未使用の依存関係を整理します
  • 完全に再現可能なオフラインビルドにはgo mod vendorを使用します
  • プライベートモジュールにはGOPRIVATEを使用します
  • govulncheckを実行して脆弱性を見つけます

よくある質問

「外部依存関係の追加」レッスンは無料ですか?

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

「外部依存関係の追加」で何を学びますか?

go get、バージョン管理、モジュールキャッシュ ブラウザで直接実行するハンズオンコードでGo Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「外部依存関係の追加」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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