2019-02-27 開催の「第135回 PHP勉強会@東京」におけるLT資料です
https://phpstudy.doorkeeper.jp/events/87344
PHP でも活用できるMakefile第135回 PHP勉強会@東京
View Slide
岡田 正平(おかだ しょうへい)@okashoi• 株式会社ウィルゲート• 最近は Go を書いていた• 2019 年は技術書執筆にチャレンジ!• この資料はすでに公開しています2自己紹介
みなさん Makefile使ってますか?
4そうです、あの make です• x
• C で書かれたプログラムのためのものでしょ?• 複雑そう• なんかこわい5ありがちな印象(私の勝手なイメージ)
• C で書かれたプログラムのためのものでしょ?→ PHP でも活用できます!• 複雑そう→ 仕組み自体はとてもシンプル!• なんかこわい→ こわくないよ6大丈夫!
step 1: タスクランナーとして
8たとえば、こうcomposer 経由でphpunit をインストール済み
9Makefile の中身
10Makefile の中身ターゲット名実行したいコマンド
11make 実行Makefile に書いておいたコマンドが実行される
_人人人人人_> お手軽 < ̄Y^Y^Y^Y ̄
composer scriptでよくない......?
いや、ほら、"make" の方が"composer" より 4 文字短いし......
いや、ほら、"make" の方が"composer" より 4 文字短いし......というのは半分冗談で!(半分本気)
step 2: 依存性の解決
17composer install するまえに実行phpunit が無いので怒られる
18そこで、こう
19そこで、こう
20そこで、こう
21make 実行phpunit が存在しなかったらcomposer install を先に実行
• 文字通り指定ファイルを作る(make)する手順が書かれたもの• e.g.) ソースファイルをコンパイルしてバイナリファイルを生成• .PHONY は実際にはファイルを生成しないことを表している• 依存性解決の仕組みも備わっている• 依存するファイルが存在しない→ 依存するファイルを生成するコマンドを実行• 依存するファイルの方がタイムスタンプが新しい→ そのファイルを生成するコマンドを実行しなおす22Makefile 本来の用途
step 3: より実践的な Makefile
24最後に、こう
25最後に、こうここまで書いておけばmake と PHP さえ動く環境なら(※)テストカバレッジファイルの生成までをmake コマンド 一発でやってくれる※厳密には curl とか git とかも必要
make を実行する人は、実際に中で実行されるコマンドを知らなくて良い→ ファイル生成のインターフェースとみなせる活用例• Docker 環境において• Dockerfile の中で make を使ってビルドしたり• docker run --rm <イメージ名> make で実行したり• CI において• テストの実行コマンド等を Makefile に書いておくことで開発環境と CI 環境でのコマンドを共通化できる26インターフェースとしての Makefile
2019年4月14日(日) 技術書典6 にてサークル「サポーターズCoLab」で技術書(合同誌)を出します!私は「開発・運用保守を楽にする Laravel tips 集」というテーマを扱います(鋭意執筆中 。。。)27さいごに宣伝!
「く17」にて、おまちしております!!28さいごに宣伝!