投稿

ラベル(asdf)が付いた投稿を表示しています

asdfはなぜ動くのか。asdfの詳細とShimによるバージョン切り替えの仕組みを読み解く。

イメージ
この記事ではマルチランタイムバージョン管理ツール「asdf」の仕組みを読み解いていきます。 私自身あまり理解していない状態から徐々に読み解いていきますので、途中で理解が間違っている事があるかと思います。 その点はご容赦ください。 なお、asdfのインストールと設定については以下で解説しています。 まずは触れてみたいという方は以下をご覧ください。 https://blog.yukiapps.com/2025/03/asdf-mac.html それでは参りましょう。 asdfの構成 構成は以下のようになります。 Go言語で書かれている asdfコアとasdfプラグインによる構成 プラグインによってShimが作成される 実行ファイルの代わりにShimが実行される asdfの公式による概要はこちら: https://asdf-vm.com/ja-jp/guide/introduction.html ソースコードはこちら: https://github.com/asdf-vm/asdf 図にするとこんな感じでしょうか。 「asdfコア」「プラグイン」「Shim」が重要なキーワードになりそうです。 まずは「Shim」とは何かについて解説した後に、一つずつ深掘りしていきます。 Shimとは何か 「shim(シム)」とは英語で、クサビ上の木材など部品の隙間や割れ目を埋める物の事です。 プログラミングの分野においては、プログラムの間に挟まる薄いレイヤー(ラッパーようなもの)を指します。 asdfにおいては、実行ファイルの前にShimを挟むことでバージョンを管理しています。 Shimとはラッパーのようなもの と覚えておいて良いかと思います。 Wikipediaを参考: https://en.wikipedia.org/wiki/Shim_(computing) Shimの概念を理解したところで、asdfの各コンポーネントについて深堀りしていきます。 asdfコアの主な役割 asdfコアの主な役割は以下のようになります。 設定ファイル(.tool-versions)読み取る プラグインをインストールする .tool-versionsとプラグインを参照してShimを生成 インストール済みの実行ファイルを元にShimを生成 asdfコアの役割として、プラグインを管理するだけでなくShimの生...

asdf(アズディフ)の概要 + Macにインストールする手順と設定【バージョン管理ツール】

asdf(アズディフ)をMacにインストールする手順です。 asdfの簡単な説明もしていきます。 公式サイト 公式サイト: https://asdf-vm.com/ 公式インストール手順(英語): https://asdf-vm.com/guide/getting-started.html 公式インストール手順(日本語): https://asdf-vm.com/ja-jp/guide/getting-started.html 続いて公式を読むのが面倒な方のために、箇条書きで簡単に要点をまとめました。 asdfの概要 複数のプログラミング言語のバージョンをまとめて管理する 仮想環境不要で、ローカル環境を汚さない バージョンは一つのファイル(.tool-versions)で管理される 設定ファイルをGitで共有すれば、チーム全体で環境を統一可能 まとめると、 一つの設定ファイルでツールのバージョンを手軽に管理できる! です。 asdfはこんな人にオススメ システム環境を汚さずにバージョン管理したい Dockerのような仮想環境は重くて面倒 チームで同じ環境を統一したい という方にオススメです。 それではインストールしていきます。 asdfのインストール(Homebrewを使う) インストールは以下の手順で行います。 Homebrewでインストール シェルの設定 インストール方法はいくつかありますが、MacならHomebrewを使うのが簡単です。 Homebrewがインストールされていない場合は以下のHomebrew公式を参照してインストールしてください。 Homebrew :  https://brew.sh/ja/ では手順を追っていきます。 1.Homebrewでインストール 以下のコマンドでインストールします。 brew install asdf 続いてシェルの設定をします。 2.シェルの設定 以下のコマンドで自身の環境のシェルを確認します。 echo $SHELL `/bin/zsh`と表示されればZSH、`/bin/bash`と表示されればBashとなります。 ZSHの場合、`~/.zshrc`、Bashの場合は`~/.bash_profile`以下を追記します。 export PATH="${ASDF_DATA_DIR:-$HOME/....