狠狠撸

狠狠撸Share a Scribd company logo
composer並列化?
プラグイン
@Hiraku
自己紹介
? 中野 拓 (@Hiraku)
? 口癖「composerが遅い」?
packagistのミラー作った https://packagist.jp
? 2015/12からメルカリで働いています。
俺
俺
使ってね!
composerは
どこが遅いのか?
composer update で?
実行される処理
1. パッケージ情報取得
2. 依存関係の解析
3. zipダウンロード
1. パッケージ情報取得が遅い
? packagist.orgが日本から遠いことが原因
? 解決策:
? ミラーを作る (https://packagist.jp )?
本家に許可取ったので合法になった
? composer.lockをコミットしておき、?
composer installだけ行う
2. 依存解決が遅い
? (実はそれほど遅くない)
? 解決策:
? PHPを速くする(PHP7、HHVMを使う)
? 良いCPUを使う
3. zipダウンロードが遅い
? github.com からzipをダウンロードする作業
? github.comが遠いのと、?le_get_contentsが
アホの子(コネクション毎回捨てる)
? zipごとミラーするのは大変、良い解決策がな
かった
packagist遅い 依存解決
ダウンロードが?
遅い
composer
update
ミラーを参照する PHP7を使う 遅い
composer.lock?
+
composer
install
(処理スキップ) (処理スキップ) 遅い
本体にパッチを当てるか…
? curlを使えってP-Rは何個か出てる
? https://github.com/composer/composer/issues/
704
? https://github.com/composer/composer/pull/3636
? https://github.com/composer/composer/pull/2696
? 後方互換性の担保でいつも頓挫する
黒歴史
composer本体改善の壁
? 通信周りの 機能が多い上、分割されていなくて再実装するしか
ない
? proxy, github, gitlabの認証対応
? ダウンロード進 の表示
? ユーザー名パスワードを入力させてリトライ
? degradedMode (IPv4強制?)
? これで互換性保つのは確かに面倒くさい
と思ってたらこんな话が
composerプラグインで?
curl化できるらしい…
プラグインなら本体に?
マージされなくても?
試してもらえる?
実績も積める
どうせなら?
並列ダウンロードも?
できるんじゃね?
(できた)
hirak/prestissimo
Composer並列化プラグイン #phpblt
インストール簡単
? composer global require hirak/prestissimo?
って打つと組み込まれる
? composer global remove hirak/prestissimo?
って打つとアンインストールできる
? 有効になってればcomposer update,
composer installなどで勝手に効力を発揮する
prestissimoとは
? composerプラグイン。globalインストールすることで以下の機能を付与する
? curl_multiでの並列zipダウンロード。並列数はカスタマイズ可能?
プラグイン側で先に並列ダウンロードしてキャッシュを暖める
? GitHub API制限緩和(api.github.comを極力叩かない)
? Keep-Alive有効化(HTTPSでも遅くならないよ)
? 互換性担保、速くなること以外はcomposerの動作に影響を与えない
? 「超速く演奏しろ」の意味でプレスティッシモと命名
デモ
人柱募集
? 認証の再実装部分が不安
? 使ってバグ出ししてくれ!!
? プラグインで実績積んで、安定性が認められ
たら本体にマージを提案する計画です
? https://github.com/hirak/prestissimo
参考文献
? http://qiita.com/ngyuki/items/
03f9c6ce0f0db18ace94
? https://github.com/ngyuki/composer-curl-
plugin
? https://getcomposer.org/doc/articles/
plugins.md#event-handler

More Related Content

What's hot (20)

笔贬笔デプロイツールの世界
笔贬笔デプロイツールの世界笔贬笔デプロイツールの世界
笔贬笔デプロイツールの世界
Yuuki Takezawa
?
今日から始める尝补谤补惫别濒
今日から始める尝补谤补惫别濒今日から始める尝补谤补惫别濒
今日から始める尝补谤补惫别濒
Masaru Matsuo
?
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作るLaravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
infinite_loop
?
尝补谤补惫别濒を使ってみた
尝补谤补惫别濒を使ってみた尝补谤补惫别濒を使ってみた
尝补谤补惫别濒を使ってみた
Jaeseop Jeong
?
尝补谤补惫别濒と惭痴颁の先へ
尝补谤补惫别濒と惭痴颁の先へ尝补谤补惫别濒と惭痴颁の先へ
尝补谤补惫别濒と惭痴颁の先へ
Yuuki Takezawa
?
惫颈尘プラグインでよりよい(ry
惫颈尘プラグインでよりよい(ry惫颈尘プラグインでよりよい(ry
惫颈尘プラグインでよりよい(ry
soh335
?
?laravel で学ぶ MVC
 ?laravel で学ぶ MVC ?laravel で学ぶ MVC
?laravel で学ぶ MVC
mikakane
?
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulpphp開発で使うタスクランナー gulp
php開発で使うタスクランナー gulp
Yuuki Takezawa
?
PHP x AWS て?スケーラフ?ルなシステムをつくろう
PHP x AWS て?スケーラフ?ルなシステムをつくろうPHP x AWS て?スケーラフ?ルなシステムをつくろう
PHP x AWS て?スケーラフ?ルなシステムをつくろう
Taiji INOUE
?
最近のPerlバイナリマネージャー Perl 編
最近のPerlバイナリマネージャー Perl 編最近のPerlバイナリマネージャー Perl 編
最近のPerlバイナリマネージャー Perl 編
Tokuhiro Matsuno
?
Symfony勉強会#9 form
Symfony勉強会#9 formSymfony勉強会#9 form
Symfony勉強会#9 form
Yuichi Okada
?
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
7shi
?
贬尝厂について知っていることを话します
贬尝厂について知っていることを话します贬尝厂について知っていることを话します
贬尝厂について知っていることを话します
Moriyoshi Koizumi
?
鲍苍辞蹿蹿颈肠颈补濒颁辞辞办颈苍驳の绍介と搁别诲尘颈苍别本家への贡献
鲍苍辞蹿蹿颈肠颈补濒颁辞辞办颈苍驳の绍介と搁别诲尘颈苍别本家への贡献鲍苍辞蹿蹿颈肠颈补濒颁辞辞办颈苍驳の绍介と搁别诲尘颈苍别本家への贡献
鲍苍辞蹿蹿颈肠颈补濒颁辞辞办颈苍驳の绍介と搁别诲尘颈苍别本家への贡献
Yuuki Nara
?
骋颈迟贬耻产で见つかる贵颈濒别惭补办别谤関连ソフトウェア
骋颈迟贬耻产で见つかる贵颈濒别惭补办别谤関连ソフトウェア骋颈迟贬耻产で见つかる贵颈濒别惭补办别谤関连ソフトウェア
骋颈迟贬耻产で见つかる贵颈濒别惭补办别谤関连ソフトウェア
Atsushi Matsuo
?
Real World PHP in pixiv
Real World PHP in pixivReal World PHP in pixiv
Real World PHP in pixiv
Kenta USAMI
?
Rails解説セミナー: Railsのアッフ?ク?レート?編
Rails解説セミナー: Railsのアッフ?ク?レート?編Rails解説セミナー: Railsのアッフ?ク?レート?編
Rails解説セミナー: Railsのアッフ?ク?レート?編
Yohei Yasukawa
?
ライブストリーミングの基础知识
ライブストリーミングの基础知识ライブストリーミングの基础知识
ライブストリーミングの基础知识
kumaryu
?
Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編
Yohei Yasukawa
?
笔贬笔デプロイツールの世界
笔贬笔デプロイツールの世界笔贬笔デプロイツールの世界
笔贬笔デプロイツールの世界
Yuuki Takezawa
?
今日から始める尝补谤补惫别濒
今日から始める尝补谤补惫别濒今日から始める尝补谤补惫别濒
今日から始める尝补谤补惫别濒
Masaru Matsuo
?
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作るLaravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
infinite_loop
?
尝补谤补惫别濒を使ってみた
尝补谤补惫别濒を使ってみた尝补谤补惫别濒を使ってみた
尝补谤补惫别濒を使ってみた
Jaeseop Jeong
?
尝补谤补惫别濒と惭痴颁の先へ
尝补谤补惫别濒と惭痴颁の先へ尝补谤补惫别濒と惭痴颁の先へ
尝补谤补惫别濒と惭痴颁の先へ
Yuuki Takezawa
?
惫颈尘プラグインでよりよい(ry
惫颈尘プラグインでよりよい(ry惫颈尘プラグインでよりよい(ry
惫颈尘プラグインでよりよい(ry
soh335
?
?laravel で学ぶ MVC
 ?laravel で学ぶ MVC ?laravel で学ぶ MVC
?laravel で学ぶ MVC
mikakane
?
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulpphp開発で使うタスクランナー gulp
php開発で使うタスクランナー gulp
Yuuki Takezawa
?
PHP x AWS て?スケーラフ?ルなシステムをつくろう
PHP x AWS て?スケーラフ?ルなシステムをつくろうPHP x AWS て?スケーラフ?ルなシステムをつくろう
PHP x AWS て?スケーラフ?ルなシステムをつくろう
Taiji INOUE
?
最近のPerlバイナリマネージャー Perl 編
最近のPerlバイナリマネージャー Perl 編最近のPerlバイナリマネージャー Perl 編
最近のPerlバイナリマネージャー Perl 編
Tokuhiro Matsuno
?
Symfony勉強会#9 form
Symfony勉強会#9 formSymfony勉強会#9 form
Symfony勉強会#9 form
Yuichi Okada
?
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
7shi
?
贬尝厂について知っていることを话します
贬尝厂について知っていることを话します贬尝厂について知っていることを话します
贬尝厂について知っていることを话します
Moriyoshi Koizumi
?
鲍苍辞蹿蹿颈肠颈补濒颁辞辞办颈苍驳の绍介と搁别诲尘颈苍别本家への贡献
鲍苍辞蹿蹿颈肠颈补濒颁辞辞办颈苍驳の绍介と搁别诲尘颈苍别本家への贡献鲍苍辞蹿蹿颈肠颈补濒颁辞辞办颈苍驳の绍介と搁别诲尘颈苍别本家への贡献
鲍苍辞蹿蹿颈肠颈补濒颁辞辞办颈苍驳の绍介と搁别诲尘颈苍别本家への贡献
Yuuki Nara
?
骋颈迟贬耻产で见つかる贵颈濒别惭补办别谤関连ソフトウェア
骋颈迟贬耻产で见つかる贵颈濒别惭补办别谤関连ソフトウェア骋颈迟贬耻产で见つかる贵颈濒别惭补办别谤関连ソフトウェア
骋颈迟贬耻产で见つかる贵颈濒别惭补办别谤関连ソフトウェア
Atsushi Matsuo
?
Real World PHP in pixiv
Real World PHP in pixivReal World PHP in pixiv
Real World PHP in pixiv
Kenta USAMI
?
Rails解説セミナー: Railsのアッフ?ク?レート?編
Rails解説セミナー: Railsのアッフ?ク?レート?編Rails解説セミナー: Railsのアッフ?ク?レート?編
Rails解説セミナー: Railsのアッフ?ク?レート?編
Yohei Yasukawa
?
ライブストリーミングの基础知识
ライブストリーミングの基础知识ライブストリーミングの基础知识
ライブストリーミングの基础知识
kumaryu
?
Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編
Yohei Yasukawa
?

Similar to Composer並列化プラグイン #phpblt (7)

Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!
Sotaro Omura
?
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3
mganeko
?
20150317 firefox os勉強会
20150317 firefox os勉強会20150317 firefox os勉強会
20150317 firefox os勉強会
Naoki Sekiguchi
?
もしWordPressユーザーがGitを使ったら ?WordPressテーマを共同編集しよう?
もしWordPressユーザーがGitを使ったら ?WordPressテーマを共同編集しよう?もしWordPressユーザーがGitを使ったら ?WordPressテーマを共同編集しよう?
もしWordPressユーザーがGitを使ったら ?WordPressテーマを共同編集しよう?
Takashi Uemura
?
今さら聞けない人のためのGit超入門 OSC2018広島版
今さら聞けない人のためのGit超入門 OSC2018広島版今さら聞けない人のためのGit超入門 OSC2018広島版
今さら聞けない人のためのGit超入門 OSC2018広島版
VirtualTech Japan Inc./Begi.net Inc.
?
第8回 HoloLens 参考書 読書会
第8回 HoloLens 参考書 読書会第8回 HoloLens 参考書 読書会
第8回 HoloLens 参考書 読書会
Masashi Eguchi
?
Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!
Sotaro Omura
?
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3
mganeko
?
20150317 firefox os勉強会
20150317 firefox os勉強会20150317 firefox os勉強会
20150317 firefox os勉強会
Naoki Sekiguchi
?
もしWordPressユーザーがGitを使ったら ?WordPressテーマを共同編集しよう?
もしWordPressユーザーがGitを使ったら ?WordPressテーマを共同編集しよう?もしWordPressユーザーがGitを使ったら ?WordPressテーマを共同編集しよう?
もしWordPressユーザーがGitを使ったら ?WordPressテーマを共同編集しよう?
Takashi Uemura
?
第8回 HoloLens 参考書 読書会
第8回 HoloLens 参考書 読書会第8回 HoloLens 参考書 読書会
第8回 HoloLens 参考書 読書会
Masashi Eguchi
?

More from Hiraku Nakano (6)

Scrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudyScrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudy
Hiraku Nakano
?
JSON SchemaとPHP
JSON SchemaとPHPJSON SchemaとPHP
JSON SchemaとPHP
Hiraku Nakano
?
こわくない同时実行制御
こわくない同时実行制御こわくない同时実行制御
こわくない同时実行制御
Hiraku Nakano
?
辫别肠濒-础翱笔の绍介
辫别肠濒-础翱笔の绍介辫别肠濒-础翱笔の绍介
辫别肠濒-础翱笔の绍介
Hiraku Nakano
?
鲍搁尝で游ぼう
鲍搁尝で游ぼう鲍搁尝で游ぼう
鲍搁尝で游ぼう
Hiraku Nakano
?
Scrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudyScrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudy
Hiraku Nakano
?
こわくない同时実行制御
こわくない同时実行制御こわくない同时実行制御
こわくない同时実行制御
Hiraku Nakano
?
辫别肠濒-础翱笔の绍介
辫别肠濒-础翱笔の绍介辫别肠濒-础翱笔の绍介
辫别肠濒-础翱笔の绍介
Hiraku Nakano
?

Composer並列化プラグイン #phpblt