3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

まだdocker compose up -dって打ってる人いませんよね...?

Posted at

はじめに

皆さんは、1日に何度も使うコマンドってありますか?

例えば、私の場合、docker compose up -ddocker compose exec python bash をよく使います。

こういうコマンドって本当によく使うので、何度もタイピングしていると面倒だったり、タイポしちゃったりしますよね...

さらに、「あのコマンドって何だっけ?」と、使うたびに調べてしまうコマンドもありますよね。

そんな悩みを解決してくれるのが、今回紹介する make コマンドです!

make コマンドを使えば、長くて覚えづらいコマンドに短い名前をつけて実行できるので、タイピングの手間を減らすだけでなく、タイポのリスクも大幅に減らせます。

導入も簡単で、開発チームの作業効率をグッと向上させる便利なツールなので、ぜひチェックしてみてください!

make コマンドとは

make コマンドは、元々プログラムのビルド(コンパイル)を自動化するために開発されたツールです。

その仕組みは、「名前(ターゲット)をつけて、その名前に対して実行したいコマンドを紐づける」というシンプルなものです。

これを利用することで、複雑なコマンドやよく使うコマンドを短くて覚えやすい名前に置き換えられます。

例えば、docker compose up -dup という名前をつけて、サクッと実行することもできちゃいます!

使い方もシンプルで、現場のエンジニアにも愛用されている超便利なツールです!

実際に試してみる

それでは、実際に 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 コマンドは、タイピングの手間やタイポのリスクを減らすだけでなく、チーム全体で統一した操作を簡単に共有できる点も大きなメリットです。

ぜひ皆さんも、自分だけの便利なコマンドを作って、日々の作業をもっと快適にしてみてください!

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?