この MANIFESTO では、今日の生命科学・医科学のためのソフトウェアとパイプラインをデザインする際の、目的 (motives)・規範 (rules)・勧告 (recommendations) を説明します。
研究で大規模データが得られるようになったことで、(1) 計算のスケール化、(2) 全データの統合、(3) データの操作や可視化、において根本的な技術的課題が生じています。研究者は簡単に使えるソリューションを好むため、我々は、研究コミュニティが「巨人の肩の上に乗る」ように先人の知恵を活かしてソフトウェアを作ることやソリューションをモジュール化し柔軟性を持たせたオープンなやり方で提供することの重要性を見失いつつあると考えます。
この MANIFESTO は、研究所や民間会社がエンドユーザ用に一枚岩 (monolithic) のソフトウェアを作っている現在のバイオインフォマティクスの潮流に立ち向かいます。この MANIFESTO は、小さなツールを提供することで、効率的なソリューションをモジュールを組み合わせて構築でき、それぞれのパーツは容易に交換することができる、という UNIX のコンピュータ文化に基いています。さらに、このマニフェストは完全にフリーでオープンソース (FOSS) ではないソフトウェアのライセンスを用いる昨今のトレンドに反対します。正しく FOSS ライセンスに基づくソフトウェアが「アカデミックのみ利用可」などのオープンさにもとるソフトウェアを、いずれ完全に払拭することを歴史が示すとしても、我々はこのような MANIFESTO が必要だと考えます。
Small tools for bioinformatics は、生命科学と医科学のデータにもとづいて仕事をする研究者、ソフトウェア開発者、統計学者、システム管理者からなります。
Small tools for bioinformatics は、研究プロジェクトにまたがる「車輪の再発明」、例として、配列解析パイプラインにおいて再現性のあるスクリプトが欠落しているような問題を憂慮しています。
Small tools for bioinformatics は、UNIX 文化における、協調して働く小さなツールとソフトウェアによるソリューションを指しています。
Small tools for bioinformatics は、フリーでオープンソースのソフトウェアを開発し、ソフトウェアによるソリューションを共有し、結果の透明性と再現性を促進します。
Small tools for bioinformatics は、個々のツールは容易に理解でき、テストでき、交換できるような、モジュール化されたソリューションを構築することを可能にします。
Small tools for bioinformatics は、ビッグデータ解析に適したソリューションをとりまとめ、これらのツールを相互に連携させる方法をつくるための救済計画であり前向きかつ重要な取り組みです。
下記のシンプルなルールは Small tools for bioinformatics に賛同するすべての人に適用されます。
-
個々のツールはどれも、可能な限り小さいタスクをしっかりと処理すべきです。
-
個々のツールはどれも、個別の公開ソースコードレポジトリを持つべきです。
-
全てのツールはフリーかつオープンソースなソフトウェア (FOSS) で、フリー・ソフトウェア・ファウンデーション (FSF) が認めたライセンスを持ちます。
-
ソースコードは、能力のあるソフトウェア開発者にとって読みやすく分かりやすいものであるべきです。
-
エラーの状況と例外は説明的で明快に処理されるべきです。
-
可能な場合、ツールは (UNIXの) パイプをサポートすべきです。
-
可能な場合、ツールはコマンドライン用の実用的なインターフェイスを提供します。
-
ツールは、絶対パスの使用といったシステムへの依存性を避けるべきです。
-
個々のツールはどれも、少なくとも Linux において簡便な構築方法を提供します。
-
ソフトウェアのインストールとデプロイにおける依存関係は、外部のパッケージ管理システムによって処理されるべきです。
以下は推奨事項です。
-
ソースコードのホスティングに GitHub や類似のサービスを使用します。
-
自動テストに Travis や類似のサービスを使用します。
-
GNU パッケージシステム (GUIX) のためのパッケージ定義を提供します。
-
MANIFESTO の基準に合致する全てのツールは世界中で標準的なバイオインフォマティクスのパイプラインの一部となり得ます。
この MANIFESTO Small tools for bioinformatics に署名したのは
この文書を、ぜひ (GitHub で) clone し、コピーし、ブログを書いて下さい。オリジナルの文書は https://github.com/pjotrp/bioinformatics にあります(日本語版は https://github.com/ktym/bioinformatics にあります)。
注記
現時点では、バイオインフォマティクスはシーケンシングの恩恵で繁栄していますが、おそらく、現行のソフトウェア工学の取り組みがビッグデータの要件に実際にはマッチしていないため困難な状況にあります。少し前まで、プログラマーは専門的な(小さな)ツールを Perl, Python, R, C などで記述するために雇われていました。今では、バイオインフォマティクスのソフトウェア工学はマルチコアのプログラミング、I/O のボトルネック、RAM の制約、ユーザの厳しい要求に対処しなければなりません。総体的な挑戦として、次にくる素晴らしい何もかも含んだようなソフトウェアのソリューションをそれぞれの学生が個別に作ろうとするのは大変すぎる仕事になってしまいました。我々は生物学、統計学、ソフトウェア開発、システム管理などのバックグラウンドをもつ研究者との協同的な努力にだんだんと依存するようになってきています。この点が MANIFESTO の求められるところで、研究者や学生に孤立した世界から出てきてお互いに繋ぎ合わせられる小さなツールを書くことを奨励します。
また、バイオインフォマティクスのパイプラインには優れたワークフロー管理のソリューションが欠けており、Sun Grid Engine のような汎用的なクラスタ管理のソフトウェアと、Galaxy のようなユーザ向けのワークフロー管理のソリューションの間のどこかにそのギャップがあります。このギャップが、世界中のシーケンシングセンターで独自のスクリプトやしばしば脆いパイプラインを作らせることになり、「車輪の再発明」によって最良とはいえないメンテナンスの困難なワークフロー管理のソリューションを生み出しています。この MANIFESTO では、我々がパイプラインのためのソフトウェアを書く方法を変え、そのようなバイオインフォマティクスのパイプラインを、シンプルかつ柔軟性があり脆弱でなく管理しやすいものにするための協同的な取り組みを呼びかけています。
この MANIFESTO では(シーケンシングの)パイプラインを構成する要素となる (UNIX の) パイプのようなクリアな入出力のストリームをもつツールを強調していますが、ウェブのツールや GUI プログラムにおいても上記のルールや推奨事項の多くが適用できます。ソフトウェアのソリューションを自己完結したモジュール化することでそれらは結合可能になり新しいツールによって置換することも容易になります。ソフトウェアはソフトウェアです。つまりソフトウェアは容易に変更、置換、改良できるべきです。MANIFESTO はその哲学を支持します。
翻訳