この記事では Bundler (Ruby) や npm (JS)、Cargo (Rust)、vgo (Golang) 等のパッケージマネージャの依存関係解決における最大バージョン選択 (Maximal Version Selection) と最小バージョン選択 (Minimal Version Selection) [1] の違いについて説明します。また、それぞれの長所や短所、最大バージョン選択において現状発生している問題について書きます。 最大バージョン選択 (Maximal Version Selection) 最大バージョン選択は Bundler, npm 等をはじめとする多くのプログラミング言語のパッケージマネージャで採用されています。指定されたなかで最大の(=最新の)バージョンを使います。 例) v1.0 以上のバージョンが指定されていて現在の最新バージョンが v1.1 の場合、