2.3. 開発環境#
OS を決めると、次にデータを解析するための環境を構築します。データ解析を行うためのさまざまなソフトウェアやツールは、OS に直接インストールすることもできますし、仮想環境(virtual environment)と呼ばれる、見かけ上独立した環境にインストールすることもできます。
ソフトウェアを OS に直接インストールすると、動作が安定しやすいというメリットがあります。しかし、インストールやアンインストールを繰り返したり、ソフトウェアを更新したりするうちに、問題が生じることがあります。具体的には、ソフトウェア同士の依存関係が壊れたり、OS 本体の設定が意図せず変更されたりする場合があります。その結果、これまで動作していたソフトウェアが突然動かなくなることもあります。最悪の場合、OS の再インストールが必要になるリスクもあります。
一方、仮想環境にソフトウェアをインストールする場合、OS 本体とは独立した環境でソフトウェアが動作するため、OS 本体に影響を与えずにソフトウェアを管理できます。例えば、あるソフトウェアをバージョンアップした結果、他のソフトウェアが動作しなくなった場合でも、仮想環境を削除して新たに作り直すだけで、簡単に元の状態に戻すことができます。また、複数のプロジェクトで異なるバージョンのソフトウェアを利用する場合でも、プロジェクトごとに独立した仮想環境を作成することで、互いに影響を与えずに運用できるというメリットがあります。
仮想環境を作成する方法は、目的に応じていくつかの種類に分けられます。最も包括的な方法は、ある OS の上で別の OS を丸ごと動かす 仮想マシン(virtual machine)です。例えば、Windows 上で Ubuntu を動かしたり、macOS 上で Windows を動かしたりすることができます。ただし、仮想マシンはメモリや CPU といった計算資源を多く消費し、設定や管理も比較的複雑です。そのため、日常的な解析ツールの管理用途としては、やや扱いにくい側面があります。
より軽量で、現在主流となっているのが、conda や Docker に代表されるアプリケーションレベルの仮想化です。conda は、1 つの仮想環境の中に複数の解析ツールをまとめてインストールし、同じ環境で利用できる点に強みがあります。バイオインフォマティクス分野では、解析環境構築の標準的な選択肢として広く利用されています。一方、Docker は、特定のツールが動作する環境をコンテナとして丸ごとパッケージ化する技術です。Docker では 1 つのコンテナに 1 つの役割を持たせる運用が一般的で、複数のコンテナを組み合わせて複雑な解析フローを構築する場面で力を発揮します。
さらに、特定のプログラミング言語に特化した仮想環境も存在します。Python では venv、R では renv が代表的で、これらは主にライブラリやパッケージのバージョンをプロジェクトごとに固定する目的で利用されます。
初心者の段階では、これらすべてを厳密に使い分ける必要はありません。 まずは汎用性が高く、多くの解析に対応できる conda を使いこなせるようになることが、上達への近道です。とはいえ、conda でも「昨日まで動いてた」という怪奇現象は頻発するので、使い方より先に精神を鍛える必要があるかもしれません。