Frontend Release Please (FRP) ããªãªãŒã¹ãèªååãããšã©ãŒãåæžããã°ããŒãã«ãªããŒã å¹çãåäžãããããšã§ãããã³ããšã³ãã®ãããã€ã¡ã³ãã«é©åœãããããæ¹æ³ãã玹ä»ããŸãã
Frontend Release Please: èªååã«ããããã³ããšã³ããªãªãŒã¹ã®å¹çå
ããŒã¹ã®éãWebéçºã®äžçã§ã¯ããŠãŒã¶ãŒã«æ©èœãè¿ éãã€ç¢ºå®ã«æäŸããããšãæãéèŠã§ããããã³ããšã³ãããŒã ã«ãšã£ãŠãã¢ããªã±ãŒã·ã§ã³ã®æ°ããŒãžã§ã³ããªãªãŒã¹ããããã»ã¹ã¯ãæäœæ¥ã®ã¹ããããæœåšçãªãšã©ãŒããããŠå€å€§ãªæéæè³ã䌎ãããã°ãã°ããã«ããã¯ãšãªããã¡ã§ããããã§åŒ·åãªè§£æ±ºçãšããŠç»å Žããã®ãFrontend Release Please (FRP)ã§ããããã¯ãããã³ããšã³ãã®ãªãªãŒã¹ãå¹çåããããã®èªååãããã¢ãããŒããæäŸããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ãFRPã®æŠå¿µããã®å©ç¹ãä»çµã¿ããããŠã°ããŒãã«ããŒã ãããå¹ççã§å ç¢ãªãããã€ã¡ã³ããå®çŸããããã«ãããã©ã®ããã«æŽ»çšã§ããããæ¢ããŸãã
åŸæ¥ã®ããã³ããšã³ããªãªãŒã¹ã®èª²é¡
解決çã«é£ã³èŸŒãåã«ãFRPã察åŠããåé¡ç¹ãçè§£ããããšãéèŠã§ããå€ãã®ããã³ããšã³ãããŒã ã¯ãå°ççãªå ŽæãããŒã ã®èŠæš¡ã«é¢ããããåæ§ã®èª²é¡ã«åãçµãã§ããŸã:
- æåããã»ã¹: ããã³ããšã³ãã³ãŒãã®ãã«ãããã¹ãããããã€ã«ã¯ãå€ãã®å Žåã倿°ã®æåã¹ããããå«ãŸããŸããããã«ã¯ããªããžããªã®ã¯ããŒã³äœæãäŸåé¢ä¿ã®ã€ã³ã¹ããŒã«ããããã¹ãã®å®è¡ããã«ãææç©ã®ã¢ããããŒããŸã§ãå€å²ã«ããããŸããåæåã¹ãããã¯ãã¥ãŒãã³ãšã©ãŒã®æ©äŒãšãªããŸãã
- éäžè²«æ§: æšæºåãããæé ããªããšãããŒã ã¡ã³ããŒããšã«ãªãªãŒã¹ã®ã¹ãããã®å®è¡æ¹æ³ããããã«ç°ãªãããããã€ãããã¢ããªã±ãŒã·ã§ã³ãç°å¢ã«äžæŽåãçããå¯èœæ§ããããŸãã
- æéæ¶è²»: æåãªãªãŒã¹ã¯æ¬è³ªçã«æéãããããŸãããã®æéã¯ãæ°æ©èœã®éçºãæ¢åæ©èœã®æ¹åããŸãã¯éèŠãªãã°ãžã®å¯Ÿå¿ã«è²»ããããšãã§ããŸãã
- ãšã©ãŒã®ãªã¹ã¯: å埩çãªæåã¿ã¹ã¯ã¯ãç²åŽãèŠèœãšãã«ã€ãªããå¯èœæ§ããããŸããééã£ããã©ã³ãããããã€ããããèšå®ã¹ããããå¿ããããšãã£ãåçŽãªãã¹ããé倧ãªçµæãæãããšããããŸãã
- å¯èŠæ§ã®æ¬ åŠ: çŽç²ã«æåã®ããã»ã¹ã§ã¯ããªãªãŒã¹ã®ã¹ããŒã¿ã¹ã远跡ãããã誰ãã©ã®ã¹ããããå®è¡ããããç¹å®ãããã倱æãã©ãã§çºçããããçªãæ¢ããããšãå°é£ãªå ŽåããããŸãã
- ãããã€ã®ããã«ããã¯: ããŒã ãæé·ãããããžã§ã¯ããããè€éã«ãªãã«ã€ããŠãæåãªãªãŒã¹ã¯é倧ãªããã«ããã¯ãšãªããå šäœçãªéçºé床ãäœäžãããå¯èœæ§ããããŸãã
- ã¯ãã¹ãã©ãŠã¶/ããã€ã¹ã§ã®ãã¹ã: å¹ åºããã©ãŠã¶ãããã€ã¹ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§ã®äºææ§ã確ä¿ããããšã¯ãæåã®ãªãªãŒã¹ãã§ãã¯ã«ãããªãè€éãããããããŸãã
ãããã®èª²é¡ã¯æ®éçãªãã®ã§ããã倧éžãè¶ããŠåæ£ããç°å¢ã§åãããŒã ã«ããåãå Žæã«ããããŒã ãšåãããã«åœ±é¿ãäžããŸããããå¹ççã§ä¿¡é Œæ§ã®é«ããªãªãŒã¹ããã»ã¹ã®å¿ èŠæ§ã¯ãäžçäžã®ããã³ããšã³ãéçºè ã«ãšã£ãŠå ±éã®ç®æšã§ãã
Frontend Release Please (FRP) ãšã¯äœãïŒ
Frontend Release Please (FRP) ã¯ãåäžã®ç¹å®ã®ããŒã«ã補åãã®ãã®ã§ã¯ãªããããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã®ãªãªãŒã¹ã©ã€ããµã€ã¯ã«å šäœãèªååããããšãäžå¿ãšããæŠå¿µçãªãã¬ãŒã ã¯ãŒã¯ã§ãããäžé£ã®ãã¹ããã©ã¯ãã£ã¹ã§ããæåã§ã¢ãããã¯ãªãªãªãŒã¹æé ããé¢ããäºæž¬å¯èœã§å埩å¯èœããã€é«åºŠã«èªååãããã¯ãŒã¯ãããŒãžã®ç§»è¡ãæå±ããŸãã
ãã®æ žå¿ã«ãããŠãFRPã¯ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ (CI) ãšç¶ç¶çããªããªãŒ/ãããã€ã¡ã³ã (CD)ããã°ãã°CI/CDãšåŒã°ããååãæŽ»çšããŸãããããããããã®ååãããã³ããšã³ãéçºç¹æã®ããŒãºãšã¯ãŒã¯ãããŒã«åãããŠå ·äœçã«èª¿æŽãããã®ã§ãã
ãFrontend Release Pleaseãã®ãPleaseãã¯ã人éäž»å°ã®ã³ãã³ãããèªååãããå®è¡ãžã®ç§»è¡ãæå³ããã·ã¹ãã ã«ãªãªãŒã¹ããã»ã¹ãåŠçããŠãããããã®äžå¯§ãªäŸé Œãšè§£éã§ããŸããããã¯ãä¿¡é Œæ§ãšå¹çæ§ããã£ãŠããªãªãŒã¹ããé¡ãããŸãããšã·ã¹ãã ã«äŸé Œããããšãæå³ããŸãã
FRPã®äž»èŠåå:
- èªåå第äž: ã³ãŒãã®ã³ããããããããã€ãç£èŠã«è³ããŸã§ããªãªãŒã¹ããã»ã¹ã®ãã¹ãŠã®ã¹ãããã¯å¯èœãªéãèªååãããã¹ãã§ãã
- ããŒãžã§ã³ç®¡çã·ã¹ãã ãšã®çµ±å: Gitã®ãããªããŒãžã§ã³ç®¡çã·ã¹ãã ãšã®æ·±ãçµ±åã¯ãã³ãŒãã®å€æŽã«åºã¥ããŠèªååããã»ã¹ãããªã¬ãŒããããã«äžå¯æ¬ ã§ãã
- èªåãã¹ã: å ç¢ãªèªåãã¹ãã¹ã€ãŒãïŒåäœãçµ±åããšã³ãããŒãšã³ãïŒã¯ãä¿¡é Œæ§ã®é«ãèªåãªãªãŒã¹ã®ããã¯ããŒã³ã§ãã
- ç°å¢ã®äžè²«æ§: ãèªåã®ãã·ã³ã§ã¯åããããšããåé¡ãæå°éã«æãããããéçºãã¹ããŒãžã³ã°ãæ¬çªç°å¢ãã§ããã ã䌌ããã®ã«ããããšãä¿èšŒãããŸãã
- ã€ãã¥ãŒã¿ãã«ãªãããã€ã¡ã³ã: æ¢åã®ãã®ã倿Žããã®ã§ã¯ãªããæ°ããããŒãžã§ã³ããããã€ããããšã§ãå®å®æ§ãåäžããããŒã«ããã¯ãç°¡çŽ åãããŸãã
- ç£èŠãšãã£ãŒãããã¯: ãããã€åŸã®åé¡ãæ€åºããŠéçºããŒã ã«è¿ éãªãã£ãŒãããã¯ãæäŸããããã«ãç¶ç¶çãªç£èŠãå®è£ ããŸãã
FRPã®ä»çµã¿: èªååããããªãªãŒã¹ãã€ãã©ã€ã³
FRPã®å®è£ ã«ã¯éåžžãèªååããããªãªãŒã¹ãã€ãã©ã€ã³ã®èšå®ãå«ãŸããŸãããã®ãã€ãã©ã€ã³ã¯ãã³ãŒãã®å€æŽã«ãã£ãŠããªã¬ãŒãããç¹å®ã®é åºã§å®è¡ãããäžé£ã®çžäºæ¥ç¶ãããã¹ãããã§ããå žåçãªFRPãã€ãã©ã€ã³ãåè§£ããŠã¿ãŸããã:
1. ã³ãŒãã®ã³ããããšããŒãžã§ã³ç®¡ç
ããã»ã¹ã¯ãéçºè ãã³ãŒãã®å€æŽãããŒãžã§ã³ç®¡çãªããžããªïŒæãäžè¬çã«ã¯GitïŒã«ã³ããããããšããããå§ãŸããŸãããã®ã³ãããã¯ããã£ãŒãã£ãŒãã©ã³ãã«å¯ŸããŠããŸãã¯çŽæ¥ã¡ã€ã³ãã©ã³ãã«å¯ŸããŠè¡ãããšãã§ããŸãïŒãã ããããè¯ãã¯ãŒã¯ãããŒç®¡çã®ããã«ã¯äžè¬çã«ãã£ãŒãã£ãŒãã©ã³ããæšå¥šãããŸãïŒã
äŸ: ãã³ã¬ããŒã«ã®éçºè
ãæ°ãããŠãŒã¶ãŒèªèšŒæ©èœã宿ãããGitHubãGitLabãBitbucketãªã©ã®ãã©ãããã©ãŒã ã§ãã¹ããããŠããGitãªããžããªã®feature/auth-login
ãšããååã®ãã©ã³ãã«ã³ãŒããã³ãããããŸãã
2. ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ (CI) ã®ããªã¬ãŒ
æ°ããã³ããããããŒãžãªã¯ãšã¹ããæ€åºãããšãCIãµãŒããŒïŒäŸ: Jenkins, GitLab CI, GitHub Actions, CircleCI, Azure PipelinesïŒãããªã¬ãŒãããŸããCIãµãŒããŒã¯ãã®åŸãããã€ãã®èªååã¿ã¹ã¯ãå®è¡ããŸã:
- ã³ãŒãã®ãã§ãã¯ã¢ãŠã: ãªããžããªããææ°ã®ã³ãŒããã¯ããŒã³ããŸãã
- äŸåé¢ä¿ã®ã€ã³ã¹ããŒã«: npmãYarnãªã©ã®ããã±ãŒãžãããŒãžã£ãŒã䜿çšããŠããããžã§ã¯ãã®äŸåé¢ä¿ãã€ã³ã¹ããŒã«ããŸãã
- ãªã³ãã£ã³ã°ãšéçè§£æ: ESLintãPrettierãªã©ã®ãªã³ã¿ãŒãéçè§£æããŒã«ãå®è¡ããŠãã³ãŒããå®è¡ããã«ã³ãŒãã®å質ãã¹ã¿ã€ã«ãæœåšçãªãšã©ãŒããã§ãã¯ããŸããããã¯ãã°ããŒãã«ããŒã éã§ã³ãŒãã®äžè²«æ§ãç¶æããããã«éèŠã§ãã
- åäœãã¹ã: åäœãã¹ããå®è¡ããŠãã¢ããªã±ãŒã·ã§ã³ã®åã ã®ã³ã³ããŒãã³ãã颿°ãæ€èšŒããŸãã
- çµ±åãã¹ã: çµ±åãã¹ããå®è¡ããŠãã¢ããªã±ãŒã·ã§ã³ã®ç°ãªãã¢ãžã¥ãŒã«ãæ£ãã飿ºããŠåäœããããšã確èªããŸãã
ãããã®CIã¹ãããã®ããããã倱æããå Žåããã€ãã©ã€ã³ã¯åæ¢ããéçºè ã«éç¥ãããŸãããã®ãã£ãŒãããã¯ã«ãŒãã¯ãåé¡ãæ©æã«çºèŠããããã«äžå¯æ¬ ã§ãã
3. ããã³ããšã³ãã¢ãŒãã£ãã¡ã¯ãã®ãã«ã
CIãã§ãã¯ãéããšããã€ãã©ã€ã³ã¯æ¬çªç°å¢åãã®ããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã®ãã«ãã«é²ã¿ãŸããããã«ã¯éåžžã以äžã®äœæ¥ãå«ãŸããŸã:
- ãã©ã³ã¹ãã€ã«: ææ°ã®JavaScript (ES6+) ããã®ä»ã®èšèªæ©èœïŒTypeScriptãªã©ïŒãããã©ãŠã¶äºæã®JavaScriptã«å€æããŸãã
- ãã³ãã«: WebpackãRollupãParcelãªã©ã®ããŒã«ã䜿çšããŠãJavaScriptãCSSããã®ä»ã®ã¢ã»ããããããã€çšã«æé©åããããã¡ã€ã«ã«ãã³ãã«ããŸãã
- æå°åãšé£èªå: 空çœãåé€ããã倿°åãçããããããŠãã³ãŒããã¡ã€ã«ã®ãµã€ãºãåæžããŸãã
- ã¢ã»ããã®æé©å: ç»åã®å§çž®ãSVGã®æé©åããã®ä»ã®éçã¢ã»ããã®åŠçãè¡ããŸãã
ãã®æ®µéã®åºåã¯ããŠãŒã¶ãŒã«æäŸã§ããäžé£ã®éçãã¡ã€ã«ïŒHTMLãCSSãJavaScriptãç»åïŒã§ãã
4. èªååãããEnd-to-End (E2E) ãã¹ããšãã©ãŠã¶ãã¹ã
ããã¯ããã³ããšã³ããªãªãŒã¹ã«ãšã£ãŠéèŠãªã¹ãããã§ãããããã€åã«ããã«ããããã¢ããªã±ãŒã·ã§ã³ã¯ãã°ãã°ã¹ããŒãžã³ã°ç°å¢ã«ãããã€ãããããç¬ç«ããŠãã¹ããããŸããCypressãSeleniumãPlaywrightãªã©ã®ãã¬ãŒã ã¯ãŒã¯ã䜿çšããèªåE2Eãã¹ãã¯ããŠãŒã¶ãŒã®æäœãã·ãã¥ã¬ãŒãããã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒã®èŠç¹ããæåŸ éãã«æ©èœããããšã確èªããŸãã
ã°ããŒãã«ãªèæ ®äºé : åœéçãªãªãŒãã£ãšã³ã¹åãã«ã¯ã以äžãæ€èšŒãããã¹ããå«ããããšãéèŠã§ã:
- ããŒã«ã©ã€ãŒãŒã·ã§ã³ãšåœéå (i18n/l10n): ã¢ããªã±ãŒã·ã§ã³ãç°ãªãèšèªã§ã³ã³ãã³ããæ£ãã衚瀺ããå°åããšã®ãã©ãŒãããïŒæ¥ä»ãé貚ïŒãå°éããããšã確èªããŸãã
- ã¯ãã¹ãã©ãŠã¶äºææ§: äž»èŠãªãã©ãŠã¶ïŒChromeãFirefoxãSafariãEdgeïŒã§ãã¹ããããŠãŒã¶ãŒããŒã¹ãå¿ èŠãšããå Žåã¯å€ãããŒãžã§ã³ã§ããã¹ãããŸãã
- ã¬ã¹ãã³ã·ããã¶ã€ã³: UIãäžçäžã§äœ¿çšãããããŸããŸãªç»é¢ãµã€ãºãããã€ã¹ã«æ£ããé©å¿ããããšã確èªããŸãã
5. ã¹ããŒãžã³ã°ãžã®ããã〠(ä»»æã ãæšå¥š)
ãã«ããããã¢ãŒãã£ãã¡ã¯ãã¯ãæ¬çªç°å¢ãå¿ å®ã«æš¡å£ããã¹ããŒãžã³ã°ç°å¢ã«ãããã€ãããããšããããããŸããããã«ãããæ¬çªç°å¢ã«ããã·ã¥ããåã«ãQAãã¹ã¿ãŒããããã¯ããããŒãžã£ãŒã«ããæçµçãªæåãã§ãã¯ãå¯èœã«ãªããŸããã¹ããŒãžã³ã°ç°å¢ã«å¯ŸããŠèªåã¹ã¢ãŒã¯ãã¹ããå®è¡ããããšãã§ããŸãã
6. æ¬çªç°å¢ãžã®ããã〠(ç¶ç¶çããªããªãŒ/ãããã€ã¡ã³ã)
åã®ã¹ããŒãžã®æåã«åºã¥ããŠïŒãããŠç¶ç¶çããªããªãŒã®å Žåã¯æåæ¿èªãçµãŠïŒãã¢ããªã±ãŒã·ã§ã³ã¯æ¬çªç°å¢ã«ãããã€ãããŸããããã¯ãæ§ã ãªæŠç¥ãéããŠå®çŸã§ããŸã:
- ãã«ãŒã°ãªãŒã³ãããã€ã¡ã³ã: 2ã€ã®åäžã®æ¬çªç°å¢ãç¶æããŸããæ°ããããŒãžã§ã³ã¯éã¢ã¯ãã£ããªç°å¢ïŒã°ãªãŒã³ïŒã«ãããã€ããããã©ãã£ãã¯ãåãæ¿ããããŸããåé¡ãçºçããå Žåã¯ãããã«å€ãç°å¢ïŒãã«ãŒïŒã«ãã©ãã£ãã¯ãæ»ãããšãã§ããŸãã
- ã«ããªã¢ãªãªãŒã¹: æ°ããããŒãžã§ã³ã¯ããŸããŠãŒã¶ãŒããµãŒããŒã®å°ããªãµãã»ããã«å±éãããŸãããªãªãŒã¹ãå®å®ããŠããã°ãåŸã ã«æ®ãã®ãŠãŒã¶ãŒããŒã¹ã«å±éãããŸããããã¯ãã°ããŒãã«ãªãŠãŒã¶ãŒããŒã¹ã®ãªã¹ã¯ã軜æžããã®ã«éåžžã«åªããŠããŸãã
- ããŒãªã³ã°ã¢ããããŒã: ãµãŒããŒã1å°ãã€æŽæ°ãããããããããã€ããã»ã¹äžãã¢ããªã±ãŒã·ã§ã³ã¯å©çšå¯èœãªç¶æ ãç¶æããŸãã
ãããã€æŠç¥ã®éžæã¯ãã¢ããªã±ãŒã·ã§ã³ã®éèŠåºŠãšããŒã ã®ãªã¹ã¯èš±å®¹åºŠã«ãããŸãã
7. ãããã€åŸã®ç£èŠãšããŒã«ããã¯
ãããã€åŸãç¶ç¶çãªç£èŠãäžå¯æ¬ ã§ããSentryãDatadogãNew Relicãªã©ã®ããŒã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ããšã©ãŒããŠãŒã¶ãŒã®è¡åã远跡ã§ããŸããäœããã®ç°åžžãããã°ããŒã ã«éç¥ããããã«ãèªåã¢ã©ãŒããèšå®ããå¿ èŠããããŸãã
ããŒã«ããã¯ã¡ã«ããºã : ããå®çŸ©ãããèªååãããããŒã«ããã¯ããã»ã¹ã¯äžå¯æ¬ ã§ãããããã€åŸã«é倧ãªåé¡ãæ€åºãããå Žåãã·ã¹ãã ã¯æå°éã®ããŠã³ã¿ã€ã ã§ä»¥åã®å®å®ããããŒãžã§ã³ã«æ»ãããšãã§ããã¹ãã§ãã
äŸ: ãã«ãªã³ã®ããŒã ãæ°ããããŒãžã§ã³ããããã€ããŸããç£èŠããŒã«ããªãŒã¹ãã©ãªã¢ã®ãŠãŒã¶ãŒããå ±åãããJavaScriptãšã©ãŒã®æ¥å¢ãæ€åºããŸããã«ããªã¢ãªãªãŒã¹æŠç¥ã«ããã圱é¿ãåãããŠãŒã¶ãŒã¯ããã5%ã§ãããèªåããŒã«ããã¯ããã»ã¹ãå³åº§ã«ãããã€ãå ã«æ»ããããŒã ã¯ãšã©ãŒã調æ»ããŸãã
ã°ããŒãã«ããŒã ãFRPãå°å ¥ããã¡ãªãã
FRPã¢ãããŒããæ¡çšããããšã¯ãç¹ã«å°ççã«åæ£ããããŒã ã«ãšã£ãŠå€§ããªå©ç¹ããããããŸã:
- é床ãšå¹çã®åäž: å埩çãªã¿ã¹ã¯ãèªååããããšã§ãåãªãªãŒã¹ã«ãããæéãå€§å¹ ã«ççž®ãããããé »ç¹ãªãããã€ãšäžçäžã®ãŠãŒã¶ãŒãžã®äŸ¡å€ã®è¿ éãªæäŸãå¯èœã«ãªããŸãã
- ãšã©ãŒã®åæžãšå質ã®åäž: èªååã«ããããã¥ãŒãã³ãšã©ãŒã®å¯èœæ§ãæå°éã«æããããŸãããã¹ããšãããã€ã¹ãããã®äžè²«ããå®è¡ã¯ãããå®å®ããä¿¡é Œæ§ã®é«ããªãªãŒã¹ã«ã€ãªãããŸãã
- éçºè ã®çç£æ§åäž: éçºè ã¯æåã®ãªãªãŒã¹äœæ¥ã«è²»ããæéãæžãããæ©èœã®æ§ç¯ã«ããå€ãã®æéãè²»ããããšãã§ããŸããèªåãã¹ãããã®è¿ éãªãã£ãŒãããã¯ã«ãŒãã¯ããã°ãããéãä¿®æ£ããã®ã«åœ¹ç«ã¡ãŸãã
- ã³ã©ãã¬ãŒã·ã§ã³ã®åŒ·å: æšæºåãããèªååããã»ã¹ã¯ãå Žæã«é¢ããããã¹ãŠã®ããŒã ã¡ã³ããŒã«æç¢ºã§äžè²«ããã¯ãŒã¯ãããŒãæäŸããŸãã誰ããäœãæåŸ ããã·ã¹ãã ãã©ã®ããã«æ©èœããããç¥ã£ãŠããŸãã
- å¯èŠæ§ãšè¿œè·¡å¯èœæ§ã®åäž: CI/CDãã©ãããã©ãŒã ã¯ããã¹ãŠã®ãªãªãŒã¹ã®ãã°ãšå±¥æŽãæäŸããããã倿Žã®è¿œè·¡ãåé¡ã®ç¹å®ããªãªãŒã¹ããã»ã¹ã®çè§£ã容æã«ãªããŸãã
- ããŒã«ããã¯ã®ç°¡çŽ å: èªååãããããŒã«ããã¯æé ã«ãããåé¡ã®ãããªãªãŒã¹ãçºçããå Žåã§ããã·ã¹ãã ã¯è¿ éã«å®å®ããç¶æ ã«æ»ãããšãã§ãããŠãŒã¶ãŒãžã®åœ±é¿ãæå°éã«æããŸãã
- ã³ã¹ãåæž: èªååã®èšå®ã«ã¯åææè³ãå¿ èŠã§ãããéçºè ã®æéã®ç¯çŽããšã©ãŒåŠçã®åæžãçŽæã®ççž®ã«ããé·æçãªç¯çŽã¯ããã°ãã°ã³ã¹ããäžåããŸãã
- ã¹ã±ãŒã©ããªãã£: ããŒã ãšãããžã§ã¯ããæé·ããã«ã€ããŠãèªååãããã·ã¹ãã ã¯æåããã»ã¹ãããã¯ããã«å¹æçã«ã¹ã±ãŒã«ããŸãã
FRPã®ããã®äž»èŠãªæè¡ãšããŒã«
FRPã®å®è£ ã¯ãèªååãã€ãã©ã€ã³ã圢æããããã«ã·ãŒã ã¬ã¹ã«çµ±åãããå ç¢ãªããŒã«ã»ããã«äŸåããŸããäž»èŠãªã«ããŽãªãšäžè¬çãªäŸã以äžã«ç€ºããŸã:
1. ããŒãžã§ã³ç®¡çã·ã¹ãã (VCS)
- Git: 忣ããŒãžã§ã³ç®¡çã®äºå®äžã®æšæºã
- ãã©ãããã©ãŒã : GitHub, GitLab, Bitbucket, Azure Repos.
2. ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³/ç¶ç¶çããªããªãŒ (CI/CD) ãã©ãããã©ãŒã
- Jenkins: é«åºŠã«ã«ã¹ã¿ãã€ãºå¯èœã§æ¡åŒµæ§ã®ãããªãŒãã³ãœãŒã¹ã®CI/CDãµãŒããŒã
- GitHub Actions: GitHubãªããžããªå ã«çŽæ¥çµ±åãããCI/CDã
- GitLab CI/CD: GitLabå ã«çµã¿èŸŒãŸããCI/CDæ©èœã
- CircleCI: é床ãšäœ¿ããããã§ç¥ãããã¯ã©ãŠãããŒã¹ã®CI/CDãã©ãããã©ãŒã ã
- Azure Pipelines: Azure DevOpsã®äžéšã§ãæ§ã ãªãã©ãããã©ãŒã åãã®CI/CDãæäŸã
- Travis CI: ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§ãã䜿ããã人æ°ã®CIãµãŒãã¹ã
3. ãã«ãããŒã«ãšãã³ãã©
- Webpack: é«åºŠã«èšå®å¯èœãªã¢ãžã¥ãŒã«ãã³ãã©ã§ãReactãšã³ã·ã¹ãã ã§åºã䜿çšãããŠããŸãã
- Rollup: å¹ççãªã³ãŒãåå²ã«ãããã©ã€ãã©ãªã§ãã奜ãŸããã¢ãžã¥ãŒã«ãã³ãã©ã
- Vite: 次äžä»£ã®ããã³ããšã³ããã«ãããŒã«ã§ãå€§å¹ ã«é«éãªã³ãŒã«ããµãŒããŒèµ·åãšãããã¢ãžã¥ãŒã«ãªãã¬ãŒã¹ã¡ã³ããæäŸã
- Parcel: èšå®äžèŠã®Webã¢ããªã±ãŒã·ã§ã³ãã³ãã©ã
4. ãã¹ããã¬ãŒã ã¯ãŒã¯
- åäœãã¹ã: Jest, Mocha, Jasmine.
- çµ±å/E2Eãã¹ã: Cypress, Selenium WebDriver, Playwright, Puppeteer.
- ãã©ãŠã¶ãã¹ããã©ãããã©ãŒã (ã¯ãã¹ãã©ãŠã¶/ããã€ã¹çš): BrowserStack, Sauce Labs, LambdaTest.
5. ãããã€ããŒã«ãšãªãŒã±ã¹ãã¬ãŒã·ã§ã³
- ã³ã³ããå: Docker (ã¢ããªã±ãŒã·ã§ã³ãšãã®äŸåé¢ä¿ã®ããã±ãŒãžã³ã°çš)ã
- ãªãŒã±ã¹ãã¬ãŒã·ã§ã³: Kubernetes (ã³ã³ããåãããã¢ããªã±ãŒã·ã§ã³ãå€§èŠæš¡ã«ç®¡çãããã)ã
- ã¯ã©ãŠããããã€ããŒCLI: AWS CLI, Azure CLI, Google Cloud SDK (ã¯ã©ãŠããµãŒãã¹ãžã®ãããã€çš)ã
- ãµãŒããŒã¬ã¹ãã¬ãŒã ã¯ãŒã¯: Serverless Framework, AWS SAM (S3éçãŠã§ããµã€ãã®ãããªãµãŒããŒã¬ã¹ããã³ããšã³ããã¹ãã£ã³ã°ã®ãããã€çš)ã
- ãããã€ãã©ãããã©ãŒã : Netlify, Vercel, Firebase Hosting, AWS Amplify, GitHub Pages (éçãµã€ãåãã«çµ±åãããCI/CDããã°ãã°æäŸ)ã
6. ç£èŠãšãšã©ãŒè¿œè·¡
- ãšã©ãŒè¿œè·¡: Sentry, Bugsnag, Rollbar.
- ã¢ããªã±ãŒã·ã§ã³ããã©ãŒãã³ã¹ç£èŠ (APM): Datadog, New Relic, Dynatrace, Grafana.
- ãã®ã³ã°: ELK Stack (Elasticsearch, Logstash, Kibana), Splunk.
FRPã®å®è£ : ã¹ããããã€ã¹ãããã®ã¢ãããŒã
èªååããããªãªãŒã¹ããã»ã¹ãžã®ç§»è¡ã«ã¯ãèšç»ãšäœç³»çãªã¢ãããŒããå¿ èŠã§ãã以äžã«éå§æ¹æ³ã瀺ããŸã:
ã¹ããã1: çŸåšã®ãªãªãŒã¹ããã»ã¹ãè©äŸ¡ãã
èªååããåã«ãæ¢åã®ãªãªãŒã¹æé ãæç¢ºã«ææžåããããã«ããã¯ãç¹å®ãããšã©ãŒãçºçããããé åãçªãæ¢ããŸããããŒã ãçµéšããŠããåé¡ç¹ãçè§£ããŸãã
ã¹ããã2: ç®æšç¶æ ãå®çŸ©ãã
ããªãã®ããŒã ã«ãšã£ãŠçæ³çãªèªåãªãªãŒã¹ãšã¯ã©ã®ãããªãã®ã§ããïŒããªã¬ãŒããã€ãã©ã€ã³ã®ã¹ããŒãžãå®è¡ããå¿ èŠããããã¹ãããããã€æŠç¥ãå®çŸ©ããŸãã
ã¹ããã3: ããŒã«ãéžæãã
ãããžã§ã¯ãã®æè¡ã¹ã¿ãã¯ãšããŒã ã®å°éç¥èã«æãé©ããCI/CDãã©ãããã©ãŒã ããã«ãããŒã«ããã¹ããã¬ãŒã ã¯ãŒã¯ããããã€ã¡ã«ããºã ãéžæããŸããã€ã³ãã©ã倿Žãããå¯èœæ§ãããå Žåã¯ãã¯ã©ãŠãã«äŸåããªããœãªã¥ãŒã·ã§ã³ãæ€èšããŠãã ããã
ã¹ããã4: ãã¹ããèªååãã
ããã¯ä¿¡é Œæ§ã®é«ãèªååã®åºç€ã§ããå æ¬çãªåäœãã¹ããæžãããšããå§ããŸããåŸã ã«çµ±åãã¹ãããšã³ãããŒãšã³ããã¹ããæ§ç¯ããŠãããŸãããããã®ãã¹ããé«éã§ä¿¡é Œæ§ãé«ãããšã確èªããŸãã
ã¹ããã5: CIãã€ãã©ã€ã³ãæ§ç¯ãã
CI/CDãã©ãããã©ãŒã ãèšå®ããŠãã³ãŒãã®ã³ãããããã«ãªã¯ãšã¹ãããšã«ãããžã§ã¯ããèªåçã«ãã«ããããªã³ã¿ãŒãéçè§£æãåäœ/çµ±åãã¹ããå®è¡ããããã«ããŸããè¿ éãªãã£ãŒãããã¯ã«ãŒããç®æããŸãã
ã¹ããã6: ãã«ãã¢ãŒãã£ãã¡ã¯ãã®äœæãèªååãã
ãã«ãããã»ã¹ãåžžã«ãããã€å¯èœãªã¢ãŒãã£ãã¡ã¯ããçæããããã«ããŸãããããCIãã€ãã©ã€ã³ã«çµ±åããŸãã
ã¹ããã7: èªåãããã€ã¡ã³ããå®è£ ãã
CI/CDãã€ãã©ã€ã³ãèšå®ããŠããã«ãã¢ãŒãã£ãã¡ã¯ããã¹ããŒãžã³ã°ç°å¢ãæ¬çªç°å¢ã«ãããã€ããŸããæåã¯ããŒãªã³ã°ã¢ããããŒãã®ãããªã·ã³ãã«ãªãããã€æŠç¥ããå§ããèªä¿¡ãã€ãã«ã€ããŠãã«ããªã¢ãªãªãŒã¹ãªã©ã®ããæŽç·ŽãããæŠç¥ãåŸã ã«æ¡çšããŠãããŸãã
ã¹ããã8: ç£èŠãšããŒã«ããã¯ãçµ±åãã
ãããã€ãããã¢ããªã±ãŒã·ã§ã³ã®ç£èŠãšã¢ã©ãŒããèšå®ããŸããèªååãããããŒã«ããã¯æé ãå®çŸ©ãããã¹ãããŸãã
ã¹ããã9: ååŸ©ãšæ¹å
èªååã¯ç¶ç¶çãªããã»ã¹ã§ããç¶ç¶çã«ãã€ãã©ã€ã³ãèŠçŽããããŒã ããã®ãã£ãŒãããã¯ãåéããé床ãä¿¡é Œæ§ãã«ãã¬ããžãæ¹åããæ©äŒãæ¢ããŸããã°ããŒãã«ãªãŠãŒã¶ãŒããŒã¹ãé²åããã«ã€ããŠããªãªãŒã¹ããã»ã¹ãé²åãããå¿ èŠããããŸãã
FRPã«ãããã°ããŒãã«ãªèæ ®äºé ãžã®å¯Ÿå¿
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã«FRPãå®è£ ããéã«ã¯ãããã€ãã®ç¹å®ã®èæ ®äºé ãé¢ä¿ããŠããŸã:
- ã¿ã€ã ãŸãŒã³: èªååãããããã»ã¹ã¯ã¿ã€ã ãŸãŒã³ã«äŸåããã«å®è¡ãããŸãããããããããã€ãæ©å¯æ§ã®é«ãã¿ã¹ã¯ã®ã¹ã±ãžã¥ãŒã«èšå®ã«ã¯ãç°ãªãã¿ã€ã ãŸãŒã³éã§ã®èª¿æŽãå¿ èŠã«ãªãå ŽåããããŸããCI/CDããŒã«ã§ã¯ãUTCãŸãã¯ç¹å®ã®ã¿ã€ã ãŸãŒã³ã«åºã¥ããŠã¹ã±ãžã¥ãŒã«ãèšå®ã§ããããšããããããŸãã
- ã€ã³ãã©ã¹ãã©ã¯ãã£: ãããã€ã¿ãŒã²ããã¯ãäžçäžã«åæ£ããŠããå¯èœæ§ããããŸãïŒäŸ: CDNããšããžãµãŒããŒïŒãèªååããŒã«ããããã®åæ£ã€ã³ãã©ãžã®ãããã€ãå¹ççã«åŠçã§ããããšã確èªããŠãã ããã
- ããŒã«ã©ã€ãŒãŒã·ã§ã³ãšåœéå (i18n/l10n): åè¿°ã®éããæ£ããèšèªã®ã¬ã³ããªã³ã°ãæ¥ä»/æå»åœ¢åŒãé貚ã®ãã¹ãã¯éåžžã«éèŠã§ããèªåãã¹ãããããã®åŽé¢ãã«ããŒããŠããããšã確èªããŠãã ããã
- ã³ã³ãã©ã€ã¢ã³ã¹ãšèŠå¶: å°åã«ãã£ãŠããŒã¿ãã©ã€ãã·ãŒãã³ã³ãã©ã€ã¢ã³ã¹ã«é¢ããèŠå¶ãç°ãªããŸãïŒäŸ: GDPR, CCPAïŒãç¹ã«ãã¹ãç°å¢ã§ã®ãŠãŒã¶ãŒããŒã¿ã«é¢ããŠããªãªãŒã¹ããã»ã¹ãããããå°éããŠããããšã確èªããŠãã ããã
- ãããã¯ãŒã¯é å»¶: æ§ã ãªå Žæã«ããããŒã ã«ãšã£ãŠããããã¯ãŒã¯é å»¶ã¯ãã«ãæéããããã€é床ã«åœ±é¿ãäžããå¯èœæ§ããããŸããå¯èœãªå Žåã¯ãå°ççã«åæ£ãããã«ããšãŒãžã§ã³ããã¯ã©ãŠããµãŒãã¹ã掻çšããŠãã ããã
- 倿§ãªãŠãŒã¶ãŒããŒã¹: ã°ããŒãã«ãŠãŒã¶ãŒã®ãã©ãŠã¶ãããã€ã¹ã®ç¶æ³ãçè§£ããŠãã ãããèªåãã¹ãæŠç¥ã¯ããã®å€æ§æ§ãåæ ãããã®ã§ãªããã°ãªããŸããã
é¿ããã¹ãäžè¬çãªèœãšã穎
æåã®æå³ãæã£ãŠããŠããããŒã ã¯FRPãæ¡çšããéã«èª²é¡ã«çŽé¢ããããšããããŸã:
- äžå®å šãªãã¹ãã«ãã¬ããž: ååãªèªåãã¹ããªãã§ãªãªãŒã¹ããããšã¯ãçœå®³ã®å ã§ããå æ¬çãªãã¹ããåªå ããŠãã ããã
- ç£èŠã®ç¡èŠ: å ç¢ãªç£èŠãªãã§ãããã€ãããšããŠãŒã¶ãŒãå ±åãããŸã§äœããããŸããã£ãŠããªãããšã«æ°ã¥ããªãããšã«ãªããŸãã
- è€éãªæåã¹ãããã®æ®å: éå€§ãªæåã¹ããããæ®ã£ãŠãããšãèªååã®å©ç¹ã¯æžå°ããŸããåžžã«ããå€ãã®èªååãç®æããŠãã ããã
- ãã€ãã©ã€ã³ã®å®è¡é »åºŠãäœã: CI/CDãã€ãã©ã€ã³ã¯ããªãªãŒã¹ã®çŽåã ãã§ãªããæå³ã®ããã³ãŒã倿Žããšã«ããªã¬ãŒãããã¹ãã§ãã
- è³åã®æ¬ åŠ: ããŒã å šäœãèªååãžã®ç§»è¡ãçè§£ããæ¯æããŠããããšã確èªããŠãã ããã
- éå°ãªèšèš: ã·ã³ãã«ã§æ©èœãããã€ãã©ã€ã³ããå§ããå¿ èŠã«å¿ããŠåŸã ã«è€éããå ããŠãã ããã忥ãããã¹ãŠãèªååããããšããªãã§ãã ããã
ããã³ããšã³ããªãªãŒã¹ã®æªæ¥
Frontend Release Pleaseã¯éçãªæŠå¿µã§ã¯ãªããé²åãç¶ãããã®ã§ããããã³ããšã³ãæè¡ãšãããã€æŠç¥ãæçããã«ã€ããŠãFRPã¯é©å¿ãç¶ããŸãã以äžã®ããšãæåŸ ã§ããŸã:
- AIãæŽ»çšãããã¹ããšç£èŠ: AIãšæ©æ¢°åŠç¿ã¯ãåé¡ããŠãŒã¶ãŒã«åœ±é¿ãäžããåã«æœåšçãªåé¡ãç¹å®ãããªãªãŒã¹æŠç¥ãæé©åããäžã§ãã倧ããªåœ¹å²ãæããã§ãããã
- ãµãŒããŒã¬ã¹ããã³ãšããžã³ã³ãã¥ãŒãã£ã³ã°ãžã®ãããã€ã¡ã³ã: ãµãŒããŒã¬ã¹ã¢ãŒããã¯ãã£ãšãšããžã³ã³ãã¥ãŒãã£ã³ã°ã®æ¡çšãå¢å ããã«ã€ããŠãããã«æŽç·Žãããåçãªãããã€ã¡ã³ãèªååãå¿ èŠã«ãªããŸãã
- ããã³ããšã³ãã®ããã®GitOps: Gitã宣èšçãªã€ã³ãã©ã¹ãã©ã¯ãã£ãšã¢ããªã±ãŒã·ã§ã³ç¶æ ã®å¯äžã®ä¿¡é Œã§ããæ å ±æºãšããGitOpsååã®é©çšããããã³ããšã³ãã®ãããã€ã¡ã³ãã§ããäžè¬çã«ãªãã§ãããã
- ã·ããã¬ããã»ãã¥ãªãã£: ã»ãã¥ãªãã£ãã§ãã¯ããã€ãã©ã€ã³ã®æ©ã段éã«çµ±åããããšïŒDevSecOpsïŒãæšæºçãªæ £è¡ã«ãªãã§ãããã
çµè«
Frontend Release Pleaseã¯ãããã³ããšã³ãããŒã ããœãããŠã§ã¢ããªãªãŒã¹ãããšããéèŠãªã¿ã¹ã¯ã«åãçµãæ¹æ³ã«ãããæ ¹æ¬çãªå€åã衚ããŠããŸããèªååãåãå ¥ããå ç¢ãªãã¹ããçµ±åããææ°ã®CI/CDããŒã«ã掻çšããããšã§ãããŒã ã¯ããéããããä¿¡é Œæ§ãé«ããããå¹ççãªãããã€ã¡ã³ããå®çŸã§ããŸããã°ããŒãã«ããŒã ã«ãšã£ãŠããã®èªååã¯çç£æ§ã®åäžã ãã§ãªãã倿§ãªåžå Žã§é«å質ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãäžè²«ããŠæäŸããããã«äžå¯æ¬ ã§ããFRPæŠç¥ãžã®æè³ã¯ãããŒã ã®ä¿ææ§ã補åã®å®å®æ§ããããŠãŠãŒã¶ãŒã®æºè¶³åºŠãžã®æè³ã§ãã
仿¥èªååã§ããæåã®ã¹ããããäžã€èŠã€ããããšããå§ããŠãã ãããå®å šã«èªååãããããã³ããšã³ããªãªãŒã¹ããã»ã¹ãžã®éã®ãã¯æ®µéçã§ããããã®å ±é ¬ã¯å€§ãããã®ã§ããäžçäžã®ãŠãŒã¶ãŒããã®æ©æµã«æè¬ããã§ãããã