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
Shohei Okada
February 25, 2019
Programming
0
31
PHP でも活用できる Makefile
2019-02-27 開催の「第135回 PHP勉強会@東京」におけるLT資料です
https://phpstudy.doorkeeper.jp/events/87344
Shohei Okada
February 25, 2019
Tweet
Share
More Decks by Shohei Okada
See All by Shohei Okada
設計の考え方 - インターフェースと腐敗防止層編 #phpconfuk / Interface and Anti Corruption Layer
okashoi
8
1.9k
"config" ってなんだ? / What is "config"?
okashoi
0
470
ファイル先頭の use の意味、説明できますか? 〜PHP の namespace と autoloading の関係を正しく理解しよう〜 / namespace and autoloading in php
okashoi
2
810
MySQL のインデックスの種類をおさらいしよう! / overviewing indexes in MySQL
okashoi
0
490
PHP における静的解析(あるいはそもそも静的解析とは) / #phpcondo_yasai static analysis for PHP
okashoi
1
310
【PHPカンファレンス沖縄 2023】素朴で考慮漏れのある PHP コードをテストコードとともに補強していく(ライブコーディング補足資料) / #phpcon_okinawa 2023 livecoding supplementary material
okashoi
3
1.7k
その説明、コードコメントに書く?コミットメッセージに書く? プルリクエストに書く? - #phpconfuk 2023
okashoi
3
1.3k
いろいろなフレームワークの仕組みを index.php から読み解こう / index.php of each framework
okashoi
1
2.3k
「登壇しているひとは偉い」という話
okashoi
0
47
Other Decks in Programming
See All in Programming
Android開発者のための Kotlin Multiplatform入門
ntaro
0
190
Architectures with Lightweight Stores: New Rules and Options
manfredsteyer
PRO
0
100
スクラムマスターって孤独じゃないですか?
yoshitaroyoyo
1
140
Product Management LT会_クアンド新家
shinshin
0
210
Xcode 16のPreviewModifierと@Previewableを活用した効率的なプレビュー方法の考察
ojun9
2
160
最近追加した型の紹介とその振り返り
aki19035vc
0
170
コード生成を伴うLLMエージェント - 2024.07.18 Tokyo AI
smiyawaki0820
11
4.1k
初心者がおさえておきたいAWS CDKのベストプラクティス 2024
konokenj
15
7.3k
ぼっちを避けて楽しむためのアノテコノテ / Various Tips and Tricks to Avoid Loneliness and Have Fun
nrslib
3
1.7k
DynamoDB コスト最適化っぽいことの基本 with Terraform
kuro_kurorrr
2
250
Folding Cheat Sheet #7
philipschwarz
PRO
0
150
今こそ始める、CDKコンストラクトライブラリ開発 ― 入門から実践まで
tmokmss
1
930
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
33
6.9k
What's new in Ruby 2.0
geeforr
338
31k
Web Components: a chance to create the future
zenorocha
307
41k
Debugging Ruby Performance
tmm1
71
11k
It's Worth the Effort
3n
181
27k
A designer walks into a library…
pauljervisheath
201
24k
How to Ace a Technical Interview
jacobian
274
23k
Fashionably flexible responsive web design (full day workshop)
malarkey
399
65k
Writing Fast Ruby
sferik
623
60k
The World Runs on Bad Software
bkeepers
PRO
63
11k
Code Reviewing Like a Champion
maltzj
517
39k
Creatively Recalculating Your Daily Design Routine
revolveconf
214
11k
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 さいごに宣伝!