7.7 Makefileを導入する

プロダクト開発が進むと、コード自動生成、単体/結合テスト、開発/本番環境向けのビルド・デプロイなどで、さまざまなコマンドを実行するようになるでしょう。場面ごとに必要なコマンドを覚えておくことは大変ですし、何かしらオプションを追加したい場面でチームに周知を徹底させるのも手間がかかります。そういったときにはタスクランナーを導入すると、コマンドを覚えておく手間を省け、チームでの統一したコマンドを実行でき、ミスを減らせます。Visual Studio Codeでは .vscode/tasks.json にコマンドを記載しておけば Tasks: Run Task から実行できますし、Node.jsでは npm-scripts 、JavaではGradleが使われることが多いですが、GoではMakefileをよく使います。

Makefileに定義されたタスクは make コマンドで実行します。Windowsの場合はデフォルトでインストールされていないので、Windows Subsystem for Linux (WSL/WSL2) を用いるか、Chocolatey経由でインストールします。

$ choco install make

7.7.1 Makefileの書き方

Goのプロジェクトでは以下のようなMakefileが提供されることが多くあります。デプロイ先はAWS Lambdaを例にしています。

リスト7-16: Makefile
.PHONY: install test run build zip deploy-dev deploy-prod

#############
# Development
#############
.EXPORT_ALL_VARIABLES ...