CWL 作成環境、皆さんどうやって作ってますか?
CWL の処理系である cwltool を始め、CWL 公式で提供されているツールの多くは Python 製です。そのため pip
コマンドなどで各種ツールのインストールが可能です。
しかし、pip、pipx、pipenv、venv、conda のどれを使えばいいか(or どの組み合わせで使えばいいか)、Python 2 が2019年で EOL するから Python 3 で環境構築しないといけないけど、手順は Python 2 と同じ方法で大丈夫なの…?、など環境構築の際に様々な選択・確認を迫られます。
今回はこれらの問題に終止符を打つため、cwltool などの CWL 処理系や、CWL 用の IDE 機能を提供する benten をインストールして開発環境を整える決定版の方法を説明…しません!
21世紀になってから、すでに20年目に突入しようとしています。人類はそろそろ環境構築の苦労から解放されるべき。
前提条件
残念ながら、いくつかのソフトウェアはまだ自分でインストールする必要があります。敗北感に苛まれながら以下を各自でインストールしてください。
- Visual Studio Code
- Remote - Container extension (VSCode の拡張)
- git
- Docker (Docker for mac、Docker for Windows でもいけるはず)
また、以降で説明する手順は Github アカウントを持っていることを前提としていますが、アカウントがなくても特に問題ありません。
で、どうやるの?
VSCode の remote container 拡張を使うと、リポジトリを指定したコンテナ内に展開(厳密には volume mount)し、コンテナ内にインストールされたツールを使って開発することができます。CWL用に必要な設定を置いたテンプレートリポジトリを用意したので、今回はそれを使って開発環境の設定も含んだ新規リポジトリを作成します。
以下が具体的な手順です。
- 以下の URL にアクセスします
- ページ内の
Use this template
をクリックして新規リポジトリを作成する- Github アカウントを持っていない方は、単純にこの工程をスキップしてください
- ローカルにリポジトリを clone する
- Github アカウントを持っていない方は、上記の リポジトリを clone してください
- VSCode から
Remote-Containers: Open Folder in Container...
(画面左下の><
みたいなボタンから選択できる) を使い、clone したリポジトリを開く - できあがり!
指先一つじゃなかった- 新規ターミナルからコンテナ内にインストールされた各種ツール (
cwltool
、docker
、cwltest
など)を使えます。- 昨日紹介した
zatsu-cwl-generator
もインストール済みです
- 昨日紹介した
- コンテナ内にインストールされた benten (CWL 用の language server) により、動的なエラーチェックなどがデフォルトで有効化されています。
- Travis CI や Github Actions など、複数の CI サービス用のテンプレートが標準で提供されています。そのため、各サービスと連携するだけで、CWL の動作テストをコミットごとに自動的に行うことが可能です。
- (詳しい人向け) Remote container は docker-compose を使った複数コンテナ環境もサポートしています。今回紹介したテンプレートでは docker-compose と
docker:stable-dind
コンテナを活用することで、コンテナ内でも通常の環境と同じように、コンテナを使用する CWL の動作確認などを行うことができます。
FAQ
-
追加であのパッケージがほしい
-
.devcontainer/devcontainer.json
のpostCreateCommand
フィールドに、コンテナ作成 or pull 後に実行するコマンドを指定できます。.devcontainer/devcontainer.json{ ... "postCreateCommand": "apt-get update && apt-get install -y hogefuga", ... }
-
-
この記事のフォーマット、別の Advent Calendar でも見たような…
- 気のせいです!
TODO
PR お待ちしてます!
- もっと便利になる設定各種
最後に
リポジトリにソースコードや CI 設定だけでなく、開発環境も含め配布する時代がやってきました!
VSCode で開発をしている方は、ぜひ活用しましょう!