これは何?
この記事は、FOLIO Advent calendar 2019 の21日目の記事です。
20日目は、sachiohappy08さんの現役編集者がWEBエンジニアにお伝えしたい、出版業界と印税のお話でした。
22日目は、k_masa777さんの苦しんだScopedStorageについてです。
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を書こうかなと思った時に思い出してもらえると幸いです。