LINE公式アカウントから最新記事の情報を受け取ろう!
※ この記事は#26 データ解析作業に革命がおきている件①の続きです。まだお読みでない方はそちらからお願いします。
前回に引き続き、「Dockerの普及により、データ解析作業に革命が起きている」ということを伝えていければと思います。今回はDockerがどんなものなのか、どのように使うのか、これによりどんなメリットが生まれたのかを中心にお話していきます。 内容としてはかなり難しいものになりますが、なんとなく伝われば御の字という意識で書いていきます。
CONTENTS
端的に言うと、Dockerは「効率的にコンテナ型仮想環境を提供するソフトウェア」です。
前回の記事で説明したVM型の仮想環境は、PCの中にPCを丸々入れてしまうというものであったため、無駄が多かったのですが、コンテナ型仮想環境を提供するDockerでは、ホストOSに足りていない、必要な機能だけを外部から取り入れ、もとから持っている機能とあわせて一つの仮想環境を作り出すため、とても効率的です。
この仕組みをユニオンファイルシステムといいますが、まぁ横文字ばっかりでわかりませんね。次章で、身近なものに例えながら、概念を説明してみます。
筆者の趣味は料理です。毎日家族の料理を作り、魚はまるまる買ってきて捌きます。さて、この魚を捌いてお刺身にしていくときに必要な物は何でしょうか。簡単に列挙してみます。
こんなところでしょうか。
これを自宅ではなく、野外、すなわちキャンプでやることを想定します。
VM型仮想環境の概念では、家のキッチンを丸々模倣したモデルルームを作り、それをキャンプ場に運び込んで、そこで調理をします。
さて、さらに大変なことにピザを作れと言われました。この場合、以下の道具が必要です。
VM型仮想環境の概念では、このピザ用のモデルルームを別に用意し、それをキャンプ場に運び込むことになります。・・・ありえません。
水道はキャンプ場に備え付けてありますし、包丁やまな板は1つ目のモデルルームとダブっています。VM型仮想環境にはこのような非効率な要素があります。
前章の例では、基本的なインフラである水道を、キャンプ場に持ち込むという意味不明なことをしました。ただ、水道なんてキャンプ場のものを使えばよいのです。故にモデルルームなんぞ作らず、調理器具だけ持っていけばよいのです。
これがコンテナ型仮想環境で言うところのホストOSの機能を使い、足りない部分を外部から持ち込むという部分に該当します。また、前章ではダブっている調理機器をもう一つずつ持ち込んでいました。これも、すでに持っているものはわざわざ持っていかなくてよいのです。
足りない部分、その差分だけ持ち込めばよいのです。よって、上記の例の場合は以下の調理器具を持ち込めば、魚を捌き、ピザを焼くという任務は達成されます。
- 包丁
- まな板
- ウロコ取り
- 麺棒
- ピザ窯(or オーブン)
- ピザカッター
こうして、各要素を合わせた、任務遂行のために最小限の機能を持った空間こそがコンテナであり、この仕組みをユニオンファイルシステムといいます。
概念としてDockerがわかってきたところで、実際にデータ解析における活用例を見てみましょう。
例として、公開データのダウンロードと解凍が可能なため、バイオインフォマティクス領域の研究者の殆どが使ったことがあるであろう、sra-toolkitというソフトウェアをインストールして、fastq-dumpコマンドを実行するところまでを、実際のコマンドで見てみます。
パターン1:ネイティブインストール
sudo apt-get install cmake
git clone https://github.com/ncbi/ncbi-vdb.git
cd ncbi-vdb
./configure
make
cd ../
git clone https://github.com/ncbi/sra-tools.git
cd sra-tools
./configure
make
sudo make install
/usr/local/ncbi/sra-tools/bin/vdb-config --interactive
/usr/local/ncbi/sra-tools/bin/fastq-dump -h
これは、古のインストール方法であり、現代ではほとんど行う必要がありません。ここでお伝えしたいのは、ソースコードからインストールするには、私の環境では、これだけのコマンドが必要だったということです。「make」というコマンドでBuildしているわけですが、ここでエラーが出ることが多く、出てしまった場合には原因究明のためにあらゆる調査が必要になり、インストールに必要なコマンドが爆発的に増えることになります。
それでは、これらの作業をDockerを使った場合は、どうなるでしょうか。
パターン2:Dockerを用いたインストール
docker pull ncbi/sra-tools
docker run -it ncbi/sra-tools fastq-dump -h
これだけです。docker pull コマンドでは「動くもの」がダウンロードされてくるので、makeコマンドのようにヒヤヒヤすることもありません。
こんなに簡単だと、いろんなツールをいくらでも試すことができますね。
とても素晴らしいDockerですが、まだまだ痒いところに手が届かない部分があります。例えば、配布用のファイル(Docker imageやDockerfile)をうまく書かないと結局環境依存のエラーが出てしまい、Dockerの意味がなくなってしまったり、そのDockerfileは記載が結構面倒だったりします。
また、使い方によっては、こまめに掃除しないと、いらない仮想環境で溢れかえってしまうということもあります。また、Dockerは基本的に管理者権限を要求することもマイナス点です(Singularityで対応可能)。とは言え、開発は続いていますし、デメリットよりも享受できるメリットのほうが大きいので、うまく適応していけると良いですね。
Dockerの普及により、データ解析作業に革命が起きています。
今まで、OSS(Open Source Software)を用いたデータ解析において鬼門だった環境構築構築が不要な時代となり、データ解析を伴う研究はさらに加速しています。
Dockerは以下のリンクを参考に誰でもインストールできます。
Windows:https://docs.docker.com/desktop/windows/wsl/
Mac:https://docs.docker.jp/docker-for-mac/index.html
※ Dockerは従業員250人以上の会社、あるいは年商1000万ドル以上の会社は、最低月額5$の有償プランへの加入が義務付けられているのでご注意ください!
「コマンドライン」、「環境構築」という2大鬼門の中の一つが解決しつつあるので、次はコマンドラインの撤廃です。そこで株式会社アンプラットのANCATです。ANCATでは全世界中(予定)に存在する解析手法を、まるでカタログのように眺め、GUIで実行することができます。この記事をご覧の皆さん。当社と一緒に、解析手法を、正しく利用可能な状態で共有できる財産にしていきませんか?
その他、データ解析にご興味をお持ちの方は遠慮なくこちらまでお問い合わせせください!