Composer‚̍ìŽÒ‚ɉï‚Á‚½ (PHP•×‹­‰ï ”ÔŠO•ÒƒŒƒ|[ƒg) #phpstudy #composerphp

Posted by Hiraku on 2016-07-23

Composer‚âmonolog‚̍ìŽÒ‚Å‚ ‚é@seldaek‚ª—ˆ“ú‚·‚é‚Æ‚¢‚¤‚±‚ƂŁA2016”N7ŒŽ22“ú‚ÉPHP•×‹­‰ï‚̔ԊO•Ò‚ªŠJÃ‚³‚ê‚Ü‚µ‚½B

PHP•×‹­‰ï—“Œ‹ž`”ÔŠO•Ò`

“®‰æ

@seldaek ‚Ì”­•\

”­•\Ž‘—¿‚Í‚±‚¿‚ç: Composer in 2016

Composer‚ðŽg‚¢ž‚ñ‚Å‚È‚¢‚Æ‚í‚©‚ç‚È‚¢“à—e‚à‚ ‚Á‚½‚ÆŽv‚¤‚̂ŁAŸŽè‚É•â‘«‰ðà‚µ‚悤‚ÆŽv‚¢‚Ü‚·B

composer‚̃GƒRƒVƒXƒeƒ€‚ɂ‚¢‚Ä

Composer‚Ì’†‰›ƒŠƒ|ƒWƒgƒŠEPackagist‚ÌŒ»Ý‚̃Xƒe[ƒ^ƒX‚ɂ‚¢‚āB
‚¨‚¨‚Ü‚©‚È‚à‚Ì‚ÍPackagist/statistics‚Å“Ç‚ß‚Ü‚·‚ªc

Started April 2011 (5 years!)
~400K visits / month
~200K unique visitors / month
100K packages
2.4 billion installs since April 2012

‚ ‚ÆPackagist‚̃ƒO‚©‚çAComposerƒ†[ƒU[‚̊‹«‚ðWŒv‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B

—Ⴆ‚΁APHP‚̃o[ƒWƒ‡ƒ“‚ðWŒv‚·‚é‚Æ‚±‚ñ‚ÈŠ´‚¶B

PHP5.6‚ªˆê”Ô‘½‚­‚āAŽŸ‚ªPHP5.5BÅ‹ßPHP5.5‚ÍEOL‚É‚È‚Á‚½‚̂ŁA‚Ü‚¾Žg‚Á‚Ä‚¢‚él‚Í‘‚­ƒAƒbƒvƒf[ƒg‚µ‚Ü‚µ‚傤‚ˁB

ˆê•ûA“o˜^‚³‚ꂽcomposer.json‚ÌrequireÝ’è‚ɏ‘‚©‚ê‚Ä‚¢‚éPHPƒo[ƒWƒ‡ƒ“‚́AŒ‹\5.3‚ª‘½‚¢–Í—lB
¦ƒ‰ƒCƒuƒ‰ƒŠ‚ªƒTƒ|[ƒg‚µ‚Ä‚¢‚éPHP‚̍ŏ¬ƒo[ƒWƒ‡ƒ“‚ðˆÓ–¡‚µ‚Ü‚·B

5.2   2.51%
5.3   45.26%
5.4   31.69%
5.5   15.48%
5.6   3.52%
7.0   1.54%

45.26%‚Í5.3‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚āA5.3‚ðØ‚èŽÌ‚Ä‚Ä5.4ˆÈ~‚̂ݑΉž‚µ‚Ä‚¢‚é‚Ì‚ª31.69% ‚»‚ë‚»‚ë5.3‚͐؂Á‚Ä‚¢‚Á‚Ä‚à—Ç‚¢‚©‚ȁ[‚Æ‚¢‚¤•µˆÍ‹C‚ðŠ´‚¶‚Ü‚·B

Composer‚̃xƒXƒgƒvƒ‰ƒNƒeƒBƒXFX

platform‚̌Œ艻

composer updateƒRƒ}ƒ“ƒh‚ð‘Å‚Á‚½ŽžAƒfƒtƒHƒ‹ƒg‚Å‚ÍŽÀs‚³‚ꂽŠÂ‹«‚ÌPHPƒo[ƒWƒ‡ƒ“‚ð“Ç‚ÝŽæ‚Á‚āAˆË‘¶ŠÖŒW‚ð‰ðŒˆ‚µ‚Ü‚·B ‚µ‚©‚µA—Ⴆ‚ÎMac‚ÌPHP‚ª5.5‚Å–{”Ԋ‹«‚ª5.4‚¾‚Á‚½ê‡Acomposer update‚µ‚Älockƒtƒ@ƒCƒ‹‚ðì‚Á‚½Žž“_‚Å‚Í5.5—p‚̃‰ƒCƒuƒ‰ƒŠ‚ªƒCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚µ‚Ü‚¢AƒfƒvƒƒC‚µ‚Ä‚©‚ç“®‚©‚È‚¢II‚È‚ñ‚Ä‚±‚Æ‚É‚È‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB

‚»‚±‚ŁAcomposer‚ɂ͈ˑ¶ŠÖŒW‰ðŒˆ‚̏î•ñ‚ðŒÅ’艻‚·‚éŽè’i‚ª‚ ‚è‚Ü‚·B
composer.json‚Éconfig.platform‚Æ‚¢‚¤€–Ú‚ð’ljÁ‚µ‚Ü‚·B

// composer.json
{
  //...
  "config": {
    "platform": {
       "php": "5.6.4",
       "ext-mongo": "1.0.0"
    }
  }
  //...
}

‚±‚ñ‚È•—‚É‚·‚é‚ƁAcomposer updateƒRƒ}ƒ“ƒh‚ðŽÀs‚µ‚½ŠÂ‹«‚ª‚Ç‚±‚Å‚ ‚낤‚ƁAPHP5.6.4Œü‚¯‚̃‰ƒCƒuƒ‰ƒŠ‚ð’T‚µ‚Ä‚«‚Ä‚­‚ê‚Ü‚·B‚±‚̗Ⴞ‚Æext-mongo‚ª‘‚¢‚Ä‚ ‚è‚Ü‚·‚ªA‚»‚̃GƒNƒXƒeƒ“ƒVƒ‡ƒ“‚àƒCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚é‚à‚Ì‚ÆŒ©‚È‚µ‚Ä‚­‚ê‚Ü‚·B

‚¿‚Ȃ݂ɁAconfig€‚̓GƒfƒBƒ^‚ŕҏW‚µ‚È‚­‚Ä‚àAconfig‚Æ‚¢‚¤ƒTƒuƒRƒ}ƒ“ƒh‚ŕҏW‚Å‚«‚é‚̂ŁAŠo‚¦‚Ä‚¨‚­‚Æ•Ö—˜‚Å‚·B

$ composer config -l #Œ»Ý‚̐ݒè‚ð‘S•”•\Ž¦
$ composer config platform.php 5.6.4 #’ljÁ or ã‘‚«
$ composer config --unset platform.php #Á‚·

composer.lockƒtƒ@ƒCƒ‹‚̓Rƒ~ƒbƒg‚µ‚Ü‚µ‚傤

composer.lock‚Íupdate‚âinstall‚µ‚½Œã‚ɍì‚ç‚ê‚éjsonƒtƒ@ƒCƒ‹‚Å‚·B‚±‚ê‚̓o[ƒWƒ‡ƒ“ŠÇ—ƒVƒXƒeƒ€‚ɃRƒ~ƒbƒg‚·‚é‚悤‚É‚µ‚Ü‚µ‚傤B
update‚âlock‚È‚µ‚Ìinstall‚́A‰½‚ªƒCƒ“ƒXƒg[ƒ‹‚³‚ê‚é‚©•ÛØ‚³‚ê‚Ü‚¹‚ñBpackagist‚©‚çƒpƒbƒP[ƒW‚ªíœ‚³‚ê‚Ä‚¢‚āAƒCƒ“ƒXƒg[ƒ‹‚ÉŽ¸”s‚·‚é‰Â”\«‚¾‚Á‚Ä‚ ‚è‚Ü‚·B
lockƒtƒ@ƒCƒ‹‚ª‚ ‚ê‚΁Aƒ†ƒjƒbƒgƒeƒXƒg‚µ‚½‚Æ‚«‚Æ“¯‚¶ƒpƒbƒP[ƒW‚ªÄ“xƒCƒ“ƒXƒg[ƒ‹‚³‚ê‚邱‚Æ‚ª•ÛØ‚³‚ê‚Ü‚·B

Ã‚©‚ɃCƒ“ƒXƒg[ƒ‹

composer‚Í•W€‚Ń_ƒEƒ“ƒ[ƒhó‹µ‚ð•\Ž¦‚·‚é‚̂ŁACIƒT[ƒo[‚̃ƒO‚ª‰˜‚­‚Ȃ邱‚Æ‚ª‚ ‚è‚Ü‚·B
--no-progressƒIƒvƒVƒ‡ƒ“‚ð‚‚¯‚é‚ƁAƒ_ƒEƒ“ƒ[ƒh‚̏󋵂ð•\Ž¦‚µ‚È‚­‚È‚é‚Ì‚ÅãY—í‚É‚È‚è‚Ü‚·B

ƒfƒtƒHƒ‹ƒg‚ł́Asuggest (‚ ‚Á‚½‚ç•Ö—˜‚¾‚æA„§‚¾‚æj‚ðƒ‰ƒCƒuƒ‰ƒŠ‚ªŽw’肵‚Ä‚¢‚éê‡A‚±‚ê‚ðƒƒO‚ɏo—Í‚µ‚Ü‚·B•s—v‚Å‚ ‚ê‚΁A--no-suggest‚ŏÁ‚·‚±‚Æ‚ªo—ˆ‚Ü‚·B

‚ ‚Æ–Ê“|‚­‚³‚¯‚ê‚Î--quiet‚Æ‚¢‚¤ƒIƒvƒVƒ‡ƒ“‚à‚ ‚è‚Ü‚·BƒCƒ“ƒXƒg[ƒ‹ƒƒO‚ð‘S‚­o—Í‚µ‚È‚­‚È‚è‚Ü‚·B

ƒI[ƒgƒ[ƒ_[‚̍‚‘¬‰»

PSR-4, PSR-0‚Ȃǂ̃I[ƒgƒ[ƒ_[‚́A–ˆ‰ñƒtƒ@ƒCƒ‹ƒpƒX‚ÌŽÀÝêŠ‚ð‰ðŒˆ‚·‚é‚̂Ŏ኱‚̃I[ƒo[ƒwƒbƒh‚ª‚ ‚è‚Ü‚·B--optimize-autoloaderƒIƒvƒVƒ‡ƒ“‚ðŽg‚¤‚ÆPSR-4/PSR-0‚ðClassMap‚Æ‚µ‚Ä“f‚«o‚·‚̂ŁAƒI[ƒgƒ[ƒ_[‚ª‚‘¬‰»‚³‚ê‚Ü‚·B

# D‚«‚ȃRƒ}ƒ“ƒh‚ɍ‡‚킹‚Ä•t‚¯‚ç‚ê‚é
$ composer update --optimize-autoloader
$ composer install --optimize-autoloader
$ composer dump-autoload --optimize-autoloader

‚¿‚Ȃ݂ɏȗªŒ`‚Æ‚µ‚Ä -o ‚Å‚à“¯—l‚ÌŒø‰Ê‚ª‚ ‚è‚Ü‚·B

ƒvƒƒWƒFƒNƒg‹K–Í‚É‚æ‚Á‚Ä‚Í‘½­ŽžŠÔ‚ª‚©‚©‚é‚̂ŁAprod”ł̃pƒbƒP[ƒWƒA[ƒJƒCƒu‚ðì‚é‚Æ‚«‚ÉŠˆ—p‚·‚é‚Æ—Ç‚¢‚Å‚µ‚傤B

why (depends) / why-not (prohibits)

Å‹ß‚̐V‹@”\ / ‚ ‚Ü‚è’m‚ç‚ê‚Ä‚È‚¢‹@”\ƒR[ƒi[B

Œ»Ý‚̃Cƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚éƒpƒbƒP[ƒWˆê——‚ÍshowƒRƒ}ƒ“ƒh‚ŏo‚¹‚邪Au‚ ‚êH‚È‚ñ‚Å‚±‚̃pƒbƒP[ƒW“ü‚Á‚Ä‚é‚ñ‚¾‚Á‚¯Hv‚ÆŽv‚Á‚½Žž‚É——R‚ð‹³‚¦‚Ä‚­‚ê‚é‚Ì‚ªwhy(depends)ƒRƒ}ƒ“ƒhB —Ⴆ‚Îphpspec/prophecy‚ðrequire‚µ‚½Šo‚¦‚ª‚È‚¢‚̂ɃCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚é‚È‚çA

$ composer why phpspec/prophecy
$ composer depends phpspec/prophecy # ‚±‚Á‚¿‚Å‚àˆÓ–¡‚Í“¯‚¶
phpunit/phpunit  4.8.27  requires  phpspec/prophecy (^1.3.1)

‚Æ‚¢‚¤•—‚É‹³‚¦‚Ä‚­‚ê‚Ü‚·B--tree -t‚ŃcƒŠ[ó‚É•\Ž¦‚µ‚Ä‚­‚ê‚Ü‚·B

$ composer depends phpspec/prophecy -t
phpspec/prophecy v1.6.1 Highly opinionated mocking framework for PHP 5.3+
„¤„Ÿ„Ÿphpunit/phpunit 4.8.26 (requires phpspec/prophecy ^1.3.1)
   „¤„Ÿ„Ÿcomposer/composer dev-master (requires (for development) phpunit/phpunit ^4.5 || ^5.0.5)

why-not (prohibits) ‚Í‹t‚ŁA‚È‚º‚»‚̃o[ƒWƒ‡ƒ“‚ªƒCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚È‚¢‚©‚ð‹³‚¦‚Ä‚­‚ê‚Ü‚·B

V‚µ‚¢ƒo[ƒWƒ‡ƒ“‚ªo‚Ä‚¢‚È‚¢‚©’²‚ׂé

outdated‚ðŽg‚¤‚ƁAƒpƒbƒP[ƒW‚̐V‚µ‚¢‚à‚Ì‚ªo‚Ä‚¢‚é‚©‚ðŠm”F‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B composer update --dry-run ‚È‚Ç‚à‚ ‚邯‚ǁAoutdated‚¾‚Æ‹ï‘Ì“I‚É‚Ç‚¤ƒo[ƒWƒ‡ƒ“‚ª•Ï‚í‚é‚Ì‚©‚Ì•\Ž¦‚ª‚í‚©‚è‚â‚·‚¢‚Å‚·‚ˁB

$ composer outdated

prefer-distƒIƒvƒVƒ‡ƒ“

GitHub‚ȂǂŃŠƒ|ƒWƒgƒŠ‚ð”zM‚µ‚Ä‚¢‚éê‡Agit clone‚Ń\[ƒX‚ð—Ž‚Æ‚µ‚Ä‚­‚é(prefer-source)‚©Azip‚Ń_ƒEƒ“ƒ[ƒh‚·‚é(prefer-dist)‚©‘I‚Ô‚±‚Æ‚ª‚Å‚«‚Ü‚·B

’ʏíAprefer-dist‚Ń_ƒEƒ“ƒ[ƒh‚µ‚½‚Ù‚¤‚ª‚‘¬‚Å‚·B‚½‚¾AƒAƒNƒZƒXƒg[ƒNƒ“‚È‚Ç‚Ì”FØî•ñ‚ðƒZƒbƒg‚µ‚Ä‚¨‚­•K—v‚ª‚ ‚é‚̂ŁAÝ’è‚Å‚«‚Ä‚È‚¢l‚Í‚¤‚Ü‚­“®‚©‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB

‚»‚Ì‚½‚ß‚©Acomposer‚ÍprivateƒŠƒ|ƒWƒgƒŠ‚̏ꍇAƒfƒtƒHƒ‹ƒg‚Ågit clone‚µ‚悤‚Æ‚µ‚Ü‚·B

‚±‚Ì‹““®‚ð•ÏX‚µ‚Äzipƒ_ƒEƒ“ƒ[ƒh‚ð‹­§‚·‚é‚Ì‚ª --prefer-dist ƒIƒvƒVƒ‡ƒ“‚ŁA composer install --prefer-dist ‚Ȃǂ̂悤‚ÉŽg‚¢‚Ü‚·B

‚±‚ê‚̓pƒbƒP[ƒW‚²‚Æ‚Édist‚©source‚©Ý’èƒtƒ@ƒCƒ‹‚ɏ‘‚¢‚Ä‚¨‚­‚±‚Æ‚à‚Å‚«‚Ü‚·B

{
    "config": {
        "preferred-install": {
            "nelmio/*": "source",
            "*": "dist"
        }
    },
    "require": {
        "nelmio/foo": "^1.2",
        "other/package": "^1.4"
    }
}

type=pathƒŠƒ|ƒWƒgƒŠ (mono-repository‚̃Tƒ|[ƒg)

composer‚̃Šƒ|ƒWƒgƒŠ‚Ívcs‚ȂǐFXƒ^ƒCƒv‚ª‚ ‚è‚Ü‚·‚ªAŠ„‚ƍŋߑ‚¦‚½‚Ì‚ª path ‚Æ‚¢‚¤ƒŠƒ|ƒWƒgƒŠƒ^ƒCƒv‚Å‚·B‚±‚ê‚ÍŠY“–ƒpƒX‚©‚çƒVƒ“ƒ{ƒŠƒbƒNƒŠƒ“ƒN‚𒣂邾‚¯‚Æ‚¢‚¤ƒVƒ“ƒvƒ‹‚È‹@”\‚Å‚·B

‚ ‚éƒvƒƒWƒFƒNƒg‚ªAÅ‰‚Ísrc/ˆÈ‰º‚É‘S•”‚̃\[ƒXƒR[ƒh‚ð“Ë‚Áž‚ñ‚Å‚¢‚½‚¯‚ǁA’iX‹‘å‚É‚È‚Á‚Ä‚µ‚Ü‚¢AƒŠƒ|ƒWƒgƒŠ‚𕪊„‚µ‚½‚­‚È‚Á‚½‚Æ‚µ‚Ü‚·B

composer‚Å‚¢‚«‚È‚è•Ê‚̃pƒbƒP[ƒW‚ɐ؂èo‚»‚¤‚Æ‚·‚é‚ƁAgitƒŠƒ|ƒWƒgƒŠ‚ð•Ê‚É‚·‚é•K—v‚ª‚ ‚è‚Ü‚µ‚½B‚¹[‚Ì‚Å‘å‚«‚­ƒ\[ƒX‚ðˆÚ‚µ‘Ö‚¦‚È‚¯‚ê‚΂Ȃ炸A‘åŠ|‚©‚è‚ɂȂ肪‚¿‚Å‚µ‚½B

‚»‚±‚ÅpathƒŠƒ|ƒWƒgƒŠB‚P‚‚̃fƒBƒŒƒNƒgƒŠ‚Ì’†‚Å•¡”‚ÌcomposerƒpƒbƒP[ƒW‚ð‰¼‘z“I‚ɐ؂èo‚·‹@”\‚Å‚·B—Ⴆ‚Îlib‚Æ‚¢‚¤ƒfƒBƒŒƒNƒgƒŠ‚ðØ‚Á‚āA‚»‚Ì’†‚ÉcomposerƒpƒbƒP[ƒW‚Æ‚µ‚Ь—§‚·‚é‚悤‚ȃfƒBƒŒƒNƒgƒŠ‚ð”z’u‚µAƒ‹[ƒg‚É‚àcomposer.json‚ðì‚è‚Ü‚·B

  • lib/
    • Date/
      • src/...
      • composer.json # acme/date ƒpƒbƒP[ƒW‚Æ‚µ‚Ü‚·
    • Hash/
      • src/...
      • composer.json # acme/hash ƒpƒbƒP[ƒW‚Æ‚µ‚Ü‚·
  • composer.json # require‚Éacme/date‚Æacme/hash‚ð“ü‚ê‚Ä‚¨‚«‚Ü‚·

‚±‚̏ó‘Ԃ̃‹[ƒg‚Åcomposer install‚·‚é‚ƁAvendor/”z‰º‚ɃVƒ“ƒ{ƒŠƒbƒNƒŠƒ“ƒN‚𒣂Á‚āAdate‚âhash‚̃pƒbƒP[ƒW‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚½‚©‚̂悤‚ÉŒ©‚¹‚©‚¯‚Ä‚­‚ê‚Ü‚·B

\•ªˆÀ’肵‚½‚çlibˆÈ‰º‚̃\[ƒXƒR[ƒh‚ðŽÀÛ‚ɃŠƒ|ƒWƒgƒŠ•ªŠ„‚·‚ê‚΂悭A‚»‚ê‚Ü‚Å‚Í‚P‚‚̃Šƒ|ƒWƒgƒŠ‚Ì’†‚ōD‚«‚Ȃ悤‚ÉŠJ”­‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B

‚¿‚È‚Ý‚Étype=path‚̃Šƒ|ƒWƒgƒŠ‚́Aƒo[ƒWƒ‡ƒ“Žw’è‚ð"@dev"‚â"dev-master"‚È‚Ç‚É‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B

“ú–{‚ł̃ŒƒCƒeƒ“ƒV‚ɂ‚¢‚Ä

outdatedƒRƒ}ƒ“ƒh‚ð“ú–{‚É—ˆ‚Ä‚©‚玎‚µ‚½‚çA‚Ñ‚Á‚­‚è‚·‚é‚Ù‚Ç’x‚©‚Á‚½‚ÆŒ¾‚Á‚Ä‚­‚ê‚Ü‚µ‚½I😃 “`‚í‚Á‚½‚Á‚Û‚¢I

‚Ü‚³‚©–{l‚̃Xƒ‰ƒCƒh‚ɍڂ¹‚Ä‚à‚炦‚é‚Ƃ́I Š´“®I

Ž¿‹^‰ž“š

ComposerŽ©‘̂̃o[ƒWƒ‡ƒ“‚Á‚čŋߊ„‚ƃAƒbƒvƒf[ƒg‚ª‘¬‚¢‚¯‚ǁAŠî€‚̓Zƒ}ƒ“ƒeƒBƒbƒNƒo[ƒWƒ‡ƒjƒ“ƒO‚Ȃ́H

=> yes. MAJOR.MINOR.PATCH‚ŁA ƒoƒOƒtƒBƒbƒNƒX‚È‚çPATCH‚ðã‚°‚āA ŒÝŠ·«‚ð‰ó‚³‚È‚¢‹@”\’ljÁ‚È‚çMINOR‚ðã‚°‚āA ‘å‚«‚ȕύX‚ÍMAJOR‚ðã‚°‚éB

composer‚̃vƒƒWƒFƒNƒg‚ÅÅ‚à¢“‚Á‚½Ž–‚͉½‚Å‚µ‚傤‚©H

=> ƒ‚ƒ`ƒx[ƒVƒ‡ƒ“‚̈ێ‚ƁAƒ‰ƒCƒtƒ[ƒNƒoƒ‰ƒ“ƒXB

composer‚Ì’PŒê‚̈Ӗ¡‚͍ì‹ÈŽÒ‚Ȃ̂ɁAƒƒS‚ªŽwŠöŽÒ‚Ȃ͉̂½ŒÌ‚Ȃ́H

=> ‚³‚قǐ[‚¢——R‚Í‚È‚¢‚¯‚ǁAGoogle‰æ‘œŒŸõ‚Å’²‚ׂĂàAŠ„‚ÆŽwŠöŽÒ‚ªo‚Ä‚­‚邵A‚Ü‚ ‚¢‚¢‚ñ‚¶‚á‚È‚¢‚́BB‚Æ‚Ì‚±‚Æ

composer.lock‚ðƒRƒ~ƒbƒg‚·‚é‚ׂµA‚ɑ΂µ‚āAmonolog‚Æ‚©‚Ílockƒtƒ@ƒCƒ‹‚ðƒRƒ~ƒbƒg‚µ‚Ä‚È‚¢‚¯‚ǁA‚Ç‚¤‚µ‚āH

¦@seldaek‚Ímonolog‚̍ìŽÒ‚Å‚à‚ ‚è‚Ü‚·

=> ƒ‰ƒCƒuƒ‰ƒŠ‚Æ‚µ‚Ä’ñ‹Ÿ‚·‚éi‚»‚ê’P‘̂ŃRƒ}ƒ“ƒh‚Æ‚µ‚ÄŽg‚í‚ê‚邱‚Æ‚Í‚È‚¢jê‡AÅI“I‚Érequire‚µ‚½ƒvƒƒWƒFƒNƒg‘¤‚Åcomposer.lock‚ðì‚é‚̂ŁA‚»‚ê‚Å—Ç‚¢‚̂ł́Bd—v‚Ȃ̂́AƒfƒvƒƒC‚³‚ê‚郂ƒm‚É.lockƒtƒ@ƒCƒ‹‚ª–¾Šm‚É’è‹`‚³‚ê‚Ä‚¢‚邱‚Æ‚¾‚ÆŽv‚¤B

‘¼‚ÌŒ¾Œê‚Åcomposer‚ðÄŽÀ‘•‚·‚é‚Æ‚¢‚¤ƒAƒCƒfƒA‚Í‚Ç‚¤Žv‚¤H

=> —Ⴆ‚ΕÀ—ñˆ—‚¾‚¯l‚¦‚ê‚ÎGo‚È‚Ç‚ÅŽÀ‘•‚µ‚½•û‚ªãY—í‚ɍì‚ê‚é‚ÆŽv‚¤‚¯‚ǁAPHPƒ†[ƒU[‚ªuPHP‚Ńvƒ‰ƒOƒCƒ“‚ð‘‚¢‚ÄŠg’£‚Å‚«‚é‚悤‚É‚·‚év‚Æ‚¢‚¤•”•ª‚ª‘å‚«‚¢‚̂ŁAPHP‚ÅŽÀ‘•‚·‚é‚ׂ«‚¾‚ÆŽv‚¤B

•À—ñƒŠƒNƒGƒXƒg‚ÌPullRequest‚ɂ‚¢‚Ä

Parallel downloader by hirak E Pull Request #5293 E composer/composer

‰pŒê‚í‚©‚ç‚È‚¢‚È‚è‚ə𚐂µ‚Ä—‰ð‚µ‚½‚Æ‚±‚ë‚Æ‚µ‚ẮA

  • ƒƒ^ƒf[ƒ^‚̃_ƒEƒ“ƒ[ƒh‘¤‚ɍœK‰»‚ª“ü‚Á‚Ä‚È‚¢‚Ì‚ª•s–ž
    • ‚»‚ê“ü‚ꂽ‚ç‚à‚Á‚ÆPull Request‚ª‹‘å‚É‚È‚Á‚¿‚Ⴄ‚̂ŁA‚ ‚¦‚ÄŠO‚µ‚Ä‚é‚ñ‚Å‚·‚æcB
  • Šî–{“I‚Écomposer‚̓ƒ“ƒeƒiƒ“ƒXƒtƒF[ƒY‚Å‚ ‚Á‚āA‘å‚«‚ÈPull Request‚͎󂯓ü‚ê‚Â炢
    • +990s‚Í‘å‚«‚¢
  • RemoteFilesystem‚Íhack‚ðÏ‚ݏd‚Ë‚Ä‚«‚½•”•ª‚ŁAŽè‚ð“ü‚ê‚Â炢‚µA‚µ‚Á‚©‚èŒÝŠ·«‚ðŠm”F‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢
  • ”ƒ–ŒŽˆÈ“à‚®‚ç‚¢‚Ƀ}[ƒWl‚¦‚é‚æI‚Æ‚Ì‚±‚Æ

‚Æ‚è‚ ‚¦‚¸A‹¦—͂͐ɂµ‚Ü‚È‚¢‚悤‚É‚µ‚½‚¢B

PHP‚̍ŐV‹LŽ–