Greenkeeperã§ããã³ããšã³ãéçºã®ã¯ãŒã¯ãããŒãå¹çåïŒäŸåé¢ä¿ã®æŽæ°ãèªååããç Žå£ç倿Žãé²ãããããžã§ã¯ãã®ã»ãã¥ãªãã£ã匷åããæ¹æ³ãåŠã³ãŸãããã
ããã³ããšã³ãGreenkeeperïŒèªåäŸåé¢ä¿ç®¡çã¬ã€ã
ããŒã¹ã®éãããã³ããšã³ãéçºã®äžçã§ã¯ãå®å®çã§å®å šããã€ææ°ã®ã³ãŒãããŒã¹ãç¶æããããã«ãäŸåé¢ä¿ã广çã«ç®¡çããããšã極ããŠéèŠã§ããæåã§æŽæ°ã远跡ããæœåšçãªç«¶åã«å¯ŸåŠããã®ã¯æéããããããšã©ãŒãçºçãããããªããŸããããã§Greenkeeperã®ãããªããŒã«ãç»å Žããããã»ã¹ãèªååããŠã¯ãŒã¯ãããŒãå¹çåããŸããGreenkeeperã¯ãã¯ãã¹ã¿ã³ãã¢ãã³ãµãŒãã¹ãšããŠç©æ¥µçã«ã¡ã³ããã³ã¹ãããŠããŸãããããã®æŠå¿µãšã¯ãŒã¯ãããŒã¯ä»ã®ãã©ãããã©ãŒã ãããŒã«ã«çµ±åãããŠããããã®æ ¹åºã«ããååãçè§£ããããšã¯çŸä»£ã®ããã³ããšã³ãéçºã«ãããŠäŸç¶ãšããŠäžå¯æ¬ ã§ãã
äŸåé¢ä¿ç®¡çãšã¯ïŒ
äŸåé¢ä¿ç®¡çãšã¯ããããžã§ã¯ããäŸåããå€éšã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ãããŒã«ãæŽçã»ç®¡çããããã»ã¹ã®ããšã§ãããããã®äŸåé¢ä¿ã¯ããã¹ãŠããŒãããæžãããšãªãã¢ããªã±ãŒã·ã§ã³ã®æ©èœãæ¡åŒµããããã«äžå¯æ¬ ã§ãã广çãªäŸåé¢ä¿ç®¡çã¯ä»¥äžãä¿èšŒããŸãïŒ
- äžè²«æ§: ç°ãªãç°å¢éã§ç¹å®ã®ããŒãžã§ã³ã®äŸåé¢ä¿ã䜿çšããããšã
- ã»ãã¥ãªãã£: è匱æ§ãä¿®æ£ããããã«äŸåé¢ä¿ãææ°ã®ç¶æ ã«ä¿ã€ããšã
- å®å®æ§: æ°ããäŸåé¢ä¿ã®ããŒãžã§ã³ã«ãã£ãŠå°å ¥ãããç Žå£ç倿Žãé²ãããšã
- å¹çæ§: äŸåé¢ä¿ã®è¿œå ãæŽæ°ãåé€ã®ããã»ã¹ãç°¡çŽ åããããšã
æåã«ããäŸåé¢ä¿ç®¡çã®èª²é¡
èªååãªãã§ã¯ãäŸåé¢ä¿ã®ç®¡çã¯å€§ããªè² æ ãšãªãåŸãŸãã以äžã®äžè¬çãªèª²é¡ãèããŠã¿ãŸãããïŒ
- æéã®ãããæŽæ°: åäŸåé¢ä¿ã®æ°ããããŒãžã§ã³ãæåã§ç¢ºèªããã®ã¯é¢åã§ãã
- ç Žå£ç倿Ž: äŸåé¢ä¿ãæŽæ°ãããšããããã°ããªãã¡ã¯ã¿ãªã³ã°ãå¿ èŠãšããäºæãã¬ç Žå£ç倿Žãå°å ¥ãããããšããããŸãã
- ã»ãã¥ãªãã£è匱æ§: å€ãäŸåé¢ä¿ã«ã¯ãæªçšãããå¯èœæ§ã®ããæ¢ç¥ã®ã»ãã¥ãªãã£è匱æ§ãå«ãŸããŠããããšããããããŸãã
- äŸåé¢ä¿ã®ç«¶å: ç°ãªãäŸåé¢ä¿ããäºææ§ã®ãªãä»ã®äŸåé¢ä¿ã®ããŒãžã§ã³ã«äŸåããŠããå Žåããããç«¶åãåŒãèµ·ãããŸãã
- éçºè ã®ãªã³ããŒãã£ã³ã°: æ°ããéçºè ã¯ããããžã§ã¯ãã®äŸåé¢ä¿ãšããã管çããæ¹æ³ãçè§£ããå¿ èŠããããŸãã
èªåäŸåé¢ä¿ç®¡çã®å°å ¥
GreenkeeperïŒããã³ãã®åŸç¶ãŸãã¯DependabotãSnykãªã©ã®ä»£æ¿ãœãªã¥ãŒã·ã§ã³ã§ãGitHubãGitLabãªã©ã®ãã©ãããã©ãŒã ã«çµ±åãããŠãããã®ïŒã®ãããªèªåäŸåé¢ä¿ç®¡çããŒã«ã¯ã以äžã®æ¹æ³ã§ãããã®èª²é¡ã«å¯ŸåŠããŸãïŒ
- äŸåé¢ä¿ã®æ°ããããŒãžã§ã³ãèªåçã«æ€åºããã
- æŽæ°ãããäŸåé¢ä¿ãå«ããã«ãªã¯ãšã¹ããäœæããã
- æŽæ°ãç Žå£ç倿Žãå°å ¥ããªãããšã確èªããããã«ãã¹ããå®è¡ããã
- æœåšçãªã»ãã¥ãªãã£è匱æ§ã«é¢ããæŽå¯ãæäŸããã
ãããã®ã¿ã¹ã¯ãèªååããããšã§ãéçºè ã¯äŸåé¢ä¿ã®ç®¡çã«æéãè²»ããã®ã§ã¯ãªããæ©èœã®æ§ç¯ããã°ã®ä¿®æ£ã«éäžã§ããŸãã
GreenkeeperïŒã®ååïŒã®ä»çµã¿ïŒæŠå¿µçæŠèŠ
ã¹ã¿ã³ãã¢ãã³ãµãŒãã¹ãšããŠã®Greenkeeperã¯ãã¯ãç©æ¥µçã«ã¡ã³ããã³ã¹ãããŠããŸãããããã®ä»çµã¿ãçè§£ããããšã¯ã仿¥ã§ãéèŠã§ããèªåäŸåé¢ä¿ç®¡çã®ååã«é¢ãã貎éãªæŽå¯ãäžããŠãããŸããä»ã®ããŒã«ããã©ãããã©ãŒã ãåæ§ã®ã¢ãããŒããæ¡çšããŠããŸãã
Greenkeeperã®ã¯ãŒã¯ãããŒ
- ãªããžããªã®çµ±å: GreenkeeperïŒãŸãã¯åçã®ããŒã«ïŒãGitHubïŒãŸãã¯é¡äŒŒã®ãã©ãããã©ãŒã ïŒãªããžããªã§æå¹ã«ããŸãã
- äŸåé¢ä¿ã®ç£èŠ: Greenkeeperã¯ããããžã§ã¯ãã®`package.json`ïŒãŸãã¯åçã®äŸåé¢ä¿ãããã§ã¹ãïŒãã¡ã€ã«ãç£èŠããäŸåé¢ä¿ã®æŽæ°ããã§ãã¯ããŸãã
- ãã«ãªã¯ãšã¹ãã®çæ: æ°ããäŸåé¢ä¿ã®ããŒãžã§ã³ããªãªãŒã¹ããããšãGreenkeeperã¯`package.json`ãã¡ã€ã«ã«æŽæ°ãããããŒãžã§ã³ãå«ããã«ãªã¯ãšã¹ããäœæããŸãã
- èªåãã¹ã: ãã«ãªã¯ãšã¹ãã¯èªåãã¹ãïŒäŸïŒãŠããããã¹ããçµ±åãã¹ãïŒãããªã¬ãŒããæŽæ°ãã¢ããªã±ãŒã·ã§ã³ãå£ããªãããšã確èªããŸãã
- ã¹ããŒã¿ã¹å ±å: Greenkeeperã¯ãã«ãªã¯ãšã¹ãå ã§ãã¹ãã®ã¹ããŒã¿ã¹ãå ±åããæŽæ°ãããŒãžããŠãå®å šãã©ããã瀺ããŸãã
- ããŒãžãŸãã¯èª¿æ»: ãã¹ããåæ Œããã°ããã«ãªã¯ãšã¹ãã¯ããŒãžã§ããŸãããã¹ãã倱æããå Žåãéçºè ã¯åé¡ã調æ»ããç«¶åã解決ã§ããŸãã
ã·ããªãªäŸ
ããªãã`react`ã©ã€ãã©ãªã䜿çšããããã³ããšã³ããããžã§ã¯ããæã£ãŠãããšæ³åããŠãã ãããGreenkeeperïŒãŸãã¯ãã®åŸç¶ããŒã«ïŒããªããžããªã§æå¹ã«ãªã£ãŠããŸãã`react`ã®æ°ããããŒãžã§ã³ããªãªãŒã¹ããããšãGreenkeeperã¯èªåçã«ä»¥äžã®å€æŽãå«ããã«ãªã¯ãšã¹ããäœæããŸãïŒ
```json { "dependencies": { "react": "^17.0.0" // 以åã®ããŒãžã§ã³ } } ``` ```json { "dependencies": { "react": "^18.0.0" // æ°ããããŒãžã§ã³ } } ```ãã®ãã«ãªã¯ãšã¹ãã¯èªåãã¹ããããªã¬ãŒããŸãããã¹ããåæ Œããã°ããã«ãªã¯ãšã¹ããããŒãžããŠãããžã§ã¯ããææ°ããŒãžã§ã³ã®`react`ã«æŽæ°ã§ããŸãããã¹ãã倱æããå Žåã¯ãåé¡ã調æ»ããæ°ããããŒãžã§ã³ãç Žå£ç倿Žãå°å ¥ããŠããããã³ãŒãã®èª¿æŽãå¿ èŠã倿ã§ããŸãã
èªåäŸåé¢ä¿ç®¡çã䜿çšããã¡ãªãã
èªåäŸåé¢ä¿ç®¡çã¯ãããã³ããšã³ãéçºããŒã ã«æ°å€ãã®ã¡ãªããããããããŸãïŒ
- ã»ãã¥ãªãã£ã®åäž: äŸåé¢ä¿ãææ°ã®ç¶æ ã«ä¿ã€ããšã§ãã»ãã¥ãªãã£è匱æ§ãä¿®æ£ããã¢ããªã±ãŒã·ã§ã³ãæ»æããä¿è·ããŸãã
- ãªã¹ã¯ã®äœæž: èªåãã¹ãã«ãããæŽæ°ãç Žå£ç倿Žãå°å ¥ããªãããšãä¿èšŒãããæ¬çªç°å¢ã§ã®äºæãã¬åé¡ã®ãªã¹ã¯ãæžå°ããŸãã
- çç£æ§ã®åäž: äŸåé¢ä¿ç®¡çãèªååããããšã§ãéçºè ã¯æ©èœã®æ§ç¯ããã°ã®ä¿®æ£ãšãã£ããããéèŠãªã¿ã¹ã¯ã«éäžã§ããããã«ãªããŸãã
- ã³ã©ãã¬ãŒã·ã§ã³ã®ç°¡çŽ å: ç°ãªãç°å¢éã§äŸåé¢ä¿ã®ããŒãžã§ã³ãäžè²«ãããããšã§ãã³ã©ãã¬ãŒã·ã§ã³ãç°¡çŽ åãããç°å¢åºæã®åé¡ã®ãªã¹ã¯ãæžå°ããŸãã
- ã³ãŒãå質ã®åäž: äŸåé¢ä¿ãææ°ã®ç¶æ ã«ä¿ã€ããšã§ã䜿çšããŠããã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ã®æ°æ©èœãæ¹åç¹ã掻çšã§ããŸãã
é©åãªäŸåé¢ä¿ç®¡çããŒã«ã®éžæ
Greenkeeperã¯å©çšã§ããªããªããŸãããã以äžã®ãããªåªãã代æ¿ããŒã«ãããã€ãååšããŸãïŒ
- Dependabot: çŸåšã¯GitHubã«çµ±åãããŠãããèªåçãªäŸåé¢ä¿ã®æŽæ°ãšã»ãã¥ãªãã£ã¢ã©ãŒããæäŸããŸãããªãŒãã³ãœãŒã¹ãããžã§ã¯ããæ¢ã«GitHubã䜿çšããŠããããŒã ã«äººæ°ã®ããéžæè¢ã§ãã
- Snyk: Snykã¯ã»ãã¥ãªãã£ã«éç¹ã眮ããè匱æ§ã¹ãã£ã³ãäŸåé¢ä¿ç®¡çãã©ã€ã»ã³ã¹ã³ã³ãã©ã€ã¢ã³ã¹æ©èœãæäŸããŸãã
- WhiteSource: WhiteSourceã¯ãäŒæ¥åãã«å æ¬çãªäŸåé¢ä¿ç®¡çãã»ãã¥ãªãã£ãã©ã€ã»ã³ã¹ã³ã³ãã©ã€ã¢ã³ã¹ãœãªã¥ãŒã·ã§ã³ãæäŸããŸãã
- Renovate: æè»ã§èšå®å¯èœãªäŸåé¢ä¿æŽæ°ããŒã«ã§ãå¹ åºãããã±ãŒãžãããŒãžã£ãšãã©ãããã©ãŒã ããµããŒãããŠããŸãã
äŸåé¢ä¿ç®¡çããŒã«ãéžæããéã«ã¯ã以äžã®èŠçŽ ãèæ ®ããŠãã ããïŒ
- çµ±å: ãã®ããŒã«ã¯æ¢åã®éçºã¯ãŒã¯ãããŒããã©ãããã©ãŒã ïŒäŸïŒGitHubãGitLabãBitbucketïŒãšã·ãŒã ã¬ã¹ã«çµ±åã§ããŸããïŒ
- æ©èœ: èªåæŽæ°ãã»ãã¥ãªãã£ã¹ãã£ã³ãã©ã€ã»ã³ã¹ã³ã³ãã©ã€ã¢ã³ã¹ãªã©ãå¿ èŠãªæ©èœãæäŸããŠããŸããïŒ
- äŸ¡æ Œ: äºç®ã«åã£ãŠããŸããïŒäžéšã®ããŒã«ã¯ããªãŒãã³ãœãŒã¹ãããžã§ã¯ããå°èŠæš¡ããŒã åãã«ç¡æãã©ã³ãæäŸããŠããŸãã
- ãµããŒã: åªããããã¥ã¡ã³ãããµããŒããªãœãŒã¹ããããŸããïŒ
å®è·µäŸãšãã¹ããã©ã¯ãã£ã¹
以äžã«ãããã³ããšã³ããããžã§ã¯ãã§èªåäŸåé¢ä¿ç®¡çã䜿çšããããã®å®è·µäŸãšãã¹ããã©ã¯ãã£ã¹ãããã€ã玹ä»ããŸãïŒ
äŸ1ïŒGitHubã§Dependabotãèšå®ãã
- GitHubãªããžããªã®èšå®ã«ç§»åããŸãã
- å·Šã®ãµã€ãããŒã§ãSecurityããã¯ãªãã¯ããŸãã
- ãVulnerability alertsãã®äžã§ãDependabotã¢ã©ãŒããšDependabotã»ãã¥ãªãã£ã¢ããããŒããæå¹ã«ããŸãã
- Dependabotã«ãã£ãŠäœæããããã«ãªã¯ãšã¹ãã確èªãããã¹ããåæ Œããã°ããŒãžããŸãã
äŸ2ïŒSnykãã»ãã¥ãªãã£ã¹ãã£ã³çšã«èšå®ãã
- Snykã¢ã«ãŠã³ãã«ãµã€ã³ã¢ããããŸãã
- SnykãGitHubïŒãŸãã¯ä»ã®ãã©ãããã©ãŒã ïŒãªããžããªã«æ¥ç¶ããŸãã
- ãããžã§ã¯ãã®è匱æ§ãã¹ãã£ã³ããããã«Snykãèšå®ããŸãã
- ã»ãã¥ãªãã£ã¬ããŒãã確èªããç¹å®ãããè匱æ§ã«å¯ŸåŠããŸãã
ãã¹ããã©ã¯ãã£ã¹
- ãã¹ãŠã®ããã³ããšã³ããããžã§ã¯ãã§èªåäŸåé¢ä¿ç®¡çãæå¹ã«ããã
- äŸåé¢ä¿ãæŽæ°ããããã³ã«å®è¡ãããããã«èªåãã¹ããèšå®ããã
- ã»ãã¥ãªãã£ã¢ã©ãŒããç£èŠããè匱æ§ã«è¿ éã«å¯ŸåŠããã
- äŸåé¢ä¿ã®æŽæ°ãæ³šææ·±ãã¬ãã¥ãŒããç Žå£ç倿Žãå°å ¥ããªãããšã確èªããã
- äºææ§ã®åé¡ãé¿ããããã«ãéçºç°å¢ãææ°ã®ç¶æ ã«ä¿ã€ã
- äŸåé¢ä¿ç®¡çãšã»ãã¥ãªãã£ã®éèŠæ§ã«ã€ããŠããŒã ãæè²ããã
倿§ãªéçºç°å¢ã«ãããäŸåé¢ä¿ç®¡ç
äžçäžã«åæ£ããããŒã ãšäœæ¥ããå Žåããè€æ°ã®å°åã«ãŸããããããžã§ã¯ãã§ã¯ã倿§ãªéçºç°å¢ã®ãã¥ã¢ã³ã¹ãèæ ®ããããšãäžå¯æ¬ ã§ãã以äžã«ãäŸåé¢ä¿ç®¡çã«å¹æçã«ã¢ãããŒãããæ¹æ³ã瀺ããŸãïŒ
- æšæºåãããããŒã«: ãã¹ãŠã®ããŒã ãšå Žæã§äžè²«ããäŸåé¢ä¿ç®¡çããŒã«ã®ã»ããã匷å¶ããŸããããã«ããæ··ä¹±ãæžããå šå¡ãåãèªèãæã€ããšãä¿èšŒãããŸãã`npm`ã`yarn`ã`pnpm`ã®ãããªããŒã«ã¯äžè²«ããŠèšå®ãããã¹ãã§ãã
- äžå€®éæš©åãªããžããª: çµç¹ã®ãã©ã€ããŒããªäŸåé¢ä¿ã管çããããã«ãäžå€®éæš©åãªããžããªïŒäŸïŒãã©ã€ããŒãnpmã¬ãžã¹ããªãJFrog Artifactoryã€ã³ã¹ã¿ã³ã¹ïŒã䜿çšããŸããããã«ããã管çãåäžããäžæ£ã¢ã¯ã»ã¹ã倿Žã®ãªã¹ã¯ãæžå°ããŸãã
- ããŒãžã§ãã³ã°æŠç¥: äŸåé¢ä¿ã®å€æŽã®æ§è³ªãäŒããããã«ãæç¢ºãªããŒãžã§ãã³ã°æŠç¥ïŒäŸïŒã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°ïŒãæ¡çšããŸããããã«ãããéçºè ã¯æŽæ°ã®æœåšçãªåœ±é¿ãçè§£ããããã«å¿ããŠèšç»ãç«ãŠãããšãã§ããŸãã
- å°ççãªèæ ®äºé : ç°ãªãå°ççãªå Žæã«ããããŒã ãšäœæ¥ããéã¯ããããã¯ãŒã¯ã®é å»¶ã«æ³šæããŠãã ãããéçºè ã«è¿ããµãŒããŒããäŸåé¢ä¿ãæäŸããããã«CDNïŒã³ã³ãã³ãããªããªãããã¯ãŒã¯ïŒã®äœ¿çšãæ€èšããããŠã³ããŒãé床ãåäžãããŸãã
- ã³ã³ãã©ã€ã¢ã³ã¹ãšã»ãã¥ãªãã£: äºæ¥ãå±éãããã¹ãŠã®å°åã§ãé¢é£ããããŒã¿ãã©ã€ãã·ãŒããã³ã»ãã¥ãªãã£èŠå¶ãéµå®ããŸããäŸåé¢ä¿ç®¡çã®å®è·µããããã®èŠå¶ã«æºæ ããŠããããšãããã³æ©å¯ããŒã¿ãä¿è·ããããã®é©åãªã»ãã¥ãªãã£å¯Ÿçãè¬ããããŠããããšã確èªããŸãã
ããã³ããšã³ãäŸåé¢ä¿ç®¡çã®æªæ¥
ããã³ããšã³ãäŸåé¢ä¿ç®¡çã®åéã¯åžžã«é²åããŠããŸããæ³šç®ãã¹ãããã€ãã®ãã¬ã³ãã以äžã«ç€ºããŸãïŒ
- èªååã®é²å±: äŸåé¢ä¿ç®¡çã«ããããããªãèªååãæåŸ ãããŸããç«¶åãèªåçã«æ€åºã»è§£æ±ºããæé©ãªæŽæ°æŠç¥ãææ¡ããæ°ããäŸåé¢ä¿ã®ããŒãžã§ã³ã«é©å¿ããããã«ã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ããããšããå¯èœãªããŒã«ãç»å Žããã§ãããã
- ã»ãã¥ãªãã£ã®åäž: ã»ãã¥ãªãã£ã¯åŒãç¶ãäž»èŠãªçŠç¹ã§ãããããé«åºŠãªè匱æ§ã¹ãã£ã³ãè åšæ€åºãèªå修埩ãæäŸããããŒã«ãç»å Žããã§ãããã
- AIãšã®çµ±å: 人工ç¥èœãäŸåé¢ä¿ç®¡çã«ãããŠåœ¹å²ãæããå¯èœæ§ããããŸããAIæèŒããŒã«ãäŸåé¢ä¿ã°ã©ããåæããæœåšçãªåé¡ãäºæž¬ããã€ã³ããªãžã§ã³ããªæšå¥šäºé ãæäŸãããããããŸããã
- 忣åäŸåé¢ä¿ç®¡ç: ãããã¯ãã§ãŒã³ã®ãããªæè¡ã䜿çšããŠãããå®å šã§éææ§ãé«ããå埩åã®ãã忣åäŸåé¢ä¿ç®¡çã·ã¹ãã ãäœãããå¯èœæ§ããããŸãã
çµè«
èªåäŸåé¢ä¿ç®¡çã¯ãçŸä»£ã®ããã³ããšã³ãéçºã«äžå¯æ¬ ã§ããæŽæ°ã®è¿œè·¡ããã¹ãã®å®è¡ãã»ãã¥ãªãã£è匱æ§ãžã®å¯ŸåŠãšãã£ãããã»ã¹ãèªååããããšã§ãDependabotãSnykãªã©ã®ããŒã«ã¯ãéçºè ãããå®å®çã§å®å šããã€ææ°ã®ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããã®ã«åœ¹ç«ã¡ãŸããGreenkeeperèªäœã¯ãã¯ãäž»èŠãªãœãªã¥ãŒã·ã§ã³ã§ã¯ãããŸãããããããå°å ¥ããååãšã¯ãŒã¯ãããŒã¯äŸç¶ãšããŠéèŠã§ãããçŸåšã§ã¯ä»ã®ãã©ãããã©ãŒã ã«çµ±åãããŠããŸãããããã®ããŒã«ãšãã¹ããã©ã¯ãã£ã¹ãåãå ¥ããããšã§ãããŒã ã®çç£æ§ãå€§å¹ ã«åäžããããªã¹ã¯ãäœæžããã³ãŒãã®å質ãé«ããããšãã§ããŸãã