ソフトウェアはその説明文や依存関係の追加情報を同梱したパッケージと呼ばれる配布形態で各種リポジトリから提供されている。 ソフトウェアは通常、多くの外部ソフトウェア由来の要素を取入れた複合的な構成物であるため、相互依存関係を呈する. そのため、あるソフトウェアにおける一部の設計変更が他のソフトウェアに影響を及ぼす可能性がある. 換言すれば各ソフトウェアのバージョン間で互換性の問題が生じる場合があり、この問題を解決するために、パッケージ管理システムを利用する. パッケージ管理システムは、パッケージのインストール、更新、削除、バージョン管理、依存関係の解決などの機能を提供する.
UbuntuなどのDebian系LinuxやmacOSではそれぞれAPTやHomebrewというパッケージ管理システムを利用することで様々な種類のソフトウェアをインストールすることができる. しかしながら管理されているデータサイエンス関連パッケージ数は限られており、 バイオインフォマティクスを含むデータサイエンス環境を構築するためにはこの目的に特化したパッケージ管理システムであるCondaなどを併用する必要がある. Condaはパッケージ管理システムとしてパッケージとその依存プログラムのインストール・更新・バージョン間の調停などの役割を果たす. Condaは環境管理システムでもあり、導入したソフトウェアを相互干渉させることなく、管理・実行することができる. これらの機能はcondaプログラムに実装されており、AnacondaやMinicondaという無償かつオープンソースの配布物の中に梱包されている.
データ分析作業の多くは探索的過程を伴うため対話型のプログラム実行環境が利用しやすい. RやPythonなどのインタプリタ型言語は既定において対話型セッションを起動することができるものの、データ分析や科学計算の分野では機能拡張された対話型環境を新規導入することが一般的である. Project Jupyterは様々な言語の実行環境(カーネル)に接続可能な、データ分析や科学計算のための対話型環境を構築し、オープンソースソフトウェアとして提供することを目標としている. その成果産物であるJupyter NotebookやJupyterLabがウェブ基盤ノートブック形式の対話型環境を提供し、セルという区画ごとにプログラムコードを実行や再実行することができる. プログラムコードの他にもその実行結果やマークダウンによる説明文などを含めることができ、その全てを一つの文書に集約して表現することができる.
本章では以上で紹介したシステムの導入と利用の手順について示す.
Debian系LinuxではAdvanced Packaging Tool (APT)をパッケージ管理システムとして採用しており、既にOS配布物中に含まれているためインストール等の作業をすることなく利用することができる. APTシステムはaptという管理コマンドは介して操作するが、このコマンド実行には管理者権限が必要な場合があり、そのときはsudoコマンドの引数としてaptコマンドを指定して実行するとよい.
OSをインストール後、APTシステムを初回利用する際に、以下のようにAPT索引情報の更新とシステム全体の更新作業を実施することを推奨する.
$ sudo apt update # APT索引情報の更新 $ sudo apt upgrade # システム全体の更新
aptコマンドの代表的な使用例を以下に示す.
$ sudo apt install package # 指定したパッケージのインストール $ sudo apt remove package # 指定したパッケージのアンインストール $ apt search keyword # パッケージ情報のキーワード検索 $ apt show package # 指定したパッケージの詳細情報表示 $ apt list --installed # インストール済パッケージの一覧表示
macOSではパッケージ管理システムとしてHomebrewを利用する. x86_64専用端末にx86_64プログラム管理用のHomebrewをインストールするには以下のコマンドを実行する.
$ arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Homebrewシステムはbrewという管理コマンドを介して操作するが、その代表的な使用例を以下に示す.
$ brew update # Homebrewの更新 $ brew upgrade # パッケージ(=formulaやcask)の更新 $ brew install formula|cask # 指定したパッケージのインストール $ brew uninstall formula|cask # 指定したパッケージのアンインストール $ brew info formula|cask # 指定したパッケージの詳細情報表示 $ brew list # インストール済パッケージの一覧表示
Condaシステムの最小構成の配布物であるMinicondaの最新版を WEBページ経由または以下コマンドにより入手する.
$ curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh # WSL2 (=Linux)の方 $ curl https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh" # macOSの方
SHA256チェックサムを算出しダウンロードに伴うデータ欠損等がないことを確認する.
$ openssl sha256 Miniconda3-latest-Linux-x86_64.sh # WSL2 (=Linux)の方 $ openssl sha256 Miniconda3-latest-MacOSX-x86_64.sh # macOSの方
(上述リンク先から自分が入手したインストーラのハッシュ値を確認せよ.) SHA256(Miniconda3-latest-Linux-x86_64.sh)= 78f39f9bae971ec1ae7969f0516017f2413f17796670f7040725dd83fcff5689
インストールを実行する.
$ bash Miniconda3-latest-Linux-x86_64.sh # WSL2 (=Linux)の方. $ bash Miniconda3-latest-MacOSX-x86_64.sh # macOSの方. PATHが通っていない場合はbashを/bin/bashに変更する必要がある.
Condaはパッケージ及び環境管理システムである. Condaを利用するには、ソフトウェア・依存プログラム間でバージョンの相互干渉が生じないようにするため、目的の解析作業ごとにConda環境を準備する. Conda環境の実体は一つのディレクトリであり、その配下にソフトウェアの実行に必要となるソフトウェア群が置かれる. そのためPATH環境変数を変更することで、各プログラムの実行環境を切替えることができる.
以下に実例を示す. testという名でConda環境を作成し、slというソフトウェアを導入・実行してみる.
まずはconda createコマンドによりtest環境を作成後、conda info -eにより環境一覧を表示し、test環境が正常に作成できたかどうかを確認する. conda activateコマンドによりtest環境の中に入る.うまくいけばプロンプトの上に(test)と表示される.
$ conda create -n test $ conda info -e $ conda activate test
現状ではtest環境は空である. ここにslパッケージをインストールする. インストールコマンドはconda install [-c channelName] packageNameの書式である. channelとは入手元リポジトリのことであり、指定すべきchannelNameとpackageNameは Anaconda.orgのサイトから確認する.
$ conda install -c conda-forge sl
condaのホームディレクトリが~/miniconda3(=既定のまま)である場合、~/miniconda3/envs/test配下にパッケージ・依存プログラムファイルが配置される. 上記のconda activate testにより、test環境の実行バイナリを指すパス追加(PATH=~/miniconda3/envs/test/bin:$PATH)がなされる. そのためパス名を指定せずともコマンド名を指定するだけでslコマンドが実行できる.
$ sl # 暫しのご鑑賞....
conda deactivateコマンドによりtest環境から離れると、conda activateコマンドにより追加されたパスが取除かれる. slコマンドの実行を再度試みた場合にslコマンドはみつからないというエラーメッセージが返されるはずである.
$ conda deactivate $ sl
condaコマンドのその他の使い方については下表をご参照ください。
conda list | 現在環境のパッケージ一覧表示 |
conda install [-c チェネル名] パッケージ名 | 現在環境にパッケージを新規インストール |
conda info -e | 環境一覧表示 |
conda activate 環境名 | 指定環境に入る |
conda deactivate | 現在環境から離れる |
conda create -n 環境名 | 指定環境を新規作成 |
conda create -n 環境名 python=3.9 | 指定環境を新規作成 (python v3.9をインストール) |
conda create -n 環境A --clone 環境B | 環境Bをもとに環境Aを作成 |
conda env export > ENV.yaml | 現在環境内容をファイル「ENV.yaml」に出力 |
conda env create --file ENV.yaml | ファイル「ENV.yaml」をもとに環境作成 |
conda remove -n 環境名 | 指定環境を削除 |
conda clean --all | 使用されていないパッケージ・キャッシュの削除 |
conda config --add channels チャネル名 | 指定チェネルの追加 (優先順に一番高い) |
conda config --append channels チャネル名 | 指定チェネルの追加 |
conda config --remove channels チャネル名 | 指定チェネルの削除 |
conda config --get channels | チェネル一覧表示 |
実際にjupyter labが起動できるかを確認する.
$ jupyter lab # 自動的にfirefox上にjupyter labが起動すればOK.
終了の仕方はまずブラウザーを閉じる. その後コマンドライン上でCtrl-Cを打鍵すると、shutdownするか訊かれるのでyと打鍵しENTERする.
jupyter labの使い方については下表をご参照ください。
ESC | コマンドモードにする |
j | 下のセルを選択する |
k | 上のセルを選択する |
a | 上にセルを挿入する |
b | 下にセルを挿入する |
m | セルをマークダウン化する |
y | セルをコード化する |
Ctrl-Enter | 選択したセルを実行して下のセルに移る |
Enter | 選択したセルを実行する |
x | セルを切取る |
c | セルをコピーする |
v | 下にセルをペーストする |
d | 選択したセルを削除する |
Ctrl-s | 保存する |
z | undo |
Shift-z | redo |