
Condaは2012年にContinuum Analytics(現Anaconda Inc.)がリリースしたパッケージマネージャ兼環境管理ツールで、Pythonに限らずC/C++/R/Fortran/Juliaなどのコンパイル済みバイナリを横断的に扱える点でpipと一線を画す。科学技術計算や機械学習の現場で広く採用され、conda-forgeコミュニティチャネルが大きなエコシステムを形成している。本稿ではCondaの設計、リゾルバの歴史、商用ライセンス問題、運用上の選択肢を解説する。
この記事の目次
- Condaがpipと異なる理由
- 環境管理コマンドの実用
- リゾルバの歴史とMamba登場
- 商用ライセンスと選択肢
- まとめ
Condaがpipと異なる理由

pipはPyPIから取得したwheelをsite-packagesに置くだけで、glibcやMKLといったシステム側のCライブラリには関与しない。これに対しCondaは言語に依存せず、CMakeでビルドされたバイナリ群を一括して管理する。たとえばCondaのnumpyはMKLリンク済みのバイナリを取り寄せ、blas=*=mkl のように仮想パッケージで実装を切り替える。この仕組みのおかげで、Fortranコンパイラを持たない環境でも数値計算ライブラリが即座に動く。
Condaが対象とするチャネルにはAnaconda公式の「defaults」、コミュニティ運営の「conda-forge」、機械学習用の「pytorch」「nvidia」などがある。conda-forgeは2015年頃にGitHub上のCIで自動ビルドする仕組みとともに発足し、現在では2万を超えるパッケージを抱える。Anaconda Inc.が運営するdefaultsより更新が速く、新しい依存組み合わせもconda-forgeで先行公開される傾向がある。そのため近年はmambaforgeやminiforgeのようにconda-forgeを唯一のチャネルとする派生ディストリビューションが普及している。
環境管理コマンドの実用

Condaの環境は$ANACONDA_HOME/envs/配下に独立したPrefixとして作成され、PATHが書き換わることで活性化する仕組みだ。venvと異なり、Python本体やlibstdc++まで含めて切り替わるため、CUDAのバージョン違いを並走させるような用途で力を発揮する。conda activate dev のように名前で切り替えられ、conda env list で一覧を確認できる。yaml形式のenvironment.ymlにチャネルとパッケージを記述しておけば、別マシンで同一環境を再現できる。
再現性を厳密に求める場面では、conda list --explicit > spec.txt を用いてURL込みの完全固定ファイルを生成する方法がある。このspecファイルはconda create --file spec.txt で読み込まれ、解決処理をスキップして直接ダウンロードする。ただし、Macbookで生成したspecをLinuxで使うことはできない点(OS別ビルド)に注意が必要だ。PoetryやpipのrequirementsとCondaのenvironment.ymlは混在して扱うこともでき、ymlのpip:節にpipの依存を書く運用が定着している。
リゾルバの歴史とMamba登場

Condaは初期から依存解決をSAT問題として扱っていたが、純Python実装のためパッケージ数が増えるにつれ解決時間が数分から数十分に膨らみ、利用者の不満が高まっていた。2019年にQuantStackがMamba(後述)を公開し、C++のlibsolv(openSUSEのZypperで使われる解決器)を使うことで100倍以上の高速化を達成した。条件付きで採用が広がり、conda 22.11以降は--solver libmambaで切り替えられるようになった。
2023年5月にconda 23.5でlibmambaソルバが標準化され、長年のパフォーマンス問題に終止符が打たれた。技術的にはconda側のmatchspec表現をlibsolvのRPM/DEB形式に変換するアダプタを介して呼び出している。Mambaを直接使うか、condaのlibmambaソルバを使うかは好みの問題だが、後者ならcondaコマンドそのままで恩恵を受けられるため、既存スクリプトを書き換えたくないチームにとって移行コストが低い。
商用ライセンスと選択肢

2020年4月にAnaconda Inc.は商用利用の規約を変更し、従業員200名超の組織でのdefaultsチャネル使用を有償化した。この変更は当時十分に周知されず、2024年に同社が改めて遵守を求める通知を出したことで業界に衝撃を与えた。実務上は、Miniforge/MambaforgeへMigrationし、defaultsチャネルを使わない構成にすることで回避できる。なおconda(ツール本体)やconda-forge(コミュニティチャネル)は引き続きBSDライセンスで無償である。
選択肢としては、最小構成のMinicondaやMiniforge、Mamba同梱のMambaforgeが現代的だ。GUIやNavigatorを使わないCI環境では特にMiniforgeが好まれ、Dockerイメージのサイズも数百MB単位で抑えられる。商用契約が必要な組織は、Anaconda Business以上のサブスクリプションでdefaultsチャネルやAnaconda Cloudを利用できる。ライセンスとチャネルを正しく分離して理解することが、Condaを安心して使い続けるための前提となる。
まとめ
Condaは2012年の登場以来、Pythonの枠を超えた科学技術スタックの基盤として進化してきた。libmambaソルバ採用による性能改善とMiniforge系の普及で、もはや遅くて重いツールではない。ライセンス上の制約だけは慎重に扱い、用途に応じてpipと共存させながら使いこなすのが現実的だ。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント