LINE公式アカウントから最新記事の情報を受け取ろう!
※ これを伝えたいがためだけに記事を書きますので、「うんうん、わかるー」という方は読まなくて大丈夫です。「ナンノコッチャ」という方だけ御覧ください。
バイオインフォマティクスのように、解析技術の進歩が早く、新しい解析手法も日々追加されるような領域では、いち早く新しい解析手法を試してみるということが重要になります。私がデータ解析をやり始めた時代は、Virtual Machine(以下、VM)はありましたが、anacondaのような仮想環境技術やDockerのような革命的なものはありませんでした。
よって、新しい解析ツールが公開されたらソースコードをダウンロードして、自身のサーバに解析環境を構築、サーバの根幹的な部分をいじらなければならない場合には、関係各所に許可を取ったりして、そのツールが動く環境をどうにか作り出し、解析を実行したものです。
本記事では、従来、データ解析担当者はどのように解析ツールを実行してきたのか、周辺技術の歴史をなぞりながらご紹介し、次の記事では、Dockerの普及によってどれだけ解析作業が効率化したのか、また、現状の問題点についても記載していきます。
従来はこんな感じでした。この中で、長文で書かざるを得ない程に重要なスキルがあります。そう、2番です。
システムエンジニアならともかく、生命科学の専門家が持っていることは少ないであろうスキルが必要な時代がありました。
経験談としては、
「解析ツールを動かすためにソースコードをダウンロードしてきたので、makeするぞー」
↓
「あれ、Cのコンパイラが旧バージョンが指定されてて正しくBuildできない・・・」
↓
「旧バージョンのコンパイラ、現状のバージョンと共存できないやんけ!手持ちに古いPCないし、これはもう一時的に旧バージョンの共有ライブラリに置き換えるしか・・・。」
まぁ、この解決策はずいぶん乱暴なのですが、お伝えしたいこととしては、解析ツールは公開されているからと言って、簡単に動くと思うな。ということです。
その後、VMやDockerの登場により、この問題に光明がさします。
まず、解析ツールをダウンロードして利用するまでの流れを、少し俯瞰して捉えると以下のようになります。
「ツール製作者がツールを作る」
↓
「それを配布し、利用者はそれをダウンロードする」
↓
「利用者が各々環境構築してそれを利用」
ツールの製作者が使っているPCと一般ユーザーが使っているPCは別物です。故に、開発者のPCのでは動いたのに、一般ユーザーのPCでは動かないといった事が起こりえます。そのために一般ユーザーは、環境構築という、そのツールを動かすためにPCをカスタマイズしていく必要があるのです。
この流れについて、非常に効率が悪いのがわかるでしょうか。
地球規模で考えると、「解析環境構築のための時間×利用者」の時間が失われていることになります。これは科学を推進していく上で大きな損失です。
そしてこの問題は、「たしかにそのツールが動く、開発者の環境ごと配布」してくれればすべてが解決するのです(※)。
そこで、VM型仮想環境というものがあります。これは、自身のPCで、あたかも他のPCが動いているかのように、仮想的に作られた別環境のことを言います。例えば手持ちのMacの中で、Windowsを動かすということです。
こうすることで、Macしか持ってない人も、Windows専用のソフトウェアが使えるようになりますよね。ちなみに、このときの手持ちのPCで動いているMacのことを「ホストOS」、仮想環境として動いているWindowsのことを「ゲストOS」といいます。
データ解析、とくにバイオインフォマティクスにおける実例として、昔、「BioLinux」という、バイオインフォマティクスに役立つ解析ツールやデータリソースを入れた状態のVMが配布されていた頃がありました。これにより、たとえ手持ちのPCがWindowsだろうとMacだろうと、仮想環境でLinuxを動かし、バイオインフォマティクスが即時実施可能な時代があったのです。
※ 「動く状態で配らない開発者はけしからん!」という話ではないです。多くの開発者は、オープンソースソフトウェアという形で、無償で開発プログラムを使わせてくれているのです。その点、決して履き違えのないようにお願いします。
第二章でVM型仮想環境というのものは、解析ツールを解析環境ごと配布できる素晴らしいものだと言いました。事実、VMと言うのは現在のクラウドコンピューティング技術の礎になった技術で、とても素晴らしいものです。しかしながら、「解析ツールを5つ試さねばならず、それぞれ要求される解析環境が違う」といったケースではVM型仮想環境のデメリットが際立ってしまいます。
VM型の仮想環境の最大のデメリットとして、容量の大きいという問題が挙げられます。第二章の例で出した、「Macの中にWindows」が極端な例で、とある解析ツールを動かすためにWindowsを入れたとき、ソリティアやマインスイーパーは必要でしょうか?とてもおもしろいゲームですが、この場合は不要です。このように、特定の解析ツールを動かすためだけに、Windowsをまるごと動かすことは無駄が多いのです。
また、解析ツールを5つ動かそうと思ったら5つのVMが必要になってしまうというデメリットがあります(あくまで、端的にいうとですが)。解析ツールA~Eの5つがあって、それがすべて異なるバージョンのWindowsだった場合、バージョンの異なるWindowsのVMを計5つ入れることになりますね。ただ、Windowsである時点で根幹システムは一緒ですので、5つのVMのほとんどは同じファイルになってきます。とても無駄が多いことがわかるかと思います。
他にもコンピューティングリソースの分配等、デメリットは多々あるのですが、上記をまとめると、VM型仮想環境は「容量が大きすぎる」、「ファイルの重複による無駄が発生する」というのが大きなデメリットとなります。
VM型仮想環境のデメリットを解消したコンテナ型仮想環境というものがあります。VM型では、ゲストOSの機能を丸々ホスト側に埋め込んでいましたが、コンテナ型では、解析ツールを動かすためだけに必要で、現状のホストOSに足りてない機能のみをダウンロードして動かすことになります。
そのため容量は最小限で済みます。代表的なコンテナ型仮想化技術が、導入セクションで触れたDockerです。このDockerによって、データ解析担当者は解析環境を作らず、迅速に解析の試行ができるようになりました。
(・・・配布されているDocker imageや、Dockerfileが完璧ならば。。。)
Dockerについては次回、その機能から、簡単な使い方、従来の作業との違い、現状の問題点についてお話しようと思います。
「データ解析はコマンドラインを自由自在に使うことができ、PCに詳しい人しかできない!」という時代は終わりつつあります。今回ご紹介した仮想環境技術により、開発者側が用意さえしてくれれば、簡単なコマンドを叩くだけで解析ができる時代になりました。次回、Dockerについての詳細をお話しますので、ぜひご覧ください。
え?データ解析をするのに、コマンドラインも叩きたくない?そんなあなたは株式会社アンプラットのデータ解析プラットフォーム[ANCAT]をご利用くださいませ!!
その他、データ解析にご興味をお持ちの方は遠慮なくこちらまでお問い合わせせください!