Submit Search
Upload
PHP でも活用できる Makefile
•
0 likes
•
1,268 views
Shohei Okada
Follow
2019-02-27 開催の「第135回 PHP勉強会@東京」におけるLT資料です https://phpstudy.doorkeeper.jp/events/87344
Read less
Read more
Software
Report
Share
Report
Share
1 of 28
Download now
Download to read offline
Recommended
例外設計における大罪
例外設計における大罪
Takuto Wada
Flutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたもの
Recruit Lifestyle Co., Ltd.
型安全性入門
型安全性入門
Akinori Abe
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話
健一 辰濱
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
View customize pluginを使いこなす
View customize pluginを使いこなす
onozaty
RedmineのFAQとアンチパターン集
RedmineのFAQとアンチパターン集
akipii Oga
NVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 Linux
Tomoki SHISHIKURA
Recommended
例外設計における大罪
例外設計における大罪
Takuto Wada
Flutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたもの
Recruit Lifestyle Co., Ltd.
型安全性入門
型安全性入門
Akinori Abe
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話
健一 辰濱
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
View customize pluginを使いこなす
View customize pluginを使いこなす
onozaty
RedmineのFAQとアンチパターン集
RedmineのFAQとアンチパターン集
akipii Oga
NVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 Linux
Tomoki SHISHIKURA
世界最強のソフトウェアアーキテクト
世界最強のソフトウェアアーキテクト
Yahoo!デベロッパーネットワーク
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
onozaty
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Yoshiki Hayama
PostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
Ruby 3のキーワード引数について考える
Ruby 3のキーワード引数について考える
mametter
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
はじめてのPRD
はじめてのPRD
Takuya Oikawa
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
社内のマニュアルをSphinxで作ってみた
社内のマニュアルをSphinxで作ってみた
Iosif Takakura
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
onozaty
工数把握のすすめ 〜WorkTimeプラグインの使い方〜
工数把握のすすめ 〜WorkTimeプラグインの使い方〜
Tomohisa Kusukawa
【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay
Takayuki Shimizukawa
View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)
onozaty
うちのRedmineの使い方(2)
うちのRedmineの使い方(2)
Tomohisa Kusukawa
Twitterのsnowflakeについて
Twitterのsnowflakeについて
moai kids
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Tokoroten Nakayama
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみた
Kohei Nakamura
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
レンタルサーバで今すぐ始めるWEB開発
レンタルサーバで今すぐ始めるWEB開発
Naoyuki Kataoka
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
More Related Content
What's hot
世界最強のソフトウェアアーキテクト
世界最強のソフトウェアアーキテクト
Yahoo!デベロッパーネットワーク
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
onozaty
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Yoshiki Hayama
PostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
Ruby 3のキーワード引数について考える
Ruby 3のキーワード引数について考える
mametter
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
はじめてのPRD
はじめてのPRD
Takuya Oikawa
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
社内のマニュアルをSphinxで作ってみた
社内のマニュアルをSphinxで作ってみた
Iosif Takakura
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
onozaty
工数把握のすすめ 〜WorkTimeプラグインの使い方〜
工数把握のすすめ 〜WorkTimeプラグインの使い方〜
Tomohisa Kusukawa
【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay
Takayuki Shimizukawa
View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)
onozaty
うちのRedmineの使い方(2)
うちのRedmineの使い方(2)
Tomohisa Kusukawa
Twitterのsnowflakeについて
Twitterのsnowflakeについて
moai kids
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Tokoroten Nakayama
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみた
Kohei Nakamura
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
What's hot
(20)
世界最強のソフトウェアアーキテクト
世界最強のソフトウェアアーキテクト
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
PostgreSQLアンチパターン
PostgreSQLアンチパターン
Ruby 3のキーワード引数について考える
Ruby 3のキーワード引数について考える
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
はじめてのPRD
はじめてのPRD
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
社内のマニュアルをSphinxで作ってみた
社内のマニュアルをSphinxで作ってみた
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
工数把握のすすめ 〜WorkTimeプラグインの使い方〜
工数把握のすすめ 〜WorkTimeプラグインの使い方〜
【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay
View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)
うちのRedmineの使い方(2)
うちのRedmineの使い方(2)
Twitterのsnowflakeについて
Twitterのsnowflakeについて
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみた
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Similar to PHP でも活用できる Makefile
レンタルサーバで今すぐ始めるWEB開発
レンタルサーバで今すぐ始めるWEB開発
Naoyuki Kataoka
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
keroyonn
なんとかStormに負けたくないEmacs初級篇
なんとかStormに負けたくないEmacs初級篇
Kenta USAMI
Swift afterbeginner
Swift afterbeginner
Kiminari Homma
excelファイルをプログラムで出力しよう
excelファイルをプログラムで出力しよう
yuji0602
Swift afterbeginner
Swift afterbeginner
Kiminari Homma
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Takeshi Komiya
Macで快適にプログラミング
Macで快適にプログラミング
Yusuke Sakurai
PHP with Visual Studio
PHP with Visual Studio
Keiichi Kobayashi
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
Fumihito Yokoyama
goog.require()を手書きしていいのは小学生まで
goog.require()を手書きしていいのは小学生まで
Teppei Sato
第1回勉強会
第1回勉強会
Yukie Kanzawa
CodingTips+ 基礎編
CodingTips+ 基礎編
Yusuke Ito
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作る
Yoshio Hanawa
趣味プロダクトで楽しいコードライフワークを送る
趣味プロダクトで楽しいコードライフワークを送る
volpe_hd28v
Delphi ideを使わない開発スタイルの紹介
Delphi ideを使わない開発スタイルの紹介
Shinya Okano
Emacsを使ってrubyのwebアプリを作って見た!!
Emacsを使ってrubyのwebアプリを作って見た!!
Ueki Kouji
PHPUnitでリファクタリング
PHPUnitでリファクタリング
Takako Miyagawa
ウェブエンジニアとしての1年目を振り返って
ウェブエンジニアとしての1年目を振り返って
Kohki Yamagiwa
Similar to PHP でも活用できる Makefile
(20)
レンタルサーバで今すぐ始めるWEB開発
レンタルサーバで今すぐ始めるWEB開発
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
なんとかStormに負けたくないEmacs初級篇
なんとかStormに負けたくないEmacs初級篇
Swift afterbeginner
Swift afterbeginner
excelファイルをプログラムで出力しよう
excelファイルをプログラムで出力しよう
Swift afterbeginner
Swift afterbeginner
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Macで快適にプログラミング
Macで快適にプログラミング
PHP with Visual Studio
PHP with Visual Studio
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
goog.require()を手書きしていいのは小学生まで
goog.require()を手書きしていいのは小学生まで
第1回勉強会
第1回勉強会
CodingTips+ 基礎編
CodingTips+ 基礎編
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作る
趣味プロダクトで楽しいコードライフワークを送る
趣味プロダクトで楽しいコードライフワークを送る
Delphi ideを使わない開発スタイルの紹介
Delphi ideを使わない開発スタイルの紹介
Emacsを使ってrubyのwebアプリを作って見た!!
Emacsを使ってrubyのwebアプリを作って見た!!
PHPUnitでリファクタリング
PHPUnitでリファクタリング
ウェブエンジニアとしての1年目を振り返って
ウェブエンジニアとしての1年目を振り返って
More from Shohei Okada
「登壇しているひとは偉い」という話
「登壇しているひとは偉い」という話
Shohei Okada
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
Shohei Okada
PHP 8.0 の新記法を試してみよう!
PHP 8.0 の新記法を試してみよう!
Shohei Okada
自分たちのコードを Composer パッケージに分割して開発する
自分たちのコードを Composer パッケージに分割して開発する
Shohei Okada
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #shuuumai
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #shuuumai
Shohei Okada
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
Shohei Okada
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpcondo
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpcondo
Shohei Okada
Laravel でやってみるクリーンアーキテクチャ #phpconfuk
Laravel でやってみるクリーンアーキテクチャ #phpconfuk
Shohei Okada
エラー時にログに出力する情報と画面に表示する情報を分ける #LaravelTokyo
エラー時にログに出力する情報と画面に表示する情報を分ける #LaravelTokyo
Shohei Okada
スペシャリストとして組織をつくる、というキャリア
スペシャリストとして組織をつくる、というキャリア
Shohei Okada
はじめての Go 言語のプロジェクトを AWS Lambda + API Gateway でやったのでパッケージ構成を晒すよ
はじめての Go 言語のプロジェクトを AWS Lambda + API Gateway でやったのでパッケージ構成を晒すよ
Shohei Okada
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Shohei Okada
働き方が大きく変わった 入社3年目のときのとあるエピソード
働き方が大きく変わった 入社3年目のときのとあるエピソード
Shohei Okada
Laravel で API バージョニングを実装するなら
Laravel で API バージョニングを実装するなら
Shohei Okada
Laravel における Blade 拡張のツラミ
Laravel における Blade 拡張のツラミ
Shohei Okada
Laravel の paginate は一体何をやっているのか
Laravel の paginate は一体何をやっているのか
Shohei Okada
2017 年度を振り返って ~アウトプット編~
2017 年度を振り返って ~アウトプット編~
Shohei Okada
Laravel × レイヤードアーキテクチャをやってみている話
Laravel × レイヤードアーキテクチャをやってみている話
Shohei Okada
Laravel 5.6 デフォルトの例外ハンドリング処理をまとめてみた
Laravel 5.6 デフォルトの例外ハンドリング処理をまとめてみた
Shohei Okada
チームで「きちんと」Laravel を使っていくための取り組み
チームで「きちんと」Laravel を使っていくための取り組み
Shohei Okada
More from Shohei Okada
(20)
「登壇しているひとは偉い」という話
「登壇しているひとは偉い」という話
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP 8.0 の新記法を試してみよう!
PHP 8.0 の新記法を試してみよう!
自分たちのコードを Composer パッケージに分割して開発する
自分たちのコードを Composer パッケージに分割して開発する
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #shuuumai
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #shuuumai
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpcondo
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpcondo
Laravel でやってみるクリーンアーキテクチャ #phpconfuk
Laravel でやってみるクリーンアーキテクチャ #phpconfuk
エラー時にログに出力する情報と画面に表示する情報を分ける #LaravelTokyo
エラー時にログに出力する情報と画面に表示する情報を分ける #LaravelTokyo
スペシャリストとして組織をつくる、というキャリア
スペシャリストとして組織をつくる、というキャリア
はじめての Go 言語のプロジェクトを AWS Lambda + API Gateway でやったのでパッケージ構成を晒すよ
はじめての Go 言語のプロジェクトを AWS Lambda + API Gateway でやったのでパッケージ構成を晒すよ
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
働き方が大きく変わった 入社3年目のときのとあるエピソード
働き方が大きく変わった 入社3年目のときのとあるエピソード
Laravel で API バージョニングを実装するなら
Laravel で API バージョニングを実装するなら
Laravel における Blade 拡張のツラミ
Laravel における Blade 拡張のツラミ
Laravel の paginate は一体何をやっているのか
Laravel の paginate は一体何をやっているのか
2017 年度を振り返って ~アウトプット編~
2017 年度を振り返って ~アウトプット編~
Laravel × レイヤードアーキテクチャをやってみている話
Laravel × レイヤードアーキテクチャをやってみている話
Laravel 5.6 デフォルトの例外ハンドリング処理をまとめてみた
Laravel 5.6 デフォルトの例外ハンドリング処理をまとめてみた
チームで「きちんと」Laravel を使っていくための取り組み
チームで「きちんと」Laravel を使っていくための取り組み
PHP でも活用できる Makefile
1.
PHP でも活用できる Makefile 第135回 PHP勉強会@東京
2.
岡田 正平(おかだ しょうへい)@okashoi •
株式会社ウィルゲート • 最近は Go を書いていた • 2019 年は技術書執筆にチャレンジ! • この資料はすでに公開しています 2 自己紹介
3.
みなさん Makefile 使ってますか?
4.
4 そうです、あの make です •
x
5.
• C で書かれたプログラムのためのものでしょ? •
複雑そう • なんかこわい 5 ありがちな印象(私の勝手なイメージ)
6.
• C で書かれたプログラムのためのものでしょ? →
PHP でも活用できます! • 複雑そう → 仕組み自体はとてもシンプル! • なんかこわい → こわくないよ 6 大丈夫!
7.
step 1: タスクランナーとして
8.
8 たとえば、こう composer 経由で phpunit をインストール済み
9.
9 Makefile の中身
10.
10 Makefile の中身 ターゲット名 実行したいコマンド
11.
11 make 実行 Makefile に書いておいた コマンドが実行される
12.
_人人人人人_ > お手軽 <  ̄Y^Y^Y^Y ̄
13.
composer script でよくない......?
14.
いや、ほら、"make" の方が "composer" より
4 文字短いし......
15.
いや、ほら、"make" の方が "composer" より
4 文字短いし...... というのは半分冗談で!(半分本気)
16.
step 2: 依存性の解決
17.
17 composer install するまえに実行 phpunit
が無いので怒られる
18.
18 そこで、こう
19.
19 そこで、こう
20.
20 そこで、こう
21.
21 make 実行 phpunit が存在しなかったら composer
install を先に実行
22.
• 文字通り指定ファイルを作る(make)する手順が書かれたもの • e.g.)
ソースファイルをコンパイルしてバイナリファイルを生成 • .PHONY は実際にはファイルを生成しないことを表している • 依存性解決の仕組みも備わっている • 依存するファイルが存在しない → 依存するファイルを生成するコマンドを実行 • 依存するファイルの方がタイムスタンプが新しい → そのファイルを生成するコマンドを実行しなおす 22 Makefile 本来の用途
23.
step 3: より実践的な
Makefile
24.
24 最後に、こう
25.
25 最後に、こう ここまで書いておけば make と PHP
さえ動く環境なら(※) テストカバレッジファイルの生成までを make コマンド 一発でやってくれる ※厳密には curl とか git とかも必要
26.
make を実行する人は、実際に中で実行されるコマンドを知らなくて良い → ファイル生成のインターフェースとみなせる 活用例 •
Docker 環境において • Dockerfile の中で make を使ってビルドしたり • docker run --rm <イメージ名> make で実行したり • CI において • テストの実行コマンド等を Makefile に書いておくことで 開発環境と CI 環境でのコマンドを共通化できる 26 インターフェースとしての Makefile
27.
2019年4月14日(日) 技術書典6 にて サークル「サポーターズCoLab」で技術書(合同誌)を出します! 私は「開発・運用保守を楽にする
Laravel tips 集」 というテーマを扱います(鋭意執筆中 。。。) 27 さいごに宣伝!
28.
「く17」にて、おまちしております!! 28 さいごに宣伝!
Download now