makeコマンドでシェルの作業を自動化。作業効率を10倍に!

おすすめ
スポンサーリンク

こんにちは。むらってぃー(@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で開発サーバー立ち上げといったように、チーム開発で使用するコマンドを統一することができます!

 

 

自動化は嬉しいことがたくさん

個人開発、チーム開発のどちらにおいても、

 

  • 文字数の多いコマンドを毎回打つ必要がなくなる
  • 複数のコマンドで行う操作を1回のコマンドで実現することができる
  • コマンドタイプミスによるヒューマンエラーを防ぐことができる
  • Makefileを見れば使えるコマンドが一発でわかる
  • gitにMakefileを乗せておくことで、コマンド自体をバージョン管理できる
  • 新しい人がmakeコマンドを使う場合、Makefileを見るだけで開発に必要なコマンドがわかる

 

といったように多くのメリットがあります。

 

シェルでの同じ単純作業を毎回やっている方や、自動化で開発効率を高めたい方は是非使ってみてください!!

タイトルとURLをコピーしました