Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
PHP でも活用できる Makefile
Search
Shohei Okada
February 25, 2019
Programming
68
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
380
たった 1 枚の PHP ファイルで実装する MCP サーバ / MCP Server with Vanilla PHP
okashoi
1
1.1k
どうして手を動かすよりもチーム内のコードレビューを優先するべきなのか
okashoi
3
2.4k
パスワードのハッシュ、ソルトってなに? - What is hash and salt for password?
okashoi
3
450
設計の考え方 - インターフェースと腐敗防止層編 #phpconfuk / Interface and Anti Corruption Layer
okashoi
11
6.6k
"config" ってなんだ? / What is "config"?
okashoi
0
2k
ファイル先頭の use の意味、説明できますか? 〜PHP の namespace と autoloading の関係を正しく理解しよう〜 / namespace and autoloading in php
okashoi
4
2.3k
MySQL のインデックスの種類をおさらいしよう! / overviewing indexes in MySQL
okashoi
0
1.5k
PHP における静的解析(あるいはそもそも静的解析とは) / #phpcondo_yasai static analysis for PHP
okashoi
1
1.5k
Other Decks in Programming
See All in Programming
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
6
13k
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.2k
Security issues being discussed on Web Platforms
petamoriken
0
1.2k
AWSに止められる覚悟してますか?
morizo_1984
1
300
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
250
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
220
Workers Cache を知る
syumai
0
250
App Intentsのビルドプロセスを支える技術
kntkymt
0
430
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
930
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
300
Are APIs Still Relevant in the AI Era?
soyuka
0
310
Webの地図
yosuke_furukawa
PRO
6
4.7k
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
Automating Front-end Workflow
addyosmani
1369
210k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
Become a Pro
speakerdeck
PRO
31
6.3k
Being A Developer After 40
akosma
91
590k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Prompt Engineering for Job Search
mfonobong
0
460
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 さいごに宣伝!