asdf

バージョン管理多言語対応開発環境CLIUNIX系ツール

GitHub概要

asdf-vm/asdf

Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more

ホームページ:https://asdf-vm.com/
スター24,478
ウォッチ121
フォーク902
作成日:2014年11月29日
言語:Go
ライセンス:MIT License

トピックス

asdf-vmbashclielixirelvisherlangfishgolangmultiple-languagesnodenushellpowershellpythonrubyshellversion-managerzsh

スター履歴

asdf-vm/asdf Star History
データ取得日時: 2025/10/22 04:10

言語バージョン管理ツール

asdf

概要

asdfは、複数のプログラミング言語とツールのバージョンを一元管理できる汎用バージョンマネージャーです。プラグインシステムにより、Python、Node.js、Ruby、Go、Elixirなど300以上のツールに対応しています。一つのツールですべての言語バージョンを管理できるため、チーム開発に最適です。

詳細

主な特徴

  • 多言語対応: 300以上のツール・言語をサポート
  • 統一インターフェース: すべての言語で同じコマンド体系
  • プラグインアーキテクチャ: 新しい言語の追加が容易
  • .tool-versions: プロジェクトごとの一元的なバージョン管理
  • グローバル/ローカル設定: 柔軟なバージョン管理
  • 既存ツールとの互換性: .nvmrc、.ruby-versionなどをサポート

動作原理

asdfはshimディレクトリをPATHに追加し、各言語のコマンドをインターセプトします。.tool-versionsファイルまたはレガシーバージョンファイルを読み取り、適切なバージョンのバイナリを実行します。

プラグインシステム

各言語やツールはプラグインとして実装されており、GitHubから簡単にインストールできます。プラグインは言語固有のインストール方法やバージョン管理を抽象化します。

メリット・デメリット

メリット

  • 一元管理: すべての言語を一つのツールで管理
  • 学習コスト削減: 統一されたコマンド体系
  • チーム開発に最適: .tool-versionsで環境を共有
  • 豊富なエコシステム: 300以上の公式プラグイン
  • アクティブな開発: 継続的な更新とサポート
  • 移行が容易: 既存の.*-versionファイルとの互換性

デメリット

  • 初期設定の複雑さ: プラグインの個別インストールが必要
  • パフォーマンス: 言語特化ツールより若干遅い場合がある
  • プラグイン依存: プラグインの品質にばらつき
  • Windows非対応: WSL環境が必要
  • メモリ使用: 多数の言語使用時のディスク容量

参考ページ

書き方の例

インストール(Linux/macOS)

# Gitクローンによるインストール
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.0

# macOSではHomebrewも使用可能
brew install asdf

# Linux(パッケージマネージャー経由)
# Ubuntu/Debian
apt install asdf

# Arch Linux
pacman -S asdf-vm

シェル設定

# Bash(.bashrcに追加)
. "$HOME/.asdf/asdf.sh"
. "$HOME/.asdf/completions/asdf.bash"

# Zsh(.zshrcに追加)
. "$HOME/.asdf/asdf.sh"
fpath=(${ASDF_DIR}/completions $fpath)
autoload -Uz compinit && compinit

# Fish(~/.config/fish/config.fishに追加)
source ~/.asdf/asdf.fish
mkdir -p ~/.config/fish/completions
ln -s ~/.asdf/completions/asdf.fish ~/.config/fish/completions

# 設定を反映
source ~/.bashrc  # または該当するシェル設定ファイル

プラグインのインストール

# プラグイン一覧の表示
asdf plugin list all

# 各言語のプラグインをインストール
asdf plugin add python
asdf plugin add nodejs
asdf plugin add ruby
asdf plugin add golang
asdf plugin add java
asdf plugin add elixir

# URLを指定してプラグインをインストール
asdf plugin add kotlin https://github.com/asdf-community/asdf-kotlin.git

基本的な使い方

# インストール可能なバージョンの表示
asdf list all python
asdf list all nodejs

# 特定バージョンのインストール
asdf install python 3.12.0
asdf install nodejs 20.11.0
asdf install ruby 3.3.0

# 最新バージョンのインストール
asdf install python latest
asdf install nodejs latest:18  # 18.x系の最新

# インストール済みバージョンの確認
asdf list python
asdf list nodejs

グローバルバージョンの設定

# グローバルバージョンの設定
asdf global python 3.12.0
asdf global nodejs 20.11.0

# 複数ツールを一度に設定
asdf global python 3.12.0 nodejs 20.11.0

# 現在のバージョン確認
asdf current
asdf current python

プロジェクトごとの管理

# プロジェクトディレクトリに移動
cd /path/to/my-project

# .tool-versionsファイルを作成
asdf local python 3.11.7
asdf local nodejs 18.19.0
asdf local ruby 3.2.3

# .tool-versionsの内容
cat .tool-versions
# python 3.11.7
# nodejs 18.19.0
# ruby 3.2.3

# 手動で.tool-versionsを編集することも可能
echo "golang 1.21.5" >> .tool-versions

レガシーバージョンファイルのサポート

# レガシーバージョンファイルのサポートを有効化
echo 'legacy_version_file = yes' >> ~/.asdfrc

# 既存のバージョンファイルが使用可能
# .nvmrc (Node.js)
# .ruby-version (Ruby)
# .python-version (Python)
# .java-version (Java)

依存関係のインストール

# Node.jsの場合、npmのグローバルパッケージ用設定
asdf reshim nodejs

# Pythonの場合、pipのアップグレード
python -m pip install --upgrade pip

# Rubyの場合、Bundlerのインストール
gem install bundler
asdf reshim ruby

システムバージョンの使用

# システムにインストールされたバージョンを使用
asdf local python system
asdf global nodejs system

# 一時的にシステムバージョンを使用
asdf shell ruby system

便利なコマンド

# プラグインの更新
asdf plugin update --all
asdf plugin update python

# 未使用バージョンの削除
asdf uninstall python 3.10.0

# 現在のツールのパスを表示
asdf which python
asdf where python

# 環境変数の設定確認
asdf info

# プラグインの削除
asdf plugin remove java

チーム開発での活用

# プロジェクトのセットアップスクリプト
#!/bin/bash
# setup.sh

# 必要なプラグインをインストール
while IFS= read -r line; do
  plugin=$(echo $line | cut -d' ' -f1)
  asdf plugin add $plugin 2>/dev/null || true
done < .tool-versions

# .tool-versionsに記載されたバージョンをインストール
asdf install

# 使用例
chmod +x setup.sh
./setup.sh