Skip to content

イントロダクション

asdfは、ツールのためのバージョンマネージャです。すべてのツールのバージョンは単一のファイル(.tool-versions)内で定義されるため、プロジェクトのGitリポジトリにチェックインして共有することで、チーム全員に同じーバージョンのツールを使ってもらえるようになります。

従来は、複数のCLIのバージョンマネージャを用意する必要があり、それぞれが異なるAPI、構成ファイル、および実装($PATHの操作、Shim、環境変数など)となっていました。asdfは、開発ワークフローを簡素化するための単一インターフェースと構成ファイルを提供しており、シンプルなプラグインインターフェースを使って、すべてのツール・ランタイムに拡張することができます。

どうやって動いているの

シェル上でasdfコアがセットアップすると、特定のツールを管理するためのプラグインをインストールすることができるようになります。プラグインによってツールがインストールされると、インストールされる実行ファイルごとにShimが作成されます。これらの実行ファイルを実行しようとすると、代わりにShimが実行され、.tool-versionsで定義されているバージョンをasdfが認識して、当該バージョンが実行されます。

関連プロジェクト

nvm / n / rbenv etc

nvmn、およびrbenvのようなツールはすべて、ツールによってインストールされる実行ファイルのShimを作成するシェルスクリプトです。

asdfはこれらのツールと非常に似ていて、ツール/ランタイムのバージョン管理という分野では競合しています。asdfはプラグインシステムを採用し、他のツールと差別化することで、ツール/ランタイムごとのマネージャ、マネージャごとの異なるコマンド、そしてリポジトリ内の様々な*-versionファイルといったものを排除しています。

direnv

シェルに、ディレクトリごとに環境変数をロード/アンロードできる機能を付け加えます。

asdfは環境変数を管理することはしませんが、direnvの動作をasdfに統合するasdf-direnvプラグインが存在します。

詳しくはdirenvのドキュメントをご覧ください。

Homebrew

macOS(またはLinux)のためのパッケージマネージャー

Homebrewは、パッケージとその上位の依存関係を管理します。asdfは上位の依存関係を管理することはしませんし、パッケージマネージャでもありません。それらの管理はユーザが負担することとなりますが、asdfはなるべく依存関係のリストを小さく保つように努めています。

詳しくはHomebrewのドキュメントをご覧ください。

NixOS

Nixは、パッケージ管理とシステム構成に独自のアプローチを取り入れたツールです。

NixOSは、各ツールの依存関係ツリー全体でパッケージのバージョンを正確に管理することで、真に再現可能な環境を構築することを目指しています。asdfでそのようなことはできません。NixOSは、独自のプログラミング言語、たくさんのCLIツール、そして60,000を超えるパッケージコレクションによって、それらの機能を支えています。

繰り返しになりますが、asdfは上位の依存関係を管理することはしませんし、パッケージマネージャでもありません。

詳しくはNixOSのドキュメントをご覧ください。

なぜasdfを使うの?

asdfは、プラグインシステムによって多くのツールをサポートしており、シェル構成にたった1行のシェルスクリプトを記述するだけで使えるというシンプルさ・親しみやすさによって、チームが確実に同じバージョンのツールを使用することを保証できます。

Note

asdfはシステムのパッケージマネージャになることを目指してはいません。あくまで、ツールのバージョンマネージャです。プラグインを作成することで、どのようなツールでもasdfで管理できるようになりますが、それがそのツールにとって最善の方法であるとは限りませんのでご注意ください。