1.2. 前提条件#

このセクションに記載されているソフトウェアと構成は、このユーザーガイドに従うための前提条件となるものです。CWL標準は、多くの異なるワークフローランナー(訳注:ワークフローを実行するためのソフトウェア)やプラットフォームによって実装されています。この要件のリストは、CWL reference runner であるcwltool に焦点を当てています。他のCWL-compatible runnerやワークフローシステムを使用することもできますが、結果やインターフェイスは異なるかもしれません(ただし、正確なワークフロー出力は同一でなければなりません)。

CWL実装

CWL標準規格の実装は数多く存在します。あるものは完全なCWL実装であり、他のものはワークフローエンジンのプラグインや拡を含むことがあります。実装のセクションでより詳しい説明をしています。

1.2.1. オペレーティングシステム#

最新のオペレーティングシステムを使用することをお勧めします。OSは、以下のいずれかをお選びいただけます:

  • Linux

  • macOS

  • Windows

注釈

Windowsを使用している場合は、Microsoft Windows ユーザのためのcwltool 文書に記載されているように、Windows Subsystem for Linux 2をインストールする必要があります。インターネットアクセスとPythonの最新バージョン(3.6+)も必要です。

1.2.2. CWL Runner#

CWL ワークフローを実行するために最初に必要なものは、CWL runnerです。cwltool は、CWL コミュニティによって維持されている Python オープンソース・プロジェクトです。これはCWL reference runner(訳注: CWLの参照実装)でもあり、cwltoolは現在のCWL仕様v1.2のすべてをサポートしなければならないことを意味します。

cwltoolpipapt または conda でインストールできます。venvconda のような仮想環境を使用することを推奨します。

注釈

cwltoolaptconda とともにインストールする他の方法については、cwltool ドキュメント を参照してください。

簡単なCWLツール定義true.cwlcwltool を使ってみましょう。

true.cwl#
cwlVersion: v1.2
class: CommandLineTool
inputs: []
outputs: []
# `true` is a Linux command that exits with exit code `0` (success).
baseCommand: "true"

cwltool コマンドには、CWL ツールおよびワークフロー定義を検証するオプションがあります。このオプションは、CWL文書を解析し、構文エラーを探し、ワークフロー記述がCWL標準に準拠しているかどうかを検証します。ただし、これらの操作は、ドキュメントを実行せずに行われます。CWLワークフロー(または上記のようなスタンドアロンコマンドラインツールの記述も)を検証するには、cwltool コマンドに--validate オプションを渡します:

cwltool を使って true.cwl を検証します。#
$ cwltool --validate true.cwl
INFO /home/docs/checkouts/readthedocs.org/user_builds/common-workflow-language-user-guide-ja/envs/latest/bin/cwltool 3.1.20240508115724
INFO Resolved 'true.cwl' to 'file:///home/docs/checkouts/readthedocs.org/user_builds/common-workflow-language-user-guide-ja/checkouts/latest/src/_includes/cwl/true.cwl'
true.cwl is valid CWL.

--validate オプションを省略することで、CWLツール定義を実行できます:

cwltool を使って true.cwl を実行します。#
$ cwltool true.cwl
INFO /home/docs/checkouts/readthedocs.org/user_builds/common-workflow-language-user-guide-ja/envs/latest/bin/cwltool 3.1.20240508115724
INFO Resolved 'true.cwl' to 'file:///home/docs/checkouts/readthedocs.org/user_builds/common-workflow-language-user-guide-ja/checkouts/latest/src/_includes/cwl/true.cwl'
INFO [job true.cwl] /tmp/gqxvvack$ true
INFO [job true.cwl] completed success
{}INFO Final process status is success

1.2.2.1. 一般的な cwl-runner エイリアス#

cwl-runner は、CWL準拠のランナーに対する、実装にとらわれないエイリアスです。これは、cwl-runner エイリアスコマンドを独立して呼び出すことができ、特定のCWL runner のプログラム名に依存しないことを意味します。ユーザーは、cwltool のようなCWL runnerを直接呼び出す代わりに、cwl-runner を呼び出すことができます。cwl-runner は、システム管理者またはユーザーによってインストールされ、好みのCWL実装を指します。これは、複数のCWL runnerがある環境で便利です。

CWLコミュニティは、cwlref-runner という名前のPythonパッケージを公開しており、cwltool のエイリアスをcwl-runner という名前でインストールします。

cwltool のエイリアス cwl-runnerpip でインストールします。#
$ pip install cwlref-runner

これで cwl-runner 実行ファイルを用いてワークフローを検証・実行し、cwltool を呼び出すことができるようになりました。前のセクションと同じ結果と出力が得られるはずです。

検証true.cwl withcwl-runner.#
$ cwl-runner --validate true.cwl
INFO /home/docs/checkouts/readthedocs.org/user_builds/common-workflow-language-user-guide-ja/envs/latest/bin/cwl-runner 3.1.20240508115724
INFO Resolved 'true.cwl' to 'file:///home/docs/checkouts/readthedocs.org/user_builds/common-workflow-language-user-guide-ja/checkouts/latest/src/_includes/cwl/true.cwl'
true.cwl is valid CWL.
true.cwlcwl-runner で実行します。#
$ cwl-runner true.cwl
INFO /home/docs/checkouts/readthedocs.org/user_builds/common-workflow-language-user-guide-ja/envs/latest/bin/cwl-runner 3.1.20240508115724
INFO Resolved 'true.cwl' to 'file:///home/docs/checkouts/readthedocs.org/user_builds/common-workflow-language-user-guide-ja/checkouts/latest/src/_includes/cwl/true.cwl'
INFO [job true.cwl] /tmp/qc9q2wxr$ true
INFO [job true.cwl] completed success
{}INFO Final process status is success

cwl-runner を実行するもう一つの方法は、ファイルを直接起動することです。そのためには、まずtrue.cwl ワークフローを新しいファイルtrue_shebang.cwl にコピーし、特別な最初の行、shebang を含める必要があります:

true_shebang.cwl#
#!/usr/bin/env cwl-runner

cwlVersion: v1.2
class: CommandLineTool
inputs: []
outputs: []
# `true` is a Linux command that exits with exit code `0` (success).
baseCommand: "true"

chmod u+x を実行することで、 true_shebang.cwl を実行可能なファイルにできます。

true.cwl 実行可能なものにする。#
$ chmod u+x true.cwl

そして最後に、コマンドラインで直接実行できます。実行時には、shebangで指定されたプログラム(cwl-runner)が、ファイルの残りの部分を実行するために使用されます。

true_shebang.cwl をシェバングで実行する。#
$ ./true_shebang.cwl
INFO /home/docs/checkouts/readthedocs.org/user_builds/common-workflow-language-user-guide-ja/envs/latest/bin/cwl-runner 3.1.20240508115724
INFO Resolved './true_shebang.cwl' to 'file:///home/docs/checkouts/readthedocs.org/user_builds/common-workflow-language-user-guide-ja/checkouts/latest/src/_includes/cwl/true_shebang.cwl'
INFO [job true_shebang.cwl] /tmp/hd9opgp0$ true
INFO [job true_shebang.cwl] completed success
{}INFO Final process status is success

注釈

shebang (訳注:発音、シバン、シェバン)は、スクリプトの冒頭の2文字列#! のことです。スクリプトが実行可能な場合、オペレーティングシステムは、shebangの後に指定された実行可能ファイルを使用してスクリプトを実行します。/usr/bin/env <executable> <executable> プログラムを設定されている環境変数PATH の中で探すので、ハードコードされた場所を使うよりも/usr/bin/env <executable> を使うことが良い習慣と考えられています

1.2.3. テキストエディタ#

CWLではどんなテキストエディタでも使えますが、シンタックスハイライトのために、YAMLをサポートするエディタをお勧めします。人気のあるエディタは、Visual Studio Code、Sublime、WebStorm、vim/neovim、そしてEmacsです。

Visual Studio CodeとWebStormには、CWLとの統合を実現する拡張機能があり、カスタマイズされたシンタックスハイライトやより優れた自動補完などの機能が用意されています:

CWLコミュニティでは、エディターやビューアーのリストも管理しています:https://www.commonwl.org/tools/#editors

1.2.4. Docker#

cwltool は、ツール、ワークフロー、およびワークフロー ステップで指定されたソフトウェアコンテナをDockerを使用して実行します。Docker ドキュメントの指示に従って、お使いのオペレーティングシステム合わせてインストールしてください:https://docs.docker.com/.

Dockerコンテナの書き方や構築方法を知っておく必要はありません。このユーザーガイドの残りの部分では、実行例として既存のDockerイメージを使用し、コンテナのある実行モデルとない実行モデルの違いを明確にすることにします。

注釈

cwltool は、Docker、Podman、udocker、Singularityによるコンテナの実行をサポートしています。また、コンテナイメージを取得するために代替のコンテナレジストリを使用することもできます。

1.2.5. さらなる学習#