g
GitHub概要
スター953
ウォッチ16
フォーク54
作成日:2018年4月8日
言語:Shell
ライセンス:MIT License
トピックス
bashclidependency-managerenvironmentfishgluten-freegogolanginstallerlinuxmacosportableversion-managerzsh
スター履歴
データ取得日時: 2025/7/20 03:00
言語バージョン管理ツール
g
概要
gは、Stefan Maricによって開発されたシンプルで軽量なGoバージョン管理ツールです。「gluten-free」をモットーに、余計な機能を排除し、必要最小限の機能に絞った設計により、直感的で高速な動作を実現しています。シェルスクリプトベースで実装されており、追加の依存関係がほとんどありません。
詳細
主な特徴
- 超軽量: シェルスクリプト1ファイルのみで動作
- シンプルなコマンド: 覚えやすい短いコマンド体系
- クロスプラットフォーム: macOS、Linux、BSD、WSL(Windows)対応
- 自動セットアップ: インストール時に環境変数を自動設定
- セルフアップグレード: g自体の更新も簡単
- 最小限の依存: curlまたはwgetのみ必要
動作原理
gは、公式のGoバイナリをダウンロードして管理し、シンボリックリンクを使用して現在アクティブなバージョンを切り替えます。$GOPATHとは独立して動作し、$GOROOT/binをPATHに追加することでバージョン管理を実現します。
設計哲学
- 無駄を省いた設計: 複雑な機能やパッケージセットは提供しない
- UNIXツールの哲学: 一つのことを上手くやる
- 依存関係最小化: 外部ツールへの依存を最小限に
- 透明性: シンプルなシェルスクリプトで理解しやすい
メリット・デメリット
メリット
- 圧倒的な簡潔さ: 学習コストがほぼゼロ
- 高速動作: シェルスクリプトによる軽快な実行
- インストールが簡単: ワンライナーでセットアップ完了
- メンテナンスフリー: シンプルな実装で安定動作
- 透明性: コードが読みやすく動作を理解しやすい
- 柔軟性: スクリプトのカスタマイズが容易
デメリット
- 機能の制限: パッケージセットやプロジェクト固有設定なし
- 自動切り替えなし: ディレクトリ移動時の自動バージョン切り替え非対応
- Windows非対応: ネイティブWindowsでは動作しない(WSLは可)
- エンタープライズ機能不足: 大規模チーム向け機能がない
- プラグインなし: 拡張機能のサポートがない
参考ページ
書き方の例
インストール
# ワンライナーインストール(推奠方法)
curl -sSL https://git.io/g-install | sh -s
# または wget を使用
wget -qO- https://git.io/g-install | sh -s
# 手動インストール
# 1. スクリプトをダウンロード
curl -sSL https://raw.githubusercontent.com/stefanmaric/g/master/bin/g -o ~/bin/g
# 2. 実行権限を付与
chmod +x ~/bin/g
# 3. シェル設定に追加(例:~/.bashrc)
export PATH="$HOME/bin:$PATH"
export GOPATH="$HOME/go"
export PATH="$GOPATH/bin:$PATH"
基本的な使い方
# 利用可能なバージョンを表示
g list
# 最新安定版をインストールして使用
g install latest
g use latest
# 特定バージョンをインストール
g install 1.21.5
g install 1.20.12
# インストール済みバージョンを表示
g list installed
# バージョンの切り替え
g use 1.21.5
g use 1.20.12
# 現在のバージョンを確認
g --version
go version
バージョン管理の操作
# betaやrcバージョンをインストール
g install 1.22rc1
g install 1.21beta1
# バージョンの削除
g uninstall 1.20.12
g uninstall 1.19.13
# 全バージョンの削除(現在使用中を除く)
g prune
# バージョン固定(シンボリックリンクの作成)
g use 1.21.5
# これで go コマンドが 1.21.5 を参照
gツール自体の管理
# g自体をアップデート
g self-upgrade
# gのバージョンを確認
g --version
# ヘルプを表示
g help
g --help
# 環境変数の確認
echo $GOROOT
echo $GOPATH
echo $PATH | grep -o '[^:]*go[^:]*'
開発ワークフロー
# 新しいプロジェクトのセットアップ
mkdir my-project && cd my-project
# Go 1.21を使用
g use 1.21.5
# go.modの初期化
go mod init github.com/user/my-project
# 依存関係のインストール
go get -u ./...
# ビルドとテスト
go build
go test ./...
CI/CD環境での使用
# GitHub Actions例
# - name: Install g
# run: curl -sSL https://git.io/g-install | sh -s
#
# - name: Install Go
# run: |
# g install 1.21.5
# g use 1.21.5
#
# - name: Build
# run: go build ./...
# Dockerfileでの使用例
# FROM ubuntu:latest
# RUN apt-get update && apt-get install -y curl
# RUN curl -sSL https://git.io/g-install | sh -s
# ENV PATH="/root/bin:${PATH}"
# RUN g install latest && g use latest
トラブルシューティング
# インストールパスの確認
which g
which go
# g の動作確認
g run env GOROOT
g run env GOPATH
# キャッシュのクリア
rm -rf ~/.g/cache
# 手動でGoバイナリを削除
rm -rf ~/.g/versions
# 環境変数のリセット
unset GOROOT
source ~/.bashrc # または ~/.zshrc
# デバッグモードで実行
DEBUG=1 g install 1.21.5