共通
asdf 使用方法

asdf: python、java、nodeを一元管理する方法

数ある開発ツールの中でも、バージョンマネージャーは必須ツールの一つです。 各言語ごとに別々のバージョンマネージャーをインストールする代わりに、ASDFは1つのツールでほとんど全ての言語の複数のバージョンを管理する手助けをしてくれます。 この記事では、ASDFとは何か、どのようにインストールするのかを説明します。

1. なぜバージョンマネージャーを使うのか?

開発を始める時、最初にすることは、言語の最新バージョンをインストールすることです。 具体的には、その言語のコンパイラとランタイムです。 それからエディターとパッケージ・マネージャーをインストールし、開発を始める。

しかし、そこで問題にぶつかる。インストールしたパッケージが最新バージョンをサポートしていないのだ。ドゥドゥン。 どうしても必要なので、古いバージョンのパッケージをインストールする。 インストールしたはいいものの、PATHの設定を間違えてしまったせいで、うまく動かない。開発者としては、どうしたらいいのかわからない。

最初にバージョン・マネージャーをインストールし、次に言語をインストールすれば、このような事態は避けられたかもしれない。 開発環境が複雑になればなるほど、言語のバージョンは重要になってくる。 上の例のように、特定のパッケージが現在のバージョンを適切にサポートしていないことも珍しくないし、クライアントが考慮すべき環境もさまざまだ。

幸いなことに、言語固有のバージョンマネージャが開発されており、重い仕事を代行してくれる。 しかし、言語によってバージョン・マネージャーの種類も違えば、使い方も違うので、開発を始める前から情報収集するのは疲れます。 複数の言語で同時に開発するのであれば、最近はさらに大変だ。そこでASDFプロジェクトの出番だ。

2. ASDFとは

ASDF紹介ページ

ASDF (opens in a new tab)は言語バージョンマネージャを集約するプラットフォームである。 asdfをインストールした後、開発者は使いたい言語のasdfプラグインをインストールする。 適切にインストールすれば、どの言語も単一のAPIで管理できる。言語ごとに異なるツール、異なる設定、異なるメソッドを使用する必要はない。

例えば、フロントエンドにReact、バックエンドにFastAPIを使ってプロジェクトに取り組んでいるとしよう。 開発環境をセットアップするには、まずNodejsをインストールするバージョン・マネージャーをnvm、n、fnm、voltaのどれにするかを決めます。 nを選択した場合は、インストール、設定、使い方の学習に時間をかける必要がある。

次にPythonだが、pyenv、conda、mambaなど、開発環境をセットアップするのと同じプロセスを踏むことになる。

asdfをインストールしたら、NodejsプラグインとPythonプラグインをインストールして、他の言語と同じようにバージョンを設定し、すぐに開発に入ることができる。

とてもシンプルだ。

3. asdfの利点

まとめると、ASDFはオールインワンのバージョンマネージャーであり、一度使いこなせば、ほとんど全ての言語をインストールし、管理することができます。

しかし、それだけではありません。 ASDFのプラグインのほとんどはコミュニティによってメンテナンスされているため、幅広い開発ツールをサポートしています。 JVMベースの開発のためのGradle、NodejsのためのDeno、インフラストラクチャのためのawscliとkubecli、その他必要なほとんどのツールがプラグインとして含まれています。

最後に、ASDFでは言語や開発ツールのバージョンをディレクトリごとに設定することができます。 設定したバージョンはコンフィギュレーションファイルとして保存され、チームメイトと全く同じバージョンを使用することができます。 言語固有のプラグインは、各言語の典型的な設定ファイルもサポートしています。 プロジェクトに一般的な .env.envrc ファイルや、ツール固有の .nvmrc.node-version.rbenv ファイルが含まれている場合、ASDF でカバーすることができます。

4.asdfのインストール方法

asdfはLinuxとMac OSのみをサポートしている。WindowsユーザーにはWSL2を使ってインストールしてください。

4.1. Mac OSへのasdfのインストール

asdfをインストールするには、CurlとGitが必要です。MacOSではこれらのプログラムはデフォルトでインストールされていますが、xcrunエラーで実行できない場合は、この投稿を参照してください。gitとhomebrewをインストールするには2つの方法があります。

gitを使ってインストールする場合は ターミナルで以下のコマンドを入力してください。

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.11.3

Homebrewを使ってインストールする場合は、 ターミナルに以下のコマンドを入力してください。

brew install asdf

いずれにせよ、ここまでできたら、最後にシェルでうまく動くように統合する必要がある。 お使いのシェルによって、入力するコマンドは異なるので、公式サイトガイド (opens in a new tab)をチェックして、インストールされている組み合わせを見つけて、それらのコマンドを入力してください。

以下は私の例です。私はFish shellとHomebrewを使った。

fish shellとHomebrewからasdfをインストール

以下のように、エラーメッセージが表示されなければ、インストールはうまくいっている。

asdfシェルセットアップ完了

次に、verify versionコマンドを実行してインストールを確認してください。プラグインのインストール以降の流れはセクション5を参照してください。

mac asdf バージョンチェック

4.2. Windowsにasdfをインストールする方法

WSLでシェルを開き、asdfをインストールする。

最新バージョンのWindowsを使用している場合は、WSL2を使用しています。私はMac OS Parallels上でWindowsを動かしているが、WSL2は現在ブロックされているので、WSLバージョン1で進めた。

WSLがまだインストールされていない場合は、Microsoft Store: Windows Subsystem for Linux page (opens in a new tab)にアクセスし、インストールしてください、 Microsoft Store: Ubuntu (opens in a new tab)からUbuntuをダウンロードする。 他のLinuxディストリビューションも利用可能です。

インストールしたUbuntuを起動すると、Bashシェルが待っている。以下のコマンドを実行してASDFをインストールしてください。

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.11.3

結果が出ました: asdfをgitでインストールする

これが終わったら、~/.bashrcファイルの一番下に以下の2行を追加する。これがシェルでASDFを有効にする手順です。

. "$HOME/.asdf/asdf.sh"
. "$HOME/.asdf/completions/asdf.bash" .

Vimエディターを使って追加した画面: asdfのbash設定を追加

Ubuntuを再起動して、ASDFのバージョンを確認する。

Windowsのasdfバージョンをチェックする

5. ASDFの使い方 [#5]

NodeJSプラグインをインストールし、最新バージョンにアップグレードしてASDFの使い方を見てみましょう。 MacでもWindowsでも同じように動くので、Macでやってみよう。

asdfプラグインはGithubで管理されている、 asdf-vm/asdf-plugins repo (opens in a new tab)にインストール可能なプラグインの一覧が一目でわかる。

nodejsプラグインをインストールするコマンドを以下に示す。

asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git

実行結果: asdfノードバージョン

プラグインをインストールすると、ダウンロード可能なすべてのnodejsのリストが表示される。 最新のものをインストールしてください。インストールするには、asdf install [plugin_name] [version_name] を実行する。インストール後はこのようになる。

最新バージョンのasdf nodejsのインストール

インストールしたバージョンを現在のシェルで使ってみよう。

asdfシェルnodejsの結果

asdfのコマンドによって、カレントディレクトリやオペレーティングシステム全体で利用できるようにすることもできる。

6. まとめ

ここまで、各OSにasdfをインストールする方法と、使い方の簡単なウォークスルーを見てきた。より詳細なウォークスルーについては、各言語の開発環境のセットアップをカバーする記事をまた書くつもりだ。

個人的に、私は開発ツールにとても興味があり、これまで使ってきたすべての言語の人気のあるリリース・マネージャーを試してきたと思う。 私は通常、画一的なツールを信用しないのですが、ここしばらくASDFを何の問題もなく使っています。 マルチプラットフォーム、マルチ言語での開発を定期的に行っている人に強くお勧めします。

copyright for asdf: python、java、nodeを一元管理する方法

© 2023 All rights reserved.