無気力生活 (ノ ´ω`)ノ ~゜

脱力系エンジニア。てきとーに生きてます。

意外なところで使えるMakefile

昨今Dockerを用いたコンテナ開発しているところでは、割と採用されているのではないでしょうかMakefile何番煎じかわからない内容ですが、とっても便利ですよ( ・`ω・´)


C++触っていたときはMakefileに大変お世話になっていましたが、その後JavaC#と渡っていくうちに、言語ごとのビルドツール(当時はantとかmsbuildとか)を使うことになりしばらくご無沙汰だったわけですね(´・ω・`)

特にWeb開発でLL言語開発を長くやっていると使うケースがあまりありませんでした。複雑なビルド等しないわけだし、Railsだとrakeって生き物もいるわけで。ほとんど見ることはありませんでした(少なくとも私の周辺では)


しかし最近、何でも実行できるそのポテンシャルが、普段利用していない層の人々にも評価されたのか、Docker活用した開発現場での利用が増えてきたように感じます。

今自分が担当してるRailsとVue.jsのプロジェクトではこんな感じのものを入れてます。

update:
    @make rails/bundle # 別のコマンド叩く場合@make {command}
    @make yarn/install
    @make rails/migrate

yarn/install:
    docker-compose run --rm web yarn install # フロントはpackage.jsonで実体を管理しておいて呼び出すだけ
 
yarn/build:
    docker-compose run --rm web yarn build

yarn/clean-build:
    docker-compose run --rm web rm -rf node_modules/.cache/hard-source/
    @make yarn/build
 
rails/bundle:
    docker-compose run --rm app bundle install
 
rails/migrate:
    docker-compose run --rm app bundle exec rails db:create db:migrate
 
rails/restart:
    docker-compose run --rm app bundle exec rails unicorn:restart

すごく簡易的なやつですが、docker-compose系のコマンドを手打ちしなくて言い分すごく楽です。人によってはalias作ったりshファイルを作成したりしているかもしれませんが、1ファイルにそのプロジェクトで使うコマンドだけを管理できるので、他の方法より管理手間が省けるかと感じてます。


特に強いのがコマンドの補完が効く。make yarn/buildならmakeとtypeしてy + tab、b + tab、でコマンド実行できます。完全に覚えてなくても補完で乗り切れるのは嬉しい。

zsh、fish使っている方なら間違いなく補完できるかと思います。bashユーザーなら bash-completionを入れる必要がありますがMac使っている方ならHomebrewでサクッと入ります。


Makefileには無限の可能性があるんだ、ということを言いたいがための紹介でした。