Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PHP でも活用できる Makefile
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Shohei Okada
February 25, 2019
Programming
66
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PHP でも活用できる Makefile
2019-02-27 開催の「第135回 PHP勉強会@東京」におけるLT資料です
https://phpstudy.doorkeeper.jp/events/87344
Shohei Okada
February 25, 2019
More Decks by Shohei Okada
See All by Shohei Okada
Symfony + NelmioApiDocBundle を使った スキーマ駆動開発 / Schema Driven Development with NelmioApiDocBundle
okashoi
0
300
たった 1 枚の PHP ファイルで実装する MCP サーバ / MCP Server with Vanilla PHP
okashoi
1
930
どうして手を動かすよりもチーム内のコードレビューを優先するべきなのか
okashoi
3
2.3k
パスワードのハッシュ、ソルトってなに? - What is hash and salt for password?
okashoi
3
400
設計の考え方 - インターフェースと腐敗防止層編 #phpconfuk / Interface and Anti Corruption Layer
okashoi
11
6.1k
"config" ってなんだ? / What is "config"?
okashoi
0
1.8k
ファイル先頭の use の意味、説明できますか? 〜PHP の namespace と autoloading の関係を正しく理解しよう〜 / namespace and autoloading in php
okashoi
4
2.2k
MySQL のインデックスの種類をおさらいしよう! / overviewing indexes in MySQL
okashoi
0
1.4k
PHP における静的解析(あるいはそもそも静的解析とは) / #phpcondo_yasai static analysis for PHP
okashoi
1
1.5k
Other Decks in Programming
See All in Programming
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
190
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
350
TypeSpec で繋ぐ複数プロダクトの型安全
maroon8021
1
410
Inside Stream API
skrb
1
650
AIエージェントと協働するCLI開発 — BunとOpenClawで学んだこと
yoshikouki
1
240
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
17
6.1k
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
500
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
550
Agentic UI
manfredsteyer
PRO
0
110
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
160
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
460
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
0
8.5k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
600
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
400
Prompt Engineering for Job Search
mfonobong
0
330
Navigating Team Friction
lara
192
16k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
The Curse of the Amulet
leimatthew05
1
13k
Designing Experiences People Love
moore
143
24k
Design in an AI World
tapps
1
220
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Site-Speed That Sticks
csswizardry
13
1.2k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
420
Transcript
PHP でも活用できる Makefile 第135回 PHP勉強会@東京
岡田 正平(おかだ しょうへい)@okashoi • 株式会社ウィルゲート • 最近は Go を書いていた •
2019 年は技術書執筆にチャレンジ! • この資料はすでに公開しています 2 自己紹介
みなさん Makefile 使ってますか?
4 そうです、あの make です • x
• C で書かれたプログラムのためのものでしょ? • 複雑そう • なんかこわい 5 ありがちな印象(私の勝手なイメージ)
• C で書かれたプログラムのためのものでしょ? → PHP でも活用できます! • 複雑そう → 仕組み自体はとてもシンプル!
• なんかこわい → こわくないよ 6 大丈夫!
step 1: タスクランナーとして
8 たとえば、こう composer 経由で phpunit をインストール済み
9 Makefile の中身
10 Makefile の中身 ターゲット名 実行したいコマンド
11 make 実行 Makefile に書いておいた コマンドが実行される
_人人人人人_ > お手軽 <  ̄Y^Y^Y^Y ̄
composer script でよくない......?
いや、ほら、"make" の方が "composer" より 4 文字短いし......
いや、ほら、"make" の方が "composer" より 4 文字短いし...... というのは半分冗談で!(半分本気)
step 2: 依存性の解決
17 composer install するまえに実行 phpunit が無いので怒られる
18 そこで、こう
19 そこで、こう
20 そこで、こう
21 make 実行 phpunit が存在しなかったら composer install を先に実行
• 文字通り指定ファイルを作る(make)する手順が書かれたもの • e.g.) ソースファイルをコンパイルしてバイナリファイルを生成 • .PHONY は実際にはファイルを生成しないことを表している • 依存性解決の仕組みも備わっている
• 依存するファイルが存在しない → 依存するファイルを生成するコマンドを実行 • 依存するファイルの方がタイムスタンプが新しい → そのファイルを生成するコマンドを実行しなおす 22 Makefile 本来の用途
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 さいごに宣伝!