# 40th Workflow Meetup (2021-05-12 Wed) ================================ [20210512 · workflow\-meetup\-jp/workflow\-meetup Wiki](https://github.com/workflow-meetup-jp/workflow-meetup/wiki/20210512) 2021-05-12(Mon) 13:00 - 19:00 まで。 完全リモートのため、全世界どこからでも参加可能。 # 事前計画 ## 全体 ## 石井 - 次回日程を決める - 6月2日を希望したいです。 - 2021年度は、月の第一週の水曜日13時スタートの方向。ただし、月曜日など他の日になるかもしれないです。 ## 西田 - JupyterLabのcollaborative機能の確認 https://twitter.com/j_perkel/status/1391854352118153217 ## 丹生 # こうなりました ## 全体 - 次回は6月2日水曜日13時から19時になりました。 - 6月1週目か2週目にCWLのオンラインカンファレンスが企画されている。 - ライセンスまわりの話を、石井の疑問について丹生さんに教えていただいた。 :+1: - :smile: 西田さんにJupyterlab の新しい機能を紹介していただいた - インストール方法は西田さんのところ参照 - Google Docs的に作業できる。 - 編集中に評価が可能 - Markdownのセルの場合は、自分が評価してたとえば、太字になると、誰かが追記するとそのまま太字がふえていく - VSCodeではまだできないかもしれない - にしださんが抜けた瞬間に、接続がきれた模様だが、これはtmuxしていないための挙動だったので、想定どおり - 要望(できがよいためにでてきたとかんがえる) - 画面分割したい - 片方で教師側の画面を、もう片方で同じページを自分用にコピーして評価したい - Read Only がほしい - 次回のミートアップではハンズオン - Jupyterのコラボ機能を使って、[Snakemakeをjupyterのbashカーネルで動かすやつ](https://github.com/harvardinformatics/bioinformatics-coffee-hour/blob/master/snakemake/index.ipynb)をやってみる予定 - ライセンスは、[BSDの2条項ライセンス](https://licenses.opensource.jp/BSD-2-Clause/BSD-2-Clause.html) - READMEにレポジトリの直下のライセンスに従い、例外は各ディレクトリを参照とのことを書いておく - Jupyter Notebook 自体と同じライセンス (まとめて配布するときに楽になる) - 最終的にできたもの(動くか動かないかは問わない)を、workflow-meetupにあるレポジトリに置く予定 - [handsonというレポジトリ](https://github.com/workflow-meetup-jp/handson)を作った ## 石井 - 次回の日程を決めた - Jupyterのコラボ機能がおもしろい - 西田さん++ - 今後jupyterで作ったものを、運用にまわしたいといううことが増えそうな気がするので、そのあたりの知見もミートアップで、集めていきたいとおもった。 - papermillとかも含めて。 - ライセンスの選び方や、注意点をまとめた。 - 抜けはある可能性があるが、補強をしていけばよさそう。 - [Observable \- Make sense of the world with data, together / Observable](https://observablehq.com/) - Javascriptでグラフ描画とかをさっとやるときにつかえそうなサービスを西田さんに教えてもらう - observablehqがD3よりさらに使いやすい、plotというライブラリを教えていただく - [Introducing Observable Plot / Observable / Observable](https://observablehq.com/@observablehq/introducing-observable-plot) - [Observable Plot / Observable / Observable](https://observablehq.com/@observablehq/plot) - 学生さんに、現代的に可視化プログラムを教えていくにはどうしたらよいかの話 - [deno](https://deno.land/) がよいのではないか? - nodeのあたらしいやつ - [発音](https://github.com/denoland/deno/issues/5707) - ruby, pythonはフロントがかけない - 黒い画面からはじめて、向いてないという判断もあるので、黒い画面はすてにくい - 型について - 古い型 - Javaなどのように、明示的に型Integerとか書く ```java // 変数の型を明示する必要がある ArrayList<String> list = new ArrayList<>(); ``` - 毎回型を書かないといけないのがつらい - モダンな型 (「型がある方がよい」という人が想定しているのはこちら) - Rustは、型を明示的に書かなくて良い (書いてもよい) ```rust let i = 1 // v: int32 型 (immutable) let f = 1.0 // v: float32 (immutable) ``` - 見た目はスクリプト言語っぽい場合もある - Rust, D言語 - 整数と小数の除算の扱いは言語による (型とは別の話になる) - [Julia の例](https://hsugawa8651.github.io/memojuliav064/ch06.html#%E6%95%B4%E6%95%B0%E5%90%8C%E5%A3%AB%E3%81%AE%E9%99%A4%E7%AE%97-1) ```julia julia> 1 / 2 0.5 ``` - [D言語の例](https://run.dlang.io/is/9Oe6AR) ```dlang writeln(1/2); // 0 ``` - モダンな型言語をつかっていないので、おおたさんに声が届かない問題が発生。 ## 西田 - 確かにJupyterがGoogle Docs or HackMD 的に使えるようになっていた - リモートの石井さん、丹生さんとも共有作業確認済み - その導入の仕方 ``` pip install jupyterlab --pre jupyterlab --ip=0.0.0.0 --collaborative ``` - pipの`--pre` optionでjupyterlabのalpha版をインストール、リリース版にはまだ入ってない - jupyterlabを`--collaborative` optionをつけて起動する必要がある - この後のミートアップで具体的に活用していきたい - 折角ミートアップしてるので、この機能を使って1ミートアップごとに1ノートブック(をみんなで)作るくらい目指したい - (とりま「作る」じゃないけど)次回は https://github.com/harvardinformatics/bioinformatics-coffee-hour/blob/master/snakemake/index.ipynb をみんなで実行してみよう ## 丹生 - Jupyterlab の共有機能がかなり良くなっていた - Notebook 限定であれば、VSCode の Live share よりもよい - Live share だとまだ notebook はうまく共有できない - ライセンスの話は無限にできてしまうので危険 - コピーも再配布も合法かつ制限が広く知られている OSS を使うのが検証コストがかからなくて楽だと思っている - ep3 いじり - [ep3](https://github.com/tom-tan/ep3/releases/tag/v1.5.0) に cwl-metrics 機能を実装しました、という告知 - `ES_HOST` と `ES_PORT` を環境変数に設定して `ep3-runner --extension=cwl-metrics` を実行すればよい - TODO: 環境変数以外の方法で設定を渡したい - ep3 に `--[no-]compute-checksum` を追加しようとしていた - cwl-inspector が魔窟化していてつらい - 実装して [v1.6.0](https://github.com/tom-tan/ep3/releases/tag/v1.6.0) としてリリースした - リモートファイルなどの扱いをうまく行うのに [`File#path`](https://www.commonwl.org/v1.2/CommandLineTool.html#File) が利用できるのではないかと思って調べていた - cwltool の path mapper (注: 内部表現) 相当をうまく表現したい - ep3 のコード整理をしつつ機能追加していきたい - Alpine Linux に singularity のパッケージが追加されていた (edge) - Singularity in Docker を試してみたがイマイチ - 以下は [Podman in Docker](https://zenn.dev/tom_tan/articles/d06f2faf6629d1) と同様 - Docker の起動オプションに `--privileged` が必須 - `tzdata` をインストールしてタイムゾーンを決め打ちにする or `/etc/localtime` を volume mount するなどの余計な作業が必要になる - `--privileged` が許容できるなら、手元での手軽な singularity 環境構築には使えるかも - (石井追記:dockerが使えれば、どこでも動くので、MacでもLinuxでもよい、windowsでもよい) ## 末竹 - `gh-trs` 作り - https://github.com/suecharo/gh-trs - まだ pre-release... - モダンな言語..... - 型推論付きの静的型付け - 変数は基本的に const - not try-catch な例外処理機構 - `defer` in golang (finally) - lock file とか node_modules のような project ごとの依存解決 - Generics のようないい感じの型機構 - async-await のような容易な非同期処理 - test runner が最初から組み込まれている - single binary... - map, filter あたりの関数型プログラミング... ## 大田 - 連休の間に溜まった色々を潰していたら1日が終わった!! - 某臨床DBに色々機能リクエストが!! - BOSCのレビューの締め切りまであと5日だ!! - CWL CodeFest を6月頭にやるかもしれないぞ!! - Sapporo のヘッダフッタについて明日相談してきます!! # 前回のミートアップから今回のミートアップまでにSlackなどにあったリンクメモ - ここから書く - 結論(詳しくはしたを読んでほしいです) - 広く知られた OSS ライセンスが採用されたソフトウェアを使用する - **ライセンス表記のないソフトウェアは使用しない** - 独自ライセンスも避ける - 商用ライセンスも正しく使うのが難しいため、できるだけ避ける - ライセンスの話 - 発端: https://advances.sciencemag.org/content/7/8/eabh1051 - 研究者倫理研修などで扱っているもの - スライドの引用 - 文献の引用 - ホームページの画像の引用 - カジュアルなGIF - 一般的には扱っていないもの - 公開データベースの利用 - ソフトウェアの利用・流用・公開・(再)配布 - 翻訳ソフトで翻訳された文章 - 参考: https://w.atwiki.jp/shiga_keiichi/ - 「研究者倫理研修で扱っているもの」の4つについては、一般的な倫理研修をきちんとうけて理解してください。わからないことは質問してください - 日本学術振興会が教材を公開している (5.3, 5.4) - https://www.jsps.go.jp/j-kousei/rinri.html - 論文のためのものの話が主に書かれているので、研究のためのプログラムや、そのために使うデータについてはあまり書かれていない。 - もともとのメモ(ソフトウェア以外のものについても) - データベース - JGI、SRA問題 - スライドの引用 - 文献の引用 - ホームページの画像の引用 - カジュアルなGIF - これも利用方法によってはダメと判定させる国が多いだろう - 個人の使用範囲(Zoom)とかはOKかもしれない - ちゃんとした発表ではたぶんアウトになるとおもわれる(バーチャル背景であっても) - このあたりのことを思い出すとよいかもしれないこと。問題になった先行事例があるのかは不明 - ライセンスの話 - ライセンス表記がある。 - 表記されているライセンスに従う - Copyright, Copyleft は関係ない。表記に従う - [パブリックドメイン](https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%96%E3%83%AA%E3%83%83%E3%82%AF%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3)は、公共物 - 著作権が放棄された状態 - a.k.a. [CC0](https://creativecommons.jp/sciencecommons/aboutcc0/), [Unilicense](https://ja.wikipedia.org/wiki/Unlicense) (ユニライセンス), [NYSL](http://www.kmonos.net/nysl/) (煮るなり焼くなり好きにしろライセンス) - ライセンス表記がない - 利用方法については著作者に確認をとらなければならない - 許可を得ずに改変・再配布等を行うと著作権法違反になる - 著作者の特定が難しい場合、著作権者の特定の手間を考えると、、、再利用はあきらめたほうがよいかもしれない - 著作者がわかっている場合でも、正しく利用するためのコストが非常に高い - 単に利用するだけでも著作者に連絡して明示的に許可を受ける必要がある - 再配布する場合にも許可が必要 - 同一研究室内であっても自分自身以外の利用は再配布にあたる - 再配布されたものを受け取った人の再配布には別途許可が必要 - 改変したものの再配布にも許可が必要 - **基本的に、なにかするたびに著作権者の明示的な許可が必要だと思ったほうが良い** - **解析に利用されているソフトウェアでも、ライセンス表記がないものがある** - 例、[annovar](https://annovar.openbioinformatics.org/en/latest/) - 例えば annovar を勝手にコンテナ化し、コンテナイメージを DockerHub や GCR などで公開していた場合、訴えられるとおそらく負ける - Dockerfile の公開であれば、annovar 自体の再配布ではないため問題ない - コンテナイメージを自分自身のみが利用する(かつ公開しない)場合は問題ない - 研究室内での共有も黒寄りのグレーになのでしないほうがいい - 自分が作ったワークフローに含まれる場合 - ラボ内の誰かが作ったannovarコンテナを、自分が使うのは、ダメ(と考える方が安全) - CWL の例: `dockerPull: annovar:latest` - CWL の配布は OK (annovar 自体は含まれていないため) - CWL + Dockerfile の配布も OK (annovar 自体は含まれていないため) - CWL + コンテナイメージの配布はアウト (コンテナイメージに annovar のコードやバイナリが含まれている!) - ライセンス違反をしないために - **ライセンス表記のないソフトウェアは使用しない** - 利用しても大丈夫なケース・大丈夫なケースを法律の非専門家が判断するのは難しい - 「自由に使ってもいいよ」はライセンスが明示されたことにはならない! - 再配布を許可するつもりはないかもしれない - 独自ライセンスは警戒する - 独自ライセンス == 自分でライセンスをちゃんと読んで確認する必要がある - 法律的にがばがばかもしれない - MIT や Apache 2.0 などの既存のライセンスは、気をつけるべき点などが広く知られている - かつ、法律的にも問題ないように気をつけて書かれている & 検証されている - 広く知られたライセンスを改変してるやつもまずい - [なぜライセンスを改造しちゃいけないの?](https://qiita.com/tadsan/items/c9dcdb3d271f290ab9b6) - なんとかしてライセンス違反をしないように迂回方法を探す - 参考: [午後のコーダーのバイナリ配布問題](https://ja.wikipedia.org/wiki/%E5%8D%88%E5%BE%8C%E3%81%AE%E3%81%93%E3%80%9C%E3%81%A0) - インストーラーがソースコードをダウンロードして mp3 エンコーダーをコンパイルする - エンコーダーのソースコードやバイナリ自体を配布しているわけではないので OK、という理屈 - 著作権者にライセンスを付与を求める - 著作権者に「自由に使ってもよいよ」といわれたときはどの自由なのかがわからないので、やはりライセンスを明記してもらうべき - ~~コピーレフト?や著作権放棄ということになっている~~いない!!!が、国によって考えが違う可能性あり。 - 商用ライセンスも正しく使うのが難しい - 利用できる VM の数に制限がある場合がある - クラウドやスパコン上で利用する際に、意図せず違反する可能性がある - 利用できるマシンの CPU コア数に制限がある場合がある - 例: https://japancatalog.dell.com/c/windows_server_license_physical/ - コンテナ上で利用するのは VM 利用に含まれるのか? - Docker for Windows や Docker for Mac は、VM 経由でコンテナを起動する - コンテナ上での利用は制限されるのか? - リモートデスクトップ経由の利用には別途ライセンスが必要になる場合がある - クラウドのリージョンとか、バックアップのバックアップ先とかバックアップがマルチリージョン対応とか - ソフトウェアがインストールされた VM のスナップショットの保存にはライセンスが別途必要か否か - クラウドベンダやCPUやGPUの種類なども関係しているかもしれない - 利用場所に制限がある - 利用できる計算機やそれにアクセスする方法に制限がある時がある。 - リモートデスクトップの使用の可否 - ソフトウェアやバージョンごとにライセンスが異なるため、厳密に従おうとすると毎回確認が必要になる - **こんなの毎回確認してられない** - https://github.com/workflow-meetup-jp/workflow-meetup/wiki/%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E8%AD%B0%E8%AB%96