Makefileで開発効率アップ!はじめてのmakeコマンド

こんにちは、さるまりんです🐒
「毎回、同じコマンド何度も打ってる気がする…」
そんな時に使えるのがMakefile
本来はC言語のビルドで使われていたmakeコマンドですが、実はどんな開発にも使える便利ツールなんです。
今回は、Web開発でも使えるシンプルなMakefileの書き方から始めたいと思います。

Makefileってなに?

makeコマンドで実行できる「作業レシピ集」で、自動化したい処理を名前付きで登録しておけます。

毎回コマンドを打たずにmake setupみたいに一発で複数のことを実行できます!

基本の書き方

Makefile
setup:
	echo "preparing environment..."
	npm install
	docker compose up -d
ここでは
setup:が「ターゲット」です。
その下に続く、タブで始まる行が実行コマンドです。
※注意:スペースではなくタブです!
実行は簡単:
make setup
これで、setupecho, npm install, docker composeの順に実行されます。
もちろんpackage.jsonがないとか、Dockerfileがないとか、なんの準備もしてなければエラーになりますが、それでもエラーとなるまで実行してくれます。

よく使うMakefile

up:
	docker compose up -d

down:
	docker compose down

build:
	docker compose build

test:
	npm run test

lint:
	npm run lint

clean:
	rm -rf node_modules dist

開発時、これらのコマンドよくやりませんか?

make upで「開発環境起動」、make downで「停止」、make testで「テストを実行」して、make cleanで「いらないファイルを削除」です。

ちょっと応用してみます

まずは変数。Makefile内ではプログラミング言語のように変数を使うことができます。
NAME=さるまりん

hello:
	echo "こんにちは、$(NAME)さん!"
変数が使えるとバラバラになってしまいそうなものをまとめて管理できますね。
そして依存関係も書くことができます。
setup: clean install

clean:
	rm -rf node_modules

install:
	npm install
こうすることでmake setupとすると、cleaninstallの順に実行されます!
こんな風にMakefileでよくやる作業を一括で管理できます。シンプルな文法なので、わかりやすく、効率アップできるかな。JavaScriptやDocker、どんな開発にも使えるという便利なものでした。ちょっとした自動化から始めて、どんどん便利にしていきたいです。
今更?そう言われるとそうなのかもしれないです。
僕も開発の中で誰かが用意してくれたMakefilemake cleanとかmake allとかしてただけなので。(あの頃は本気でC言語でプログラム書いてたな〜)
遅すぎることはないと思うので、これからちゃんと覚えて使っていこうと思います。
その過程はここに残していきますね。
読んでくださってありがとうございました。
それではまた!