> A tool directive adds a package as a dependency of the current module. • go 1.24 から導入 • go.mod に追記するディレクティブ • 使いかた ogo get –tool github.com/golangci/golangci-lint/v2/cmd/golangci- lint ogo tool golangci-lint • 保存先 ogo tool → $GOCACHE ▪ go tool コマンドでツールを実行できるようにする ogo install tool → $GOBIN 9
o Makefile や GHA でバージョンが固定されている(go install) o go.mod で一元管理されていない ▪ dependabot による自動更新検知の恩恵を受けられない • 環境差分の発生 o 開発者のローカル環境にグローバルにインストールされる o プロジェクト間でバージョンの競合が発生する可能性がある 12
go install / go tool install を完全に排除するのが厳しそう o 例).vscode/settings.json で golangci-lint を扱うケース • go work / go.work.sum の扱い方 o Git の管理にいれるかどうか o "一般的" に go.work はコミットしない • 厳密なバージョン管理は難しそう ogolangci-lint は tool directive は非推奨としている
directive は便利なのでどんどん使っていきたい • ただし、厳密にバージョン管理して動作させたい場合には注意が必要 o プロジェクトの依存関係が変更される可能性がある o 変更されたバイナリはテストしていない o aqua とかを使った方が幸せになれそう • workspace を使った管理をするのが良さそう o golangci-lint も tool を使いたいなら個別の go.mod ファイルを指定してねと o go.work.sum は git ignore するのがよさそう