はじめに
皆さんは、1日に何度も使うコマンドってありますか?
例えば、私の場合、docker compose up -d
や docker compose exec python bash
をよく使います。
こういうコマンドって本当によく使うので、何度もタイピングしていると面倒だったり、タイポしちゃったりしますよね...
さらに、「あのコマンドって何だっけ?」と、使うたびに調べてしまうコマンドもありますよね。
そんな悩みを解決してくれるのが、今回紹介する make
コマンドです!
make
コマンドを使えば、長くて覚えづらいコマンドに短い名前をつけて実行できるので、タイピングの手間を減らすだけでなく、タイポのリスクも大幅に減らせます。
導入も簡単で、開発チームの作業効率をグッと向上させる便利なツールなので、ぜひチェックしてみてください!
make
コマンドとは
make
コマンドは、元々プログラムのビルド(コンパイル)を自動化するために開発されたツールです。
その仕組みは、「名前(ターゲット)をつけて、その名前に対して実行したいコマンドを紐づける」というシンプルなものです。
これを利用することで、複雑なコマンドやよく使うコマンドを短くて覚えやすい名前に置き換えられます。
例えば、docker compose up -d
に up
という名前をつけて、サクッと実行することもできちゃいます!
使い方もシンプルで、現場のエンジニアにも愛用されている超便利なツールです!
実際に試してみる
それでは、実際に make
コマンドを使ってみましょう!
まずは、自分のパソコンに make
をインストールしましょう。
以下の環境に応じて、該当するコマンドを実行してください。
WSL(Windows Subsystem for Linux)
sudo apt update && sudo apt install -y make
macOS
xcode-select --install
インストールが完了したら、make
コマンドの設計図となる Makefile
を作成します。
Makefile
は、普段コマンドを実行しているディレクトリに置いてください。
私は、以下のディレクトリ構造のように、my-app
フォルダに Makefile
を作成しました。
my-app/
├── app/
│ └── main.py
├── docker-compose.yaml
└── Makefile
では、さっそく Makefile
を書いていきましょう!
Makefile
の書き方はとても簡単で、ターゲットに好きな名前をつけて、実行したいコマンドをその下に書くだけです!
ターゲット:
コマンド
こうすることで、ターミナルで make ターゲット
を実行すると、対応するコマンドが実行されます。
つまり、以下のように書くと、ターミナルで make up
と打つだけで、毎回長々と打っていた docker compose up -d
を簡単に実行できるようになります!
up:
docker compose up -d
たったこれだけの設定で、あの長いコマンドを何度も打たなくて済むなんて、本当に最高ですよね...!
汎用的な Makefile
の紹介
今回は、いろいろなプロジェクトで使い回せる、汎用的な Makefile
を作ってみました!
内容としては、Dockerでよく使うコマンドに加えて、便利な help
コマンドも用意しています。
.PHONY: up down build logs bash ps help
.DEFAULT_GOAL := help
up: ## コンテナを起動
@docker compose up -d
down: ## コンテナを停止
@docker compose down
build: ## イメージをビルド
@docker compose build
logs: ## コンテナのログを表示
@docker compose logs -f
bash: ## コンテナ内でシェルを起動
@docker compose exec python bash
ps: ## コンテナの状態を表示
@docker compose ps
help: ## コマンドの一覧を表示
@echo "利用可能なコマンド:"
@grep -E '^[a-zA-Z_-]+:.#*' $(MAKEFILE_LIST) | \
awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' | \
sort
%:
@make --no-print-directory help
この help
コマンドは、Makefile
内に「ターゲット: ## 説明」という形式で書かれた行を抽出して、利用可能なコマンドの一覧を表示してくれます。
実際に make help
コマンドを実行すると、こんな感じで見やすく表示されます!
利用可能なコマンド:
bash コンテナ内でシェルを起動
build イメージをビルド
down コンテナを停止
help コマンドの一覧を表示
logs コンテナのログを表示
ps コンテナの状態を表示
up コンテナを起動
また、Makefile
の一番下にある %
は、定義されていないターゲットを受け取るワイルドカードの役割を持っています。
例えば、make hoge
のように存在しないターゲットを指定すると、この %
に定義されたコマンドが実行されます。
今回の場合は、make help
が実行されて、利用可能なコマンドの一覧を表示してくれる設計にしてみました!
かなり使いやすくできていると思うので、ぜひコピペして試してみてください!
おわりに
今回は、複雑なコマンドをシンプルにまとめ、作業効率をグッと向上させる make
コマンドを紹介しました。
make
コマンドは、タイピングの手間やタイポのリスクを減らすだけでなく、チーム全体で統一した操作を簡単に共有できる点も大きなメリットです。
ぜひ皆さんも、自分だけの便利なコマンドを作って、日々の作業をもっと快適にしてみてください!