Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
packagist.jpの紹介と新機能 /#phpblt
Hiraku NAKANO
July 20, 2016
Technology
4
2.3k
packagist.jpの紹介と新機能 /#phpblt
Hiraku NAKANO
July 20, 2016
Tweet
Share
More Decks by Hiraku NAKANO
See All by Hiraku NAKANO
iD決済を支える技術 / #merpay_techtalk
hirak
33
6.6k
github.com/mercari の今と昔 /github-mercari
hirak
8
2.7k
PHPStanで始める継続的静的解析 #phperkaigi /php-static-analysis
hirak
13
46k
極める!メソッドチェーン #phpstudy / fluent-interface
hirak
8
2.3k
evalこそパワー #phpkansai / phpkansai2017
hirak
2
1.1k
PHPのエラーと例外再入門 / php-error-and-exception
hirak
18
17k
メルカリ JP Tech Side / mercari-jp-tech-side
hirak
7
1.6k
グローバル展開を支える量子的なサービス設計 #mercariday / mercariday2017-api
hirak
22
13k
Composerプラグインを作ってみよう /phpcon2016
hirak
5
13k
Other Decks in Technology
See All in Technology
SmartHRからOktaへのSCIM連携で作り出すHRドリブンのアカウント管理
jousysmiler
1
120
スクラム導入して変わったチーム、組織のありかた
yumechi
0
190
OVN-Kubernetes-Introduction-ja-2023-01-27.pdf
orimanabu
1
330
AWS Cloud Forensics & Incident Response
e11i0t_4lders0n
0
270
Multi-Cloud Gatewayでデータを統治せよ!/ Data Federation with MCG
tutsunom
1
230
OCI DevOps 概要 / OCI DevOps overview
oracle4engineer
PRO
0
490
私見「UNIXの考え方」/20230124-kameda-unix-phylosophy
opelab
0
160
WebLogic Server for OCI 概要
oracle4engineer
PRO
3
880
02_プロトタイピングの進め方
kouzoukaikaku
0
400
Airdrop for Open Source Projects
epicsdao
0
680
ユーザーテストガイドライン VERSION 2.0
kouzoukaikaku
0
1.2k
Pentesting Password Reset Functionality
anugrahsr
0
450
Featured
See All Featured
Done Done
chrislema
178
14k
Testing 201, or: Great Expectations
jmmastey
25
5.7k
How GitHub (no longer) Works
holman
298
140k
Building Your Own Lightsaber
phodgson
96
4.9k
Web development in the modern age
philhawksworth
197
9.6k
4 Signs Your Business is Dying
shpigford
171
20k
jQuery: Nuts, Bolts and Bling
dougneiner
57
6.6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
224
50k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
6
840
Automating Front-end Workflow
addyosmani
1351
200k
What’s in a name? Adding method to the madness
productmarketing
12
1.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
38
3.6k
Transcript
packagist.jpͷհͱ ৽ػೳ PHPBLT #5
ࣗݾհ • @Hiraku (த ) • PHPΧϯϑΝϨϯεؔ2016Ͱ جௐߨԋ͖ͯͨ͠ͱ͜ΖͰ͢ http://tech.mercari.com/entry/2016/07/20/ 160602
ComposerͷߴԽ • hirak/prestissimo ͱ͍͏ComposerϓϥάΠ ϯΛ࡞͍ͬͯ·͢ɻͬͯΈͯͶʂ composer global require 'hirak/prestissimo' ͋ͱউखʹinstall/update࣌ʹൃಈ
ࠓpackagistͷΛ ͠·͢
None
None
packagist.jp • packagist.org Λ2͓͖ʹϛϥʔϦϯάͯ͠ ͍·͢ • ຊՈͷΘΓʹࢦఆ͢Δͱcomposer update ͕രʹͳΔ (ίϚϯυҰߦ)
composer conf -g repos.packagist composer https://packagist.jp
2͝ͱϛϥʔϦϯάΛ ࣮ݱ͢Δٕज़
ී௨ʹΔͱग़དྷͳ͍ • packagistͷશσʔλΛૉʹμϯϩʔυ͢ Δͱ͔͔࣌ؒΔ • ొύοέʔδʹൺྫ͕͔͔ͯ࣌ؒ͠Δ ΈͰഁ͢Δ • ࠩߋ৽͔͠ͳ͍
packagistͷJSON3֊ • packages.json • provider-includes.json (ύοέʔδͷϦετใɺ8~9ݸ͙Β͍) • p/vendor/package.json (ύοέʔδ໊͝ͱ) •
શ෦Ͱ6ສϑΝΠϧ͙Β͍
packages.json ͷத { "packages": [], "notify": "https://packagist.org/downloads/%package%", "notify-batch": "https://packagist.org/downloads/", "providers-url":
"/p/%package%$%hash%.json", "search": "https://packagist.org/search.json?q=%query%&type=%type%", "provider-includes": { "p/provider-2013$%hash%.json": { "sha256": "4fe03986e11f75b311587794dec3504703f3d6f7c94f8fa9209f1352ecd1e64d" }, "p/provider-2014$%hash%.json": { "sha256": "b4e49c6935fb2b001aec67c541d48dea449937d19d8dda54c3bc6a53243f05cf" },
provider-includes.json { "providers": { "0s1r1s/dev-shortcuts-bundle": { "sha256": "6c7710a1ca26d3c0f9dfc4c34bc3d6e71ed88d8783847ed82079601401e29b18" }, "0x20h/monoconf":
{ "sha256": "9515a0ee8fce44be80ed35292384c2f908cabbf6a710099f4743b710bc47607e" }, "11ya/excelbundle": { "sha256": "65dccb7f2d57c09c19519c1b3cdf7cbace1dfbf46f43736c2afcb95658d9c0f1" }, "1stvamp/phpweekly.info": { "sha256": "f4bbac09368b0b8c7122cae19f1ce57fa5808d691fa58b6aac9e257920dded71" }, "2085020/zendframework1": { "sha256": "360c3ede3c3572ef5f0d0209deac197e6d7f59d7899cad0ec9a45f7d5de9fa84" },
Լͷϋογϡͷൖ • packages.json͕provider-includesͷϋογϡ Λ͑Δ • provider-includes.json͕֤packageͷϋο γϡΛ͑Δ • ϋογϡ͕ҧ͏=ߋ৽͕͋ͬͨ߹ͷΈ
ࠩߋ৽ͷݪཧ • jsonϑΝΠϧͷsha256Λܭࢉɺผͷ͕͋Δ ͱ͖͚ͩμϯϩʔυ • 2͓͖ͩͱ10~20ϑΝΠϧ͙Β͍ͰࡁΉͷͰ ߴʹߋ৽Ͱ͖Δ • ͍͖ͳΓcronճ͢ͱࢮ͵ ༧Ί࣌ؒΛ͔͚ͯશ෦μϯϩʔυ͓ͯ͘͠
packagist๊͕͍͑ͯΔ
provider-includes.jsonͷ ංେԽ
provider-includes.json ͱ • ύοέʔδ໊ͷҰཡͱɺͦͷϋογϡΛه ͨ͠ϑΝΠϧ • 9ϑΝΠϧʹׂ͞ΕͯΔ(20167݄20ݱ ࡏ) • composer
update࣌ʹશ෦μϯϩʔυ͢Δ
provider-includes.json { "providers": { "0s1r1s/dev-shortcuts-bundle": { "sha256": "6c7710a1ca26d3c0f9dfc4c34bc3d6e71ed88d8783847ed82079601401e29b18" }, "0x20h/monoconf":
{ "sha256": "9515a0ee8fce44be80ed35292384c2f908cabbf6a710099f4743b710bc47607e" }, "11ya/excelbundle": { "sha256": "65dccb7f2d57c09c19519c1b3cdf7cbace1dfbf46f43736c2afcb95658d9c0f1" }, "1stvamp/phpweekly.info": { "sha256": "f4bbac09368b0b8c7122cae19f1ce57fa5808d691fa58b6aac9e257920dded71" }, "2085020/zendframework1": { "sha256": "360c3ede3c3572ef5f0d0209deac197e6d7f59d7899cad0ec9a45f7d5de9fa84" },
͜Ε͕ͱʹ͔͘σΧ͍
શ෦Ͱ10MB͙Β͍ 768636 p-provider-2013.json 1673380 p-provider-2014.json 1035890 p-provider-2015-10.json 2219849 p-provider-2015.json 1532856
p-provider-2016-01.json 2365598 p-provider-2016-04.json 447928 p-provider-2016-07.json 173629 p-provider-archived.json 699951 p-provider-latest.json 10917717 total
10MBͬͯผʹେ͖͘ͳ͍Μ ͡Όʁͱࢥͬͨਓ͍
ొύοέʔδʹԠͯ͡૿େ ͢ΔϑΝΠϧͳͷͰ͢ • ࠓ10ສύοέʔδͰ10MB͚ͩͲɺ • 100ສύοέʔδͳΒ100MB • 1000ສύοέʔδͳΒ1GB • composer
update͢Δʹμϯϩʔυ͢Δ
ճઢ͕ࡉ͍ͱͭΒ͍ͭ • ҰԠɺύοέʔδͷߋ৽සͷߴ͞͝ͱʹϑΝ Πϧׂ͕͞Ε͍ͯΔ • ༧ଌΛϛεΔͱ͍ͬͺ͍ߋ৽͞ΕΔ • Ωϟογϡ͕ͳ͔ͬͨΒҙຯ͕ແ͍
͜ͷղܾͷͨΊʹ ࣮ݧతʹ࡞ΒΕͨػೳ͕
lazy-providers
ϦϙδτϦઃఆΛগ͠มߋ $ composer config -ge # ΤσΟλىಈ ~/.composer/config.json { "config":
{}, "repositories": { "packagist": { "type": "composer", "url": "https://packagist.jp", "force-lazy-providers": true } } }
lazyϞʔυ • providerΛμϯϩʔυ͠ͳ͍(10MBઅ) • ύοέʔδใΛϋογϡͳ͠Ͱɺ If-Modified-Since͖Ͱऔಘ • 304͕ฦΕΩϟογϡΛ͏
ߟ • 10MBͷઅخ͍͠ • ϦΫΤετͷ૯૿͑Δ (ຊՈpackagist.orgΛ͍ͬͯͨΒΉ͠Ζ͘ͳΓ ͦ͏) • ࿈ଓͯ͠composer update͢ΔͳΒएׯ͘ͳΔ
͔
packagist.jpʹ ࣮ͯ͠Έ·ͨ͠ (ࠓே͙Β͍)
ਓபืूʂʂ