Pythonだけじゃない!conda で言語横断・GPU対応の環境を秒速で切り替える

タグ condaパッケージ管理Python環境構築GPU対応conda-forgeenvironment.ymlデータサイエンスBiocondacolumnコラムlinuxLinuxwindowsWindowsmacosmacOSGitHubオープンソース
🚀 今すぐ試せます! デモスクリプトをダウンロードして、解凍後にターミナルで bash ファイル名.sh を実行してください(中身を一度確認してから実行すると安心です)。 (macOS / Linux 環境が必要)

Pythonだけじゃない!conda で言語横断・GPU対応の環境を秒速で切り替える

ひとことでいうと

conda(コンダ)は、Python をはじめ R・C ライブラリなど言語を問わずパッケージを管理し、プロジェクトごとに完全に独立した「作業環境」をつくれるツールです。Linux・macOS・Windows のすべてで動き、無料で使えるオープンソース(誰でも中身を見て改良できるソフト)として公開されています。データサイエンスや機械学習の現場で特に広く使われており、Miniforge や Anaconda という配布パッケージに同梱されているため、多くの開発者に親しまれています。「自分のパソコンでは動くのに、別のパソコンでは動かない」という問題をまるごと解決してくれる、環境管理の頼もしい相棒です。


こんな人におすすめ

1. データサイエンティスト・機械学習エンジニア 複数のプロジェクトで Python のバージョンが違ったり、GPU(画像処理チップ)対応のライブラリを使い分けたりする方に最適です。conda create --name ml-project pytorch cudatoolkit のように、GPU 依存パッケージも含めて環境をひとまとめに管理できます。CUDA(エヌビディア製 GPU を使うための仕組み)のバージョン衝突も回避しやすくなります。

2. 研究者・科学技術計算ユーザー R パッケージや Fortran 製ライブラリなど Python 以外の依存を含むワークフローを再現可能な形で管理したい方に向いています。バイオインフォマティクス(生物情報学)や気象シミュレーションの分野では、conda-forge・Bioconda という専門チャンネルが強力なサポートを提供しており、conda install -c bioconda samtools bwa のように C 製ツールもワンコマンドで導入できます。

3. チーム開発者・DevOps エンジニア conda env export > environment.yml で環境の定義をファイルに書き出し、チームメンバーや CI(継続的インテグレーション:自動テストの仕組み)環境で conda env create -f environment.yml を実行するだけで、まったく同じ環境を再現できます。OS をまたいだ環境共有にも活用でき、「自分の PC では動く」問題を大幅に減らせます。


インストール・使い方

conda 自体は、pip(Python の標準パッケージ管理ツール)ではなく、専用の軽量インストーラーから導入するのが公式の推奨です。以下の手順を上から順に進めてみてください。

初めての方へ: 「ターミナル」とは、文字を入力してパソコンに命令を送る画面のことです。Mac なら「ターミナル.app」、Windows なら「PowerShell」や「コマンドプロンプト」がそれにあたります。コマンドはすべてコピー&ペーストで貼り付けて実行できます。

Step 1: Miniforge(推奨)をダウンロードしてインストールする

# Linux の場合(Miniforge3)
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh -b -p $HOME/miniforge3

Miniforge は conda を使い始めるうえで最も軽量でおすすめのスターターパックです。Windows・macOS の場合は公式サイトから GUI インストーラーをダウンロードできます。

Step 2: シェルを初期化して conda コマンドを有効化する

$HOME/miniforge3/bin/conda init bash   # zsh や fish にも対応しています
source ~/.bashrc
conda --version   # バージョン番号が表示されれば成功です

「シェル」とはターミナル内で命令を解釈するプログラムのことです。conda init を実行することで、ターミナルを開くたびに自動で conda が使えるようになります。

Step 3: 新しい環境を作成して有効化する

conda create --name myenv python=3.11 -y
conda activate myenv

--name myenv は環境に付ける名前です。好きな名前をつけられます。conda activate を実行すると、ターミナルの表示が (myenv) に変わり、その環境の中で作業していることが分かります。

Step 4: 必要なパッケージをインストールする

conda install numpy pandas scikit-learn -y
# conda-forge チャンネルを使う場合
conda install -c conda-forge jupyterlab -y

「パッケージ」とは、ある機能をまとめて提供する部品のようなものです。-c conda-forge は「conda-forge というパッケージ配布元から取ってくる」という意味です。

Step 5: 環境の定義をファイルに書き出して再現できるようにする

conda env export > environment.yml      # 環境定義をファイルに出力
conda env create -f environment.yml     # 別のマシンや CI で環境を再現

environment.yml というファイルひとつを共有するだけで、まったく同じ環境をどこでも再現できます。チーム開発や論文の再現実験に非常に便利です。


動かしてみた

今回は conda のソースコードリポジトリ(ソースコードの置き場所)を展開して構成ファイルを確認しました。リポジトリの中には開発用起動スクリプト(dev/startdev/start.bat)が Linux・Windows 向けに用意されており、マルチプラットフォーム対応の開発体制がしっかり整っていることが確認できました。また、durations/Linux.jsondurations/macOS.jsondurations/Windows.json という3つの OS 向けテスト所要時間ベンチマークや、docs/environment.yml という開発環境定義ファイルも含まれており、conda 自身の開発も conda の仕組みで管理されているのが興味深いです。

インストール後の基本動作確認は以下のコマンドで行えます。

conda --version
# conda 24.x.x のようにバージョンが表示されます

conda info
# アクティブな環境・チャンネル URL・プラットフォーム情報が出力されます

conda info を実行すると、現在どの環境が有効か、どのチャンネル(パッケージ配布元)が設定されているか、どの OS で動いているかなどがまとめて表示されます。インストール直後の確認として最適です。

なお、conda をソースコードから pip でインストールする場合は、hatchling と setuptools-scm(git のタグからバージョン番号を自動生成するビルドツール)が必要なため、通常のユーザーは Miniforge・Miniconda 経由のインストールが推奨です。


ブラウザで試す

conda の主要コマンドをインタラクティブに確認できる Gradio デモをブラウザ上で試すこともできます。環境名・Python バージョン・パッケージ名を入力するとコマンドが自動生成されるので、ターミナルにコピーしてすぐに使えます。インストールなしで雰囲気をつかみたい方の最初の一歩として活用できます。


実践のコツ:はじめの一歩でつまずかないために

conda を使い始めるときに知っておくと便利なポイントをまとめます。最初は覚えるコマンドを絞って、少しずつ慣れていきましょう。

  • base 環境には直接インストールしない: conda をインストールした直後に使える base 環境はなるべく触らず、プロジェクトごとに新しい環境を作る習慣をつけると安全です。
  • まずは conda env list で現在の環境を確認: 今どんな環境があるかをいつでも確認できます。どこに何があるか把握することが大切です。
  • よく使うコマンドをメモしておく: conda createconda activateconda installconda deactivate の4つを覚えるだけで日常の9割はカバーできます。
  • ディスクが増えてきたら conda clean --all -y: conda はキャッシュ(一時保存ファイル)を蓄積するので、定期的に掃除するとディスクを節約できます。
  • パッケージが見つからない場合は -c conda-forge を試す: 公式チャンネルにないパッケージでも、conda-forge にはほぼ揃っています。
  • チームで使うときは environment.yml を git 管理する: リポジトリに environment.yml を含めておくと、新メンバーがすぐに環境を再現できます。

以下に日常でよく使うコマンドをまとめました。

conda env list                        # 環境一覧を表示
conda create -n proj python=3.10 -y  # 環境を新規作成
conda activate proj                  # 環境を有効化
conda deactivate                     # 環境を無効化
conda search tensorflow              # パッケージを検索
conda install numpy scipy -y         # パッケージをインストール
conda env remove -n proj             # 不要な環境を削除
conda clean --all -y                 # キャッシュを削除
conda update --name base conda -y    # conda 自体を更新

用語とポイント解説

環境(environment) conda が管理する「独立した作業スペース」のことです。かんたんに言うと、プロジェクトごとに用意した専用の道具箱のようなものです。環境を切り替えれば、インストールされているパッケージやPythonのバージョンがまるごと変わります。conda activate 環境名 で切り替えます。

チャンネル(channel) パッケージを配布している場所のことです。かんたんに言うと、アプリのダウンロードができるアプリストアのようなものです。defaults(公式)・conda-forge(コミュニティ主体)・bioconda(バイオ系専門)など複数あり、用途に応じて使い分けます。

base 環境 conda 自体をインストールしたときに最初から存在するデフォルトの環境です。かんたんに言うと、conda の「本拠地」にあたる環境です。ここに直接パッケージを追加しすぎると後で管理が煩雑になるため、プロジェクト専用の環境を別に作るのがおすすめです。

CalVer(カレンダーバージョニング) YY.MM.MICRO という形式でバージョン番号を管理する方式です。かんたんに言うと、バージョン番号がそのままリリースの年月を表しています。たとえば 24.11.0 なら「2024年11月にリリースされた最初の版」と読めます。

ハードリンク ファイルの実体を複数の場所から共有参照する仕組みです。かんたんに言うと、同じファイルをコピーせずに「別名で参照する」技術です。conda はこれを活用することで、複数の環境に同じパッケージをインストールしても、ディスク使用量が無駄に増えないようになっています。

environment.yml conda 環境の構成を記録したテキストファイルです。かんたんに言うと、「この環境には何が入っているか」を書いたメモ書きです。このファイルを共有するだけで、別のパソコンや CI 環境でもまったく同じ環境を再現できます。

conda-forge 世界中のボランティアが運営するパッケージ配布チャンネルです。かんたんに言うと、公式ストアよりも品揃えが豊富な有志運営のマーケットプレイスです。最新バージョンへの対応も早く、多くのユーザーが積極的に活用しています。

setuptools-scm git(バージョン管理ツール)のタグからバージョン番号を自動的に生成するビルドツールです。かんたんに言うと、「リリースのたびに手動でバージョンを書き換えなくてよいようにする自動化ツール」です。conda のソースビルド時に使われており、git 管理下でないフォルダでは正しく動作しません。

バイナリ配布 ソースコードをコンパイル(機械語に変換)済みの状態でパッケージを配布する方式です。かんたんに言うと、「組み立て済みの状態で届けてくれるので、受け取ったその場ですぐ使える」イメージです。pip と異なりインストール時のコンパイルが不要なため、C 拡張を含む科学技術ライブラリも失敗なくインストールしやすくなっています。


活用例

  • Jupyter Lab と特定バージョン Python の共存: base 環境を汚染せず、プロジェクト固有バージョンの JupyterLab や ipykernel を独立環境に閉じ込めて管理できます。VS Code の Python 拡張から直接カーネルとして選択でき、チーム全員が同一の environment.yml から環境を再現するためノートブックの実行結果が一致します。

  • CUDA バージョン別の深層学習環境を1台のマシンで両立: PyTorch(CUDA 11.8 対応)と TensorFlow(CUDA 12.x 対応)を別環境に隔離し、GPU カード1枚で両フレームワークを競合なく利用できます。conda は CUDA ランタイム自体もパッケージとして管理するため、システムへの CUDA 別途インストールが不要なケースもあります。

  • バイオインフォマティクスパイプラインの完全再現: conda install -c bioconda samtools bwa snakemake -y のように C 製・Haskell 製ツールも conda で一括インストールし、Snakemake ワークフローを environment.yml と組み合わせることで、論文に添付・配布できる完全再現可能な実験環境を構築できます。

  • チーム開発での「動かない」問題の撲滅: リポジトリに environment.yml を含めておくだけで、新しいメンバーが conda env create -f environment.yml を実行すれば即座に同一環境で開発を始められます。OS の違い(Mac と Linux 混在など)を超えた環境共有にも対応しています。

  • 古いプロジェクトのレガシー環境を安全に保存: python=3.7 など古いバージョンが必要なプロジェクトも、独立した環境として保存しておけば、現在のメイン環境に影響を与えず維持できます。数年前のコードを動かす必要が生じたときにも安心です。

  • R と Python を同じ環境で使うデータ分析: conda は R パッケージも管理できるため、conda install r-base r-tidyverse のように R 環境を構築し、Python の rpy2 などと組み合わせた R・Python 混在のデータ分析パイプラインを一元管理できます。


conda の最大の強みは「再現性」と「分離性」の両立です。機械学習・科学技術計算・バイオインフォマティクスなど依存関係が複雑な分野でこそ、その真価を発揮します。ぜひ機械学習プロジェクトの GPU 環境管理や、チーム開発での environment.yml を使った環境共有などに活用してみてはいかがでしょうか。