LoginSignup
0
0

Makeファイルマジック:コマンドライン辞書を作成しよう

Last updated at Posted at 2024-06-07

はじめに

2022年からのWebエンジニアをしているえいちゃもです。
現在は自社開発企業でエンジニアとして勤めています。
今回は業務をしていく上で便利だったMakeファイルを紹介しようと思います。
Makeファイルは私がはじめてアサインされたプロジェクトで使われているのを見かけ、それをきっかけにどのプロジェクトでも使っています。
この記事を見てまだ使ったことない人は便利なのでぜひ使ってみて欲しいです。また、リポジトリにまだないって人はぜひチームメンバーを巻き込んで提案してみてください。

Makeファイルとは

Makeファイルとは、ビルドプロセスを自動化するための設定ファイルです。
MacやLinuxではGNU Makeが標準でインストールされているのですが、Windowsではされていないので、choco install makeなどでインストールすることで使用することができます。
ディレクトリ直下にMakefileというファイルを作成することで使用することができます。

Makefileを使うメリット

いろんなメリットはあると思うのですが、初学者にとってのメリットを紹介します。

1. コマンドの簡略化

長くて覚えにくいコマンドって多いですよね。
そんな時にMakeコマンドを使ってください。
Makeコマンドを作る際に勉強にもなるので自作することをおすすめします。
私は特にDockerコマンドを簡略化するために使ってます。

例)コンテナ内でのコマンド実行したい時に使うコマンド

通常

$ docker compose exec #{container} ${command}

Makeコマンドを実行する場合

$ make up

Makefileでどのように記述するか

.PHONY: up
up:
	docker compose --profile all up

2. 複数のコマンドを同時に実行できる

セットで使うコマンド多くて大変ですよね。
そんな時にMakeコマンドを使ってください。
環境構築のドキュメントを作る時やチームメンバーにこのコマンド実行しといてくださいなど伝える時に便利です。

Railsを使っております

例)初回のデータベースを作成、更新などをしたい時に使うコマンド

通常

$ docker-compose exec #{container} bin/rails db:create
$ docker-compose exec #{container} bin/rails db:migrate
$ docker-compose exec #{container} bin/rails db:seed

Makeコマンドを実行する場合

$ make db

Makefileでどのように記述するか

.PHONY: db
db:
	docker-compose exec web bin/rails db:create
	docker-compose exec web bin/rails ridgepole:apply
	docker-compose exec web bin/rails db:seed

3. コマンドの辞書として使うことができる

コマンドを忘れた時ってGoogle検索かChatGPTなどに聞かないといけなくてめんどくさいですよね。
そんな時にMakeコマンドを使ってください。
実際に私が業務で使用しているMakefileを載せておきます。(Rails)

.PHONY: up ps app migrate seed console routes rubocop rspec db sql redis remove-all-containers
install:
	docker network create fs-network
	docker compose run --rm frontend yarn
	docker compose --profile all up -d
	docker-compose exec web bin/rails db:create
	docker-compose exec web bin/rails ridgepole:apply
	docker-compose exec web bin/rails db:seed
	docker-compose exec web bin/rails ridgepole:apply RAILS_ENV=test
	docker-compose exec web bin/rails db:seed RAILS_ENV=test
up:
	docker compose --profile all up
ps:
	docker compose ps
app:
	docker compose exec web /bin/sh
ridgepole:
	docker compose exec web bin/rails db:ridgepole
seed:
	docker compose exec web bin/rails db:seed
console:
	docker compose exec web bin/rails console
routes:
	docker compose exec web bin/rails routes
rubocop:
	docker compose exec web rubocop
rspec:
	docker compose exec web bin/rspec
db:
	docker compose exec mysql /bin/sh
sql:
	docker compose exec mysql /bin/sh -c 'mysql -u $$MYSQL_USER -p$$MYSQL_ROOT_PASSWORD $$MYSQL_DATABASE'
create-dump-%:
	# ex: make create-dump-20201231
	docker compose exec mysql bash -c 'mysqldump -u $$MYSQL_USER -p$$MYSQL_ROOT_PASSWORD $$MYSQL_DATABASE' > "${@:create-dump-%=%}_dump.sql"
redis:
	docker compose exec redis redis-cli
remove-all-containers:
	docker rm $$(docker ps -aq)
task-%:
	docker compose exec web bin/rails ${@:task-%=%}

おわりに

Makeファイルを一通り説明したのですが、いかがだったでしょうか?
使ってみると恩恵がわかるので、まずは触ってみて使用感を確かめてみてください。

0
0
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
0
0