なんでもmake

どんなCUI作業にもとりあえず Makefile を作ってそれで作業する、 という流儀でやってる人がいるのは知っていた。 たとえばLaTeXでもの書いてるディレクトリに、こんなMakefileを置いとく。

clean:
	-rm -f *.dvi *.aux *.log

こうしておくと、ゴミファイルを消すときに、 make clean と打てばよく、rm の引数を間違って消しちゃいけないファイルを消す危険性を回避できる。 その他、そのディレクトリでありがちな作業のコマンドラインをいろんな ターゲットで登録しておけば楽に呼び出せるというわけだ。

で、実際便利だろうなとは思っていたが、あんまりそういうための Makefileを作って利用することはしてなかった。実際、面倒なコマンドラインも zshのパワーでたいてい一撃で終わるし、 ちょっと込み入ったのならシェルスクリプト置いときゃいいじゃん、なにも make様にご登場いただかなくても……のように考えていた。

で、9月に土屋さん とお会いして話しているときに、管理ツールは大体Makefileで書いちゃう、 のような話を聞いて以来ちょっと気になって真似してみたら、 ああ、なるほど、単にシェルスクリプトを作るより快適な点があった。

ということで、「あるディレクトリで完結している作業」は、 Makefileに入れておくってのがかなり長期的な作業効率を上げる感じだ。 「複雑だが、2〜3行のコマンド」をしまうくらいでシェルスクリプトなんか 作ってられっか! と感じることはよくあるが、たった1行のコマンドでも Makefileに入れるならファイルは増えず、全く気にならない。

うむうむ、これは思った以上に快適だ。これから 「なんでもmake」屋になるか。て、20年前に気付けよ。