Slide 1

Slide 1 text

packagist.jpͷ঺հͱ ৽ػೳ PHPBLT #5

Slide 2

Slide 2 text

ࣗݾ঺հ • @Hiraku (த໺ ୓) • PHPΧϯϑΝϨϯεؔ੢2016Ͱ
 جௐߨԋ͖ͯͨ͠ͱ͜ΖͰ͢
 http://tech.mercari.com/entry/2016/07/20/ 160602

Slide 3

Slide 3 text

Composerͷߴ଎Խ • hirak/prestissimo ͱ͍͏ComposerϓϥάΠ ϯΛ࡞͍ͬͯ·͢ɻ࢖ͬͯΈͯͶʂ composer global require 'hirak/prestissimo' ͋ͱ͸উखʹinstall/update࣌ʹൃಈ

Slide 4

Slide 4 text

ࠓ೔͸packagistͷ࿩Λ ͠·͢

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

packagist.jp • packagist.org Λ2෼͓͖ʹϛϥʔϦϯάͯ͠ ͍·͢ • ຊՈͷ୅ΘΓʹࢦఆ͢Δͱcomposer update ͕ര଎ʹͳΔ (ίϚϯυҰߦ)
 composer conf -g repos.packagist composer https://packagist.jp

Slide 8

Slide 8 text

2෼͝ͱϛϥʔϦϯάΛ ࣮ݱ͢Δٕज़

Slide 9

Slide 9 text

ී௨ʹ΍Δͱग़དྷͳ͍ • packagistͷશσʔλΛૉ௚ʹμ΢ϯϩʔυ͢ Δͱ਺࣌ؒ͸͔͔Δ • ొ࿥ύοέʔδʹൺྫ͕͔͔ͯ࣌ؒ͠Δ࢓૊ ΈͰ͸ഁ୼͢Δ • ࠩ෼ߋ৽͔͠ͳ͍

Slide 10

Slide 10 text

packagistͷJSON͸3֊૚ • packages.json • provider-includes.json
 (ύοέʔδͷϦετ৘ใɺ8~9ݸ͙Β͍) • p/vendor/package.json
 (ύοέʔδ໊͝ͱ) • શ෦Ͱ6ສϑΝΠϧ͙Β͍

Slide 11

Slide 11 text

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" },

Slide 12

Slide 12 text

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" },

Slide 13

Slide 13 text

Լ૚ͷϋογϡ஋ͷ఻ൖ • packages.json͕provider-includesͷϋογϡ ஋Λ఻͑Δ • provider-includes.json͕֤packageͷϋο γϡ஋Λ఻͑Δ • ϋογϡ஋͕ҧ͏=ߋ৽͕͋ͬͨ৔߹ͷΈ

Slide 14

Slide 14 text

ࠩ෼ߋ৽ͷݪཧ • jsonϑΝΠϧͷsha256஋Λܭࢉɺผͷ஋͕͋Δ ͱ͖͚ͩμ΢ϯϩʔυ • 2෼͓͖ͩͱ10~20ϑΝΠϧ͙Β͍ͰࡁΉͷͰ ߴ଎ʹߋ৽Ͱ͖Δ • ͍͖ͳΓcronճ͢ͱࢮ͵
 ༧Ί࣌ؒΛ͔͚ͯશ෦μ΢ϯϩʔυ͓ͯ͘͠

Slide 15

Slide 15 text

packagist๊͕͍͑ͯΔ໰୊

Slide 16

Slide 16 text

provider-includes.jsonͷ
 ංେԽ

Slide 17

Slide 17 text

provider-includes.json ͱ͸ • ύοέʔδ໊ͷҰཡͱɺͦͷϋογϡ஋Λه ࿥ͨ͠ϑΝΠϧ • 9ϑΝΠϧʹ෼ׂ͞ΕͯΔ(2016೥7݄20೔ݱ ࡏ) • composer update࣌ʹશ෦μ΢ϯϩʔυ͢Δ

Slide 18

Slide 18 text

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" },

Slide 19

Slide 19 text

͜Ε͕ͱʹ͔͘σΧ͍

Slide 20

Slide 20 text

શ෦Ͱ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

Slide 21

Slide 21 text

10MBͬͯผʹେ͖͘ͳ͍Μ ͡Όʁͱࢥͬͨਓ͸؁͍

Slide 22

Slide 22 text

ొ࿥ύοέʔδ਺ʹԠͯ͡૿େ ͢ΔϑΝΠϧͳͷͰ͢ • ࠓ10ສύοέʔδͰ10MB͚ͩͲɺ • 100ສύοέʔδͳΒ100MB • 1000ສύοέʔδͳΒ1GB • composer update͢Δ౓ʹμ΢ϯϩʔυ͢Δ

Slide 23

Slide 23 text

ճઢ͕ࡉ͍ͱͭΒ͍΍ͭ • ҰԠɺύοέʔδͷߋ৽ස౓ͷߴ͞͝ͱʹϑΝ Πϧ͕෼ׂ͞Ε͍ͯΔ • ༧ଌΛϛεΔͱ͍ͬͺ͍ߋ৽͞ΕΔ • Ωϟογϡ͕ͳ͔ͬͨΒҙຯ͕ແ͍

Slide 24

Slide 24 text

͜ͷղܾͷͨΊʹ
 ࣮ݧతʹ࡞ΒΕͨػೳ͕

Slide 25

Slide 25 text

lazy-providers

Slide 26

Slide 26 text

ϦϙδτϦઃఆΛগ͠มߋ $ composer config -ge # ΤσΟλىಈ ~/.composer/config.json { "config": {}, "repositories": { "packagist": { "type": "composer", "url": "https://packagist.jp", "force-lazy-providers": true } } }

Slide 27

Slide 27 text

lazyϞʔυ • providerΛμ΢ϯϩʔυ͠ͳ͍(10MBઅ໿) • ύοέʔδ৘ใΛϋογϡͳ͠Ͱɺ
 If-Modified-Since෇͖Ͱऔಘ • 304͕ฦΕ͹ΩϟογϡΛ࢖͏

Slide 28

Slide 28 text

ߟ࡯ • 10MBͷઅ໿͸خ͍͠ • ϦΫΤετͷ૯਺͸૿͑Δ
 (ຊՈpackagist.orgΛ࢖͍ͬͯͨΒΉ͠Ζ஗͘ͳΓ ͦ͏) • ࿈ଓͯ͠composer update͢ΔͳΒएׯ஗͘ͳΔ ͔΋

Slide 29

Slide 29 text

packagist.jpʹ
 ࣮૷ͯ͠Έ·ͨ͠
 (ࠓே͙Β͍)

Slide 30

Slide 30 text

ਓபืूʂʂ