個人の意見に基づくポエムです。あらかじめご了承ください。
Nextflowとは?
AWS、GCP、Azureなどのクラウド環境を使って、大きめのデータを処理するためのワークフロー言語です。
データ処理では、シェルスクリプトを使った作業が行われます。しかし、シェルスクリプトは、標準入力と標準出力が一つしかありません。だから、データの処理の流れが分岐する場合は、データをファイルに一時保存しながら処理を行う必要があります。また、シェルスクリプトは複数のコンピュータ、クラスタで実行することを想定していません。言い換えるとクラウド環境で動的に計算資源を立てて実行するような実行方法は想定されていません。ワークフロー言語は、動的にクラウド環境の計算資源を確保し、仮想環境を利用して任意のOS環境を用いて、複数の複雑な分岐を持つ処理工程を単一のソースコードで記述することを可能にします。また、Makefileのように、途中まで行った処理を続きから実行することも可能にします。
Nextflow言語で再現性は高まるのか?
「再現性のあるワークフロー言語」という言葉は少なくとも2つの意味があると思います。
- 世界中の異なるコンピュータで実行できるか? - 仮に空間的な再現性とでも呼びましょうか。
- 同じワークフローが10年後も実行可能であり続けるか? - 仮に経時的な再現性とでも呼びましょうか。
ワークフロー言語は前者をある程度解決します。しかし、ワークフロー言語で後者の問題が改善されるかはかなり疑問に思っています。
ワークフロー言語の特徴は、Docker、Singularityなどの仮想環境、AWSなどのクラウド環境を活用することです。ワークフロー言語はクラウドの差異を吸収します。クラウド環境はAWS、GCPなど複数あり、動的に計算資源を確保します。
Nextflowを利用すると、中間レイヤーが差異を吸収してくれるため、同じワークフローを異なるマシンを使って、世界のいろいろな場所で実行できるようになります。これは第三者がワークフローを利用する場合や、ワークフローの妥当性を検証する場合には非常に有効な手段となるでしょう。例えば、公開されているRNA-Seqのパイプラインを利用したい場合や、研究者がプレプリントで発表したワークフローを追試して動作を検証したい場合が、それに相当します。
では経時的な再現性はどうでしょうか。
個人的には、経時的な再現性は下がると考えています。理由は、ワークフロー言語は多くの中間層を持つことで、より複雑になっているからです。複雑なものは、より多くのメンテナンスコストが必要になります。しかし、メンテナンスコストが増えたとは感じないかも知れません。その理由は、ユーザーがメンテナンスコストを直接負担しなくてもいい構造になっているからだと思います。増加したメンテナンスコストは、ユーザーの見えないところで、多くのエンジニアが労力をかけて支払っています。
DockerはDocker社が中心となって開発を継続しているOSSの製品です。Nextflowはクラウド環境の差異を吸収してくれるOSSの言語です。seqeralabsという民間企業が中心となって開発を継続しています。互換レイヤーを維持し続けるためには組織的な取り組みが必要で、技術者を雇用し続ける必要があります。
例えば、世界で一番有名なソフトウェアであるMicrosoft Windowsも、デバイス間の差異を吸収してさまざまなコンピュータで同じプログラムが動作することを可能にすることで価値を生み出しています。現在ではLinuxもかなり普及していますが、仮にオープンソースソフトウェアであるとしても、質の高いソフトウェアを維持し続けるためには、何らかの営利組織の強力なバックアップは必須になると思います。(個人の感想です)
開発団体は通常ソフトウェアの持続的開発について不安を呼ぶようなメッセージは発信しません。しかし実際にはAdobeのFlashを例に出すまでもなく、互換レイヤーを提供していたソフトウェアが開発終了されることは珍しいことではありません。Amazon社など、各社の提供するクラウド環境が進化し続けるので、ワークフロー言語も最新の環境に対応し続けることが求められます。しかし、開発が中断されれば追従していくことは難しくなります。
そういったこともあり、ワークフロー言語の利用はクラウド環境の効率的な利用を可能にしますが、経時的な再現性の確保についてはあまり期待してはいけないと思いました。
もっとも、研究・科学向けのソフトウェアは、複雑性が高い割に実行回数が少ないという顕著な特徴があります。科学者は常に新しい試みを行うことが求められ、ツールを必要とする社会的文脈は急速に陳腐化します。そのため一部の重要なツールを除くと、時代を超えて利用されるということはほとんどないかも知れません。経時的な再現性に対する需要は高くなく、むしろ空間的な再現性こそが重要であるという主張には一定の説得力があります。
将来的にAWSのようなクラウド産業がコモディティ化して、たとえばAWS互換のクラウドを多くの発展途上国の事業者が提供するようなことになると、クラウド環境の規格の統一化がはじまり、オープンなワークフロー言語が誕生して普及していくかもしれません。
その場合でも、移り変わるクラウド環境に対応し続ける人的な開発リソースは必ず必要になると思います。
利用者としては、メンテナンスコストを企業やOSSに付け替えることで支払わなくて済むようになったことを喜ぶだけではなく、影で動いている開発体制やエンジニアの労力にも関心を払い、場合によっては負担のない範囲で貢献する手段がないか頭の片隅で考えるのが望ましいと思います。実際には難しいとしても。
この記事は以上です。