Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHP でも活用できる Makefile

PHP でも活用できる Makefile

2019-02-27 開催の「第135回 PHP勉強会@東京」におけるLT資料です

https://phpstudy.doorkeeper.jp/events/87344

Shohei Okada

February 25, 2019
Tweet

More Decks by Shohei Okada

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  9. 9
    Makefile の中身

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. step 2: 依存性の解決

    View Slide

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

    View Slide

  18. 18
    そこで、こう

    View Slide

  19. 19
    そこで、こう

    View Slide

  20. 20
    そこで、こう

    View Slide

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

    View Slide

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

    View Slide

  23. step 3: より実践的な Makefile

    View Slide

  24. 24
    最後に、こう

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide