(->> read write unlearn)

書いても書かなくても忘れる

Python のプロジェクトのタスクランナーをどうするか問題

nikkie-ftnext.hatenablog.com

nikkie-ftnext.hatenablog.com

どうやら、デファクトがないようす。Javascript の開発だと npm script が第一候補になる。

ツールに対する自分の偏見と選定基準

ツール 設定ファイル 偏見 Pros Cons
Make Makefile 王道。Python界隈でも昔からよく使われている 改めてインストールしなくても大抵の環境に入っている 書き方にハマりどころがある。そもそもビルドツールでありタスクランナーとしても使えるだけで、最適ではない。
Task Taskfile.yml Go 製。Goコミュニティ以外でも人気。 機能が豊富 とくにない
Just Justfile Makefileをタスクランナーとしていいとこどりした。 記法がシンプル、Makeに似てるので学習コストが低い。 独自記法なのでシンタックスハイライトがよくわからない。とりあえず Makefile と同じにしておいても大丈夫ではある。フォーマットは just --fmt がある。
taskipy pyproject.toml 内 Python Python製なので uv で入り追加のツールや設定ファイルが増えない とくにない
mise .mise.toml パッケージマネージャーだがタスクランナーの機能もある。 uv を mise で入れているなら、ツールを追加で入れる必要がない。 とくにない

選定基準

  • if, for loop, Y/n prompt, file watch など複雑なことをしたい → Task が絶対いい。
  • 追加のツールをインストールしなくても使えてほしい/ツールを増やしたくない → Makefile
    • uv を mise で管理してるなど既に mise を使ってる状況なら mise も選択肢。
    • Python のパッケージが増える分には気にしないなら taskipy も選択肢。
  • シンプルな記法が好き。Make に慣れてるけど Make より使いやすいもの → Just
  • YAML が好き → Task
  • TOML が好き → mise

個人的には、 Just のシンプルな記法が好きなので制約がなければ Just を使いたい。 しかし uv を mise 管理してることが多いのでツールが余計に増えないメリットが強すぎて mise を流用することが多い 1 。 複雑なことをしたいときにはスクリプトに書いてそれを呼び出すとするほうが好き。 そのためタスクランナーの中で機能性を必要とすることは少ない。 そのため Task はあまり選ばない。 taskipy 自体はPython完結だしいいツールなんだけど、mise が流用できる状況だと選ぶ理由があまりない。

Task ほどではなけど、 mise のタスクも細かく設定できてかゆいところに手が届くので不満はあまり出ない。

その他

uv がタスクランナー機能も出してきたらみんなそれを使いそうですね。


  1. 自分は既に慣れてるからよくても、新しく入ってくる人からしたら使ってるツールは1つでも少ないほうが楽だからね。