👹

一歩先ゆくバージョン管理 asdfの活用法

2023/10/19に公開

asdfってなに?

asdfは、全ての言語やツールを一括で管理できる、シンプルなバージョン管理ツールです。
https://asdf-vm.com/

asdfがピッタリな人

  • 複数のプロジェクトを掛け持ちしている
  • フロントエンドからバックエンドまで幅広く開発する
  • 異なる技術スタックを頻繁に切り替える

なぜasdfが必要なのか?

従来、開発者は

  • nodenv(Node.js)
  • goenv(Go)
  • pyenv(Python)

など言語ごとのバージョン管理ツールに依存していました。

しかし 「asdf」 はこれらすべてを一箇所で一元管理し、スマートに解決してくれます😀

例)フルスタック開発のシームレスな管理

開発者として、フロントエンド(React)やバックエンド(Go)、さらにパッケージマネージャー(pnpm)を使い分ける場面は多いですよね。asdfなら、これらの環境切り替えをスムーズに、そして効率的に行えます。

asdfがサポートしている代表的なもの

  • nodejs
  • pnpm
  • go
  • postgres
  • python
  • redis
  • yarn
  • terraform
  • docker
  • jq

使い方

1. インストール方法

まずは、asdfをHomebrew経由でインストールします

$ brew install asdf

2. シェルへの組み込み

各シェルに応じた設定方法が公式ガイドにありますので、是非チェックしてみてください。

https://asdf-vm.com/guide/getting-started.html#_3-install-asdf

fish の場合

$ echo -e "\nsource "(brew --prefix asdf)"/libexec/asdf.fish" >> ~/.config/fish/config.fish

zsh の場合

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

bash の場合

$ echo -e "\n. $(brew --prefix asdf)/asdf.sh" >> ~/.bash_profile

3. 必要なプラグインのインストール

Goのセットアップ

# Goのプラグインを追加
$ asdf plugin-add golang https://github.com/kennyp/asdf-golang.git

# 利用可能な Go バージョンをチェック
$ asdf list-all golang

# Goの最新バージョンをインストール
$ asdf install golang latest

# グローバルに設定
$ asdf global golang latest

#現在設定されているgoのバージョンを確認
$ asdf current golang

Node.jsとpnpmのセットアップ

Node.jsも同様に簡単ですが、pnpmのインストールには少し工夫が必要です。
※ pnpmをインストールする際はnodejsの部分を書き換えてください

# Node.jsのプラグインを追加
$ asdf plugin-add nodejs

# Node.jsの最新バージョンをインストール
$ asdf install nodejs latest

# グローバルに設定
$ asdf global nodejs latest

#現在設定されているnodojsのバージョンを確認
$ asdf current nodejs

まとめ

今回はバージョン管理ツールのasdfについて記事を書きました 🖊
個人的に使っていてすごく便利だったので皆さんも是非試してみてください!!

補足

コマンド一覧

バージョンの一覧表示
$ asdf list-all <plugin_name>

プラグインの追加
$ asdf plugin-add <plugin_name>

プラグインの削除
$ asdf plugin-remove <plugin_name>

バージョン指定のインストール
$ asdf install <plugin_name> <version>

現在のバージョンの設定
$ asdf global <plugin_name> <version>
$ asdf local <plugin_name> <version> (特定のプロジェクト)

インストール済みのバージョン一覧表示
$ asdf list <plugin_name>

プラグインの更新
$ asdf plugin-update --all
$ asdf plugin-update <plugin_name>

asdf自体の更新
$ asdf update

Discussion