asdfとは何か? バージョン管理に必要な機能を簡単に提供するツール

スポンサーリンク
複数バージョンの管理 ノウハウ
複数バージョンの管理
この記事は約7分で読めます。
よっしー
よっしー

こんちには。よっしーです(^^)

今日は、「asdf」というバージョン管理ツールを紹介します。

みなさんは、プログラミング言語をインストールするときに複数バージョンをインストールして使用しないといけないといった状況になったことはないでしょうか。

例えば、Java 8で開発されたアプリケーションとJava 11で開発されたアプリケーションの開発運用をするとなった場合、それぞれのバージョンをインストールし、必要に応じて切り替える必要があります。

Javaのバージョンを切り替える方法の一つにJAHA_HOMEという環境変数を変更して対応することがあります。この方法だと必要に応じてバージョンに書き換えて、環境変数を反映して、バージョンが変わっていることを確認する、といった一連の作業をする必要があり、切り替える頻度が多くなるほど、手間に感じてしまい、開発体験が非常にわるくなります。

スポンサーリンク

Javaの複数バージョン管理

この他にも、Javaの複数バージョン管理をするときには下記のような問題が起こりえます。

Javaバージョンの切り替えに失敗する
Javaの複数バージョンを管理する場合、環境変数を設定したり、PATHを設定したりする必要があります。しかし、これらの設定を間違えると、Javaバージョンを切り替えることができない場合があります。たとえば、複数のJavaバージョンをインストールしているにもかかわらず、常に同じバージョンが使用されているという問題が発生する可能性があります。

バージョンの競合が発生する
複数のJavaバージョンを管理する場合、複数のバージョンが同じ環境で共存することがあります。しかし、バージョンの競合が発生することがあり、それぞれのバージョンで必要なライブラリが正しく読み込まれない場合があります。この場合、プログラムの実行時にエラーが発生する可能性があります。

バージョンアップの管理が面倒
Javaのバージョンアップが頻繁に行われるため、複数のJavaバージョンを管理する場合、定期的にバージョンアップを行う必要があります。しかし、手動でバージョンアップを行う場合、手間がかかるだけでなく、うまくいかない可能性もあります。また、複数のJavaバージョンを管理することで、どのバージョンが必要なのかを把握することが困難になる場合があります。

asdfとは

そこで登場するのが、asdf というバージョン管理ツールです。このツールは、複数のプログラミング言語やツールのバージョン管理を行うためのツールで、以下のような場合に効果を発揮します。

複数の開発プロジェクトに参加している場合
複数の開発プロジェクトに参加している場合、それぞれのプロジェクトで使用する言語やツールのバージョンが異なることがあります。そのため、それぞれのプロジェクトで必要なバージョンを手動で切り替える必要があります。asdf ツールを使うことで、開発プロジェクトごとに異なるバージョンを簡単に切り替えることができます。

複数のバージョンを使い分ける必要がある場合
プログラミング言語やツールのバージョンがアップデートされると、新しい機能や改善点が追加されることがあります。しかし、それぞれのバージョンで互換性のない変更がある場合もあります。そのため、古いバージョンのまま開発を続ける必要がある場合があります。asdf ツールを使うことで、複数のバージョンを同時に管理することができます。

環境構築を簡略化したい場合
複数のプログラミング言語やツールを使用する場合、それぞれの環境を構築する必要があります。しかし、手動で行うと手間がかかります。asdf ツールを使うことで、一度インストールするだけで、必要な言語やツールのバージョンを簡単に管理することができます。

asdf の公式サイは下記になります。

asdfのインストール方法

ここでは、asdfのインストール方法をご紹介します。

自身の環境が、Macでbrewとzshを使用していますので、インストール方法はそれを前提に書いています。その他の方は、ご使用の環境に合わせて、下記のサイトを参考にインストール手順をご確認頂ければと思います。

asdf の動作に必要なツールをインストール

brew install coreutils curl git

asdf をダウンロード

brew install asdf

asdf のインストール

echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc

asdf の動作確認

asdf --version

asdfを使用したJavaのインストール方法

ここでは、asdf を利用してJavaをインストールする方法についてご紹介します。

asdf でプログラミング言語をインストールする場合、各プログラミング言語に対応したプラグインと呼ばれるものを追加して、各バージョンをインストールしていきます。

プラグインは、各プログラミング言語またはツールのバージョンをサポートするための、いくつかの実行可能スクリプトを備えたgitリポジトリに。

asdfで管理されていない言語やツールがあれば、このプラグインを作成して、管理対象にすることが可能になります。

プラグインの確認

それでは、自身が管理したいプラグインがあるか調べて見ましょう。今回はJavaなので、Javaで抽出しました。

asdf plugin-list-all | grep java

下記の結果が表示されると思います。

java                         https://github.com/halcyon/asdf-java.git

プラグインの追加

プラグインの存在が確認できたら、プラグインを追加します。

asdf plugin-add java

特定のバージョンをインストール

下記のコマンドでインストール可能なJavaのバージョンを確認します。

asdf list-all java

確認できたらインストールします。今回は、openjdk-19.0.2を指定していますが、ご自身の環境に合わせて修正してください。

asdf install java openjdk-19.0.2

このままだと、まだインストールしたjavaを使用できる状態になっていないので、下記のコマンドで使用できるようにします。

asdf local java openjdk-19.0.2

環境変数の設定を追加します。一度追加すれば大丈夫なので、すでに追加されている場合は、追加する必要はありません。

echo -e "\n. ~/.asdf/plugins/java/set-java-home.zsh" >> ${ZDOTDIR:-~}/.zshrc

環境変数を反映させます。

source ${ZDOTDIR:-~}/.zshrc

これで、インストールしたJavaが使用できるようになっていると思いますので、下記のコマンドでバージョンを確認します。

java -version

また現状だと、javaコマンドは、今いるディレクト配下でしか使用できないので、ディレクトリを移動すると javaコマンドがエラーになると思います。

なので、お使いのPCでどのディレクトリでもjavaコマンドを使用したいときは、下記のコマンドを実行します。

asdf global java openjdk-19.0.2

複数のバージョン管理

アプリケーションごとにバージョンを管理する場合は、下記のコマンドのように対象の各アプリケーションのディレクトリで asdf local java xxx コマンドを実行します。

cd アプリケーションAのディレクトリ
asdf local java openjdk-19.0.2

cd アプリケーションBのディレクトリ
asdf local java openjdk-17.0.2

これで、各アプリケーションで違うバージョンを指定して、動作させることができます。

おわりに

いかがだったでしょうか。今回は、asdf を使用した複数バージョン管理についてご紹介しました。

asdf を使いだして、気軽に特定のバージョンをインストールできるようになったので、複数バージョンに悩まされていた方は使用してみることをおすすめします。

よっしー
よっしー

またあしたお会いしましょう(^^)

コメント

タイトルとURLをコピーしました