--- name: manage-mod description: Go モジュールを管理する。「依存関係を更新」「go mod」「モジュール更新」「依存関係確認」「go.mod 更新」「パッケージ更新」「依存関係を整理」「Go バージョン変更」などで起動。更新可能なモジュールの一覧、危険度評価、段階的更新、バージョン管理をサポート。 allowed-tools: [Read, Bash, Glob, Grep] --- # Manage-Mod Go モジュールを管理します。依存関係の更新、危険度評価、Go バージョン管理をサポート。 ## 引数 - `--check`: 更新可能なモジュールを確認のみ(更新しない) - `--version`: Go バージョンを確認・変更 - `--set `: Go バージョンを指定したバージョンに変更 - `--help`: ヘルプを表示 ## 依存関係更新 ### 1. 現在の依存関係を確認 ```bash cat go.mod go list -m -u all ``` ### 2. 更新可能なモジュールを分析 各モジュールについて以下を評価: | 危険度 | 基準 | 説明 | |--------|------|------| | 🟢 安全 | パッチバージョン (v1.2.3 → v1.2.4) | バグ修正のみ、後方互換性保証 | | 🟡 注意 | マイナーバージョン (v1.2.0 → v1.3.0) | 新機能追加、非推奨警告あり | | 🔴 危険 | メジャーバージョン (v1.x.y → v2.0.0) | 破壊的変更、API の変更 | ### 3. 更新実行 ```bash # バックアップ作成 cp go.mod go.mod.backup cp go.sum go.sum.backup # 特定モジュールの更新 go get -u github.com/xxx/yyy@latest # すべての依存関係を更新 go get -u ./... # go.mod の整理 go mod tidy # 更新後の確認 go build ./... go test ./... ``` ### 4. 結果レポート ``` ✅ 依存関係更新完了 更新されたモジュール: - github.com/xxx/yyy: v1.2.0 → v1.3.0 (🟡 マイナー) - github.com/aaa/bbb: v2.1.0 → v2.1.1 (🟢 パッチ) 更新をスキップ: - github.com/ccc/ddd: v1.0.0 → v2.0.0 (🔴 メジャー - 手動確認推奨) 推奨アクション: 1. `go test ./...` でテストを実行 2. メジャーバージョンアップは個別に検討 ``` ## Go バージョン管理 ### 1. 現在のバージョンを確認 ```bash # go.mod の Go バージョンを確認 grep "^go " go.mod # システムの Go バージョンを確認 go version ``` ### 2. バージョン変更(--set オプション使用時) ```bash # go.mod の Go バージョンを変更 go mod edit -go=1.22 # 依存関係の整理 go mod tidy ``` ### 3. 互換性チェック ```bash # ビルド確認 go build ./... # テスト確認 go test ./... ``` ## Go バージョンの主な変更点 | バージョン | 主な変更 | |-----------|---------| | 1.24 | tool ディレクティブ、go run キャッシング改善 | | 1.23 | イテレータ関数(range over func) | | 1.22 | ループ変数スコープ変更、PGO デフォルト有効化 | | 1.21 | 標準ライブラリの min/max/clear 関数 | | 1.20 | カバレッジプロファイル、PGO サポート | ## 重要な注意事項 - ✅ メジャーバージョンアップは慎重に - ✅ 更新後は必ずビルドとテストを実行 - ✅ 依存関係更新は独立したコミットに - ✅ CHANGELOG を確認 - ❌ 後方互換性に注意(Go バージョンを上げると古いバージョンでビルドできない可能性)