LoginSignup
3

More than 3 years have passed since last update.

posted at

updated at

Organization

タスクランナー mask のススメ

これは何?

この記事は、FOLIO Advent calendar 2019 の21日目の記事です。
20日目は、sachiohappy08さんの現役編集者がWEBエンジニアにお伝えしたい、出版業界と印税のお話でした。
22日目は、k_masa777さんの苦しんだScopedStorageについてです。

:performing_arts: jakedeichert/mask を使ってみて、開発が捗ったので他の人に勧めたいと思ったので、書いてみました。

おすすめする理由

弊社はマイクロサービスを採用しているため、複数のレポジトリを同時に見る必要があったりします。
その際に、各ディレクトリを移動することなくマイクロサービスのレポジトリのタスクランナーを扱ったり、ミドルウェアをdockerで集約したりしたい時に、自分だけのタスクランナーとしてmarkdownで書かれたタスクの定義を実行できるので、各サービスを汚さずに上手く扱えるので、開発が捗ります。

使い方

install

maskはRustで書かれているので、Rustのビルドツール兼パッケージマネージャーである cargo からインストールします。

cargo install mask

もちろん、githubのリリースからダウンロードしてPATHを通して利用することも出来ます。

updateする際は、自分は神経質ではないので、サクッと下記のコマンドで最新版をインストールしてしまいます。

cargo install mask --force

global maskfile.md

この例のように

~/dev/maskfile.md

みたいなのを置いておいて

mask --maskfile ~/dev/maskfile.md 

をaliasにしておけば、各プロジェクトのディレクトリに移動することなく自分だけのタスクを実行できるようになります。

コマンド引数やフラグも用意されているので、各ツールのコマンドラインオプションに併せると、自分だけのコマンドを作ることが出来ます

使ってみた

仮にプロジェクト配下に maskfile.md を置きたいが、gitで管理されたくない場合は、globalのgitignoreで maskfile.md を除外するようにしておけばよいかと思います。

実態は単なるmarkdownファイルなので、よっぽどのことが無い限り、他に影響することは無いとは思います。

例に挙げたプロジェクトでは、Scalaのsbt、Nodeのyarn、GCPのgcloudといった複数のタスクランナーやCLIをうまく扱う必要があったので、maskを導入しました。

一つのタスクから他のタスクを呼ぶのも可能なので、タスクの依存関係も分かりやすくなります。

おわりに

いかがだったでしょうか。
タスクの定義をmarkdownで記載することで、ドキュメントとしても分かりやすくなりますし、markdownを使い慣れている人であれば、導入も簡単なのではと思います。

ちょっとしたshell scriptやMakefileを書こうかなと思った時に思い出してもらえると幸いです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3