🐣

CWL の文法: YAML と JSON について

2021/12/05に公開

この記事は Common Workflow Language Advent Calendar 2021 の二日目の記事です。

前フリ

CWL v1.2 の仕様 には、CWL ドキュメント (e.g., ツール定義やワークフロー定義)は YAML や JSON の文法を使って記述しなければならない、とあります。

CWL documents must consist of an object or array of objects represented using JSON or YAML syntax.

この記事は「へぇ、CWL は JSON 形式でも書けるのか」と新たな知識を会得した後に shebang 付きの JSON っぽい CWL (cat1-testcli.cwl) が公式から提供されているのを発見して「JSON に!shebang を!書くな!!!」[1] と憤慨したあなたに向けた小ネタ記事です。

本編

  • そもそも YAML は JSON のスーパーセット (少なくともスーパーセットであることを目指している)

    The YAML 1.23 specification was published in 2009. Its primary focus was making YAML a strict superset of JSON.

  • cat1-testcli.cwl は shebang 付きのなんちゃって JSON ではなく、JSON 的な記法で書かれた Valid な YAML
  • 上で引用した仕様の 2.2 の文章は、JSON 部分を削除して以下のように変更しても問題ない

    CWL documents must consist of an object or array of objects represented using YAML syntax.

    • こうなっていないのは、おそらく YAML が JSON のスーパーセットであることを知らない人から不毛なツッコミが数多く来たからじゃないかなぁ

まとめ

  • 仕様はよく読みましょう!!!
脚注
  1. JSON にはコメントを書くための記法が存在しません。参考: https://qiita.com/yokra9/items/1ac03876415d7fd47a65 ↩︎

Discussion