さようなら、CWL
このエントリは、 Common Workflow Language (CWL) Advent Calendar 2018 - Qiita の25日目です。
tl;dr
- 落合、バイオインフォやめるってよ
- つくったバイオインフォ関連OSSのメンテナンスは続けていくつもりです
CWLって何よ
2017年4月にベルリンから逃げ帰って、某大学研究所に研究員として就職しました。当初は、自分が持ってるバイオインフォの個人事業で独立しようと思っており、半分はその営業・コネクション作りのつもりで行ったのですが、なんやかんやでそこで働くことになってました。今にして思えば、よい判断だったと思います。理由は最後のほうで書く。
「ゲノム解析のプラットフォーム構築、あるいはその技術検証」というようなミッションで、ゲノム解析の実情・課題国内のスパコンの利用実態、日本および海外のクラウドサービスの利用状況、Docker / Singularity を用いた仮想化・再現性の担保などの研究?実装をしました。
そんな中、国際学会でもにわかに注目を集めていたのが「Common Workflow Language」略して「CWL」です。
CWLって何よ、っていうのは、この辺見たらよろしい。
- CWL Advent Calendar 2017 - Qiita
- データ解析が再現するということ、あるいは Common Workflow Language... - こんな時間ですがパスタを茹でます
- Webプログラマから見た「CWL」の功績と罪過 - DRYな備忘録
- Common Workflow Language (CWL) Advent Calendar 2018 - Qiita
世界中のゲノム解析作業者(←そのすべてが「バイオインフォマティシャン」とは限らないところがミソ)がそれぞれのスパコンのスペックで、秘伝のパッケージがインストールされた環境で、秘伝のシェルスクリプトを丹念につくりあげて論文を発表するも、当然それでは再現性が無かったりしてどーなのよ、となるのを「じゃあ統一記法があったらいいんでしょ」って発想で「Common」な「Workflow」の「Language」を 作りたかったらしい 作ったのが「Common Workflow Language」です。
正直しんどい
「お、じゃあいっちょCWLの思想信条を理解するのも兼ねて、エンジンをつくってみよじゃないの」と思ってGoによるシンプルなエンジンの実装を始めたんですけど、これがまた、しんどい。色々な概念をモリモリにしてしまって、仕様が収集つかなくなってる感じがあります。
細かいことは、去年 Webプログラマから見た「CWL」の功績と罪過 - DRYな備忘録 でガッツリ書いたのでここでは詳細は割愛しますが。
すっげー乱暴に言ったら、哲学が先行しており、実践がついてきてなくね?という感じです。
帰納的アプローチ
CWL自身も「いや、ウチは別に絶対的な統一記法を発明しようとしているわけちゃうよ?」「他にもいろいろあるからええやつ選んだらええんちゃう?」という態度です。
であるのであれば、無理にCWLに追従するのではなく、独自のワークフロー記法を作るぐらいの勢いでやるのがいいんじゃないかと思うんですが。
そのとき、CWLのように「かくあるべき」から降りてきて、途中途中に要求を吸収していくようなやり方ではなく、それぞれの参加者がそれぞれの業務フローに特化したソフトウェアをまずつくり、共通概念を抽出していくような、いわば帰納的なアプローチを取るべきだ(あるいはCWLはそういうアプローチを取るべきだったのではないか。まあそれをやるにはワールドワイドすぎるとは思うけど)と思うわけです僕は。
そんなわけで、ってほど必然性は無いんですが、僕は仕事の一環で「クラウドサービス上で任意のワークフローを動かし結果だけを得るエンジン」を作っておりました。「hotsub」っていうんですけど。
名前が某ポルノサイトに酷似してるってツッコミを受けました。ポルノだけに。
12月は無職でした
もちろん、業務フローに特化したエンジンを作ると、そこそこ長所短所・得手不得手があり、なんとなく職場ではこの "hotsub" 使われずじまいだったので、いちおう目標であった論文だけ(インターネットジャーナルですけど)投稿して、11月末に退職、ターンエンドと相成りました。
転職活動のほうは、各方面に迷惑をかけつつも、1月からちゃんと就職できることになりました。ありがとうございました。
となると12月無職になるわけですが、友人各位はご存知のように(?)当方は貯金など一切無く、12月どうやって行きていけばいいのかワカラン、仕方ないので持ち前のコネクションとコミュ力でゲノム解析の単発受託などをやり糊口を凌いでおりました。
そう、まさにこの "hotsub" を使ってね!
このままでも「hotsub」を使って受託をこなすのはドチャクソ便利なんですが、やはりソフトウェアというのは、実際に運用してみて始めて洗練されていくもので、いろいろな課題や要望が見えてきました。
そのうちの一つが「hotsubというエンジンに依存しないジョブインターフェースの定義」であります。
この延長に「ワークフロー記述方法」が透けて見えており、かなり手応えを感じます。(時すでに退職し感)
今後の展望
すでにhotsub*1がCWLの実行を部分的にサポートしているのですが、今後はさらにhotsubが完全に「CWLのクラウド上実行のエンジン」となっていく展望は具体的に見えているのですが、いかんせん俺はもうバイオインフォ関係ない人になっちゃう。
加えて、CWLのコミュニティ活動の一環として上記 yacle*2の実装も、時間さえあれば進めていくつもりですが、もちろん給料など出ないのでありますから、牛の歩みになってしまうと思われます。
興味関心としても、上記のように「CWLは絶対のワークフロー記述方法ではない」という立場ですので、今後は僕は「CWLの動向をかなり遠くから見守りつつ、興味範囲でエンジンの実装と、独自ワークフロー記法の発明を進める」という感じになっていくと思われます。
まとめ
ドイツから帰ったとき、いきなり個人事業に集中していたら、たぶんこんなに業界のことを知れなかっただろうし、ネットワークもつくれなかったと思う。特に、CWL界隈・ワークフロー界隈・ワークフローミートアップのお歴々には、ソフトウェアへの貴重なご助言・フィードバックをいただき、彼ら無しでは僕はきっとバイオインフォで一切成果を出せなかったとすら思います。マジで。
なんかまともな謝辞になった。
まぁ、まとまらないんですけど、まとめると、「さようなら、CWL」となります。
WETな DRYな備忘録として