こんにちは。むらってぃー(@canon1ky)です!
今回はプログラミングをする人向けに、作業を効率化する方法の1つであるmakeコマンド活用法を書きたいと思います。
makeコマンドとは
Makefileに実行したいシェルのコマンドを書き、そのコマンドに対する名前をつけてあげることで、長いコマンドや複数のまとまったコマンドを任意のコマンド名で操作することができるというものです。
この時点ではイメージが湧かない方も多いかと思います。
例えば、
$ echo "output1" $ echo "output2" $ echo "output3"
というコマンドを打ちたい時に、
$ make all_output
みたいな感じで入力すると、上記echoコマンドが全て実行される。みたいな感じです。
makeコマンドは昔からC言語やC++のビルド用のコマンドとして主に使用されていましたが、最近ではGo言語の普及に伴って、Go言語とセットで使われることが多くなりました。
僕はPythonで開発することが多いので、Pythonの開発に組み合わせて使っています。
makeコマンドが使えると何が嬉しいか
例えばソースコードを
$ git pull $ eb deploy
みたいな感じでデプロイするという複数のコマンドを使う際に、
(上記はAWS Elastic Beanstalkというサービスのデプロイコマンドです)
$ make deploy
というコマンドを打てば上記2ステップのコマンドが自動的に実行され、作業の効率化が測れます。
それ以外にも、下記のcssや画像などの静的データをAWSのS3というストレージにまとめてアップロードするコマンドを例にすると、
$ aws s3 sync static/ s3://[bucket_name]/static/ --exclude "*.DS_Store" --acl=public-read --cache-control "max-age=86400"
と毎回打ったり、コピペするにしても超面倒なくらい長いです…笑
このようなコマンドも
$ make upload_static
といった形で短いコマンド名をつけ、毎回このコマンドを打つことで実行できるようになります。
そして何より、コマンドを記述したMakefileというファイルを実行する同階層のディレクトリに置いておけば、いつでもmakeコマンドを使うことができるというメリットがあります。
つまり、他の人でもMakefileさえあれば同じコマンドを使用できるということですね!
makeコマンドの使い方
Makefileを書こう!
まずはMakefileを書きましょう!
例として、下記のようなファイルを作ってみます。
$ vi Makefile
でエディタを開き、
このように3つのechoコマンドを記述します。
そして:wqで終了し、シェルにて
$ make all_output
を打つと、
このように、Makefileに記述したコマンドがまとめて実行されます。
コマンドを複数定義してみよう
Makefileには複数のコマンドを定義することができ、
上記では
- all_output
- make deploy
- make run
の3つのコマンドを定義しています。
このようにMakefileに複数のコマンドを定義することで、開発シーンにおいて
- デプロイ用のコマンド
- 開発サーバー立ち上げ用のコマンド
- 環境セットアップ用のコマンド
等の全てをたった1つのMakefileによってmakeコマンドで代用することができます。
チーム開発に活用してみよう
チーム開発を行うとなると、チャット等で
といった情報共有をする必要があります。
伝えられた方は、
次何入れれば良いんだっけ?
となることもしばしば…
しかしgitにMakefileを乗せておくだけで、git clone
して、make setup
で環境設定完了、make run
で開発サーバー立ち上げといったように、チーム開発で使用するコマンドを統一することができます!
自動化は嬉しいことがたくさん
個人開発、チーム開発のどちらにおいても、
といったように多くのメリットがあります。
シェルでの同じ単純作業を毎回やっている方や、自動化で開発効率を高めたい方は是非使ってみてください!!
「開発サーバを立ち上げる時にはこのコマンドを打ってね!」
「環境セットアップでは〇〇と□□を入れる必要があるからインストールしてね!」