Slide 1

Slide 1 text

PHP でも活用できる Makefile 第135回 PHP勉強会@東京

Slide 2

Slide 2 text

岡田 正平(おかだ しょうへい)@okashoi • 株式会社ウィルゲート • 最近は Go を書いていた • 2019 年は技術書執筆にチャレンジ! • この資料はすでに公開しています 2 自己紹介

Slide 3

Slide 3 text

みなさん Makefile 使ってますか?

Slide 4

Slide 4 text

4 そうです、あの make です • x

Slide 5

Slide 5 text

• C で書かれたプログラムのためのものでしょ? • 複雑そう • なんかこわい 5 ありがちな印象(私の勝手なイメージ)

Slide 6

Slide 6 text

• C で書かれたプログラムのためのものでしょ? → PHP でも活用できます! • 複雑そう → 仕組み自体はとてもシンプル! • なんかこわい → こわくないよ 6 大丈夫!

Slide 7

Slide 7 text

step 1: タスクランナーとして

Slide 8

Slide 8 text

8 たとえば、こう composer 経由で phpunit をインストール済み

Slide 9

Slide 9 text

9 Makefile の中身

Slide 10

Slide 10 text

10 Makefile の中身 ターゲット名 実行したいコマンド

Slide 11

Slide 11 text

11 make 実行 Makefile に書いておいた コマンドが実行される

Slide 12

Slide 12 text

_人人人人人_ > お手軽 <  ̄Y^Y^Y^Y ̄

Slide 13

Slide 13 text

composer script でよくない......?

Slide 14

Slide 14 text

いや、ほら、"make" の方が "composer" より 4 文字短いし......

Slide 15

Slide 15 text

いや、ほら、"make" の方が "composer" より 4 文字短いし...... というのは半分冗談で!(半分本気)

Slide 16

Slide 16 text

step 2: 依存性の解決

Slide 17

Slide 17 text

17 composer install するまえに実行 phpunit が無いので怒られる

Slide 18

Slide 18 text

18 そこで、こう

Slide 19

Slide 19 text

19 そこで、こう

Slide 20

Slide 20 text

20 そこで、こう

Slide 21

Slide 21 text

21 make 実行 phpunit が存在しなかったら composer install を先に実行

Slide 22

Slide 22 text

• 文字通り指定ファイルを作る(make)する手順が書かれたもの • e.g.) ソースファイルをコンパイルしてバイナリファイルを生成 • .PHONY は実際にはファイルを生成しないことを表している • 依存性解決の仕組みも備わっている • 依存するファイルが存在しない → 依存するファイルを生成するコマンドを実行 • 依存するファイルの方がタイムスタンプが新しい → そのファイルを生成するコマンドを実行しなおす 22 Makefile 本来の用途

Slide 23

Slide 23 text

step 3: より実践的な Makefile

Slide 24

Slide 24 text

24 最後に、こう

Slide 25

Slide 25 text

25 最後に、こう ここまで書いておけば make と PHP さえ動く環境なら(※) テストカバレッジファイルの生成までを make コマンド 一発でやってくれる ※厳密には curl とか git とかも必要

Slide 26

Slide 26 text

make を実行する人は、実際に中で実行されるコマンドを知らなくて良い → ファイル生成のインターフェースとみなせる 活用例 • Docker 環境において • Dockerfile の中で make を使ってビルドしたり • docker run --rm <イメージ名> make で実行したり • CI において • テストの実行コマンド等を Makefile に書いておくことで 開発環境と CI 環境でのコマンドを共通化できる 26 インターフェースとしての Makefile

Slide 27

Slide 27 text

2019年4月14日(日) 技術書典6 にて サークル「サポーターズCoLab」で技術書(合同誌)を出します! 私は「開発・運用保守を楽にする Laravel tips 集」 というテーマを扱います(鋭意執筆中 。。。) 27 さいごに宣伝!

Slide 28

Slide 28 text

「く17」にて、おまちしております!! 28 さいごに宣伝!