Gitã§ããã³ããšã³ãã®ããŒãžã§ã³ç®¡çããã¹ã¿ãŒããŸããããå¹ççãªã¯ãŒã¯ãããŒããã©ã³ãæŠç¥ããããã€æè¡ã解説ããŸãã
ããã³ããšã³ãã®ããŒãžã§ã³ç®¡çïŒGitã¯ãŒã¯ãããŒãšãããã€æŠç¥
ãŠã§ãéçºã®é²åãç¶ããäžã§ãå¹ççãªããŒãžã§ã³ç®¡çã¯éåžžã«éèŠã§ãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãšãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæ§ç¯ãã責任ãè² ãããã³ããšã³ãéçºè ã¯ãã³ãŒãã管çãã广çã«å ±åäœæ¥ãè¡ããã·ãŒã ã¬ã¹ãªãããã€ã確å®ã«ããããã«ãGitã®ãããªããŒãžã§ã³ç®¡çã·ã¹ãã ã«å€§ããäŸåããŠããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ãããã³ããšã³ããããžã§ã¯ãã«ç¹åããGitã¯ãŒã¯ãããŒãšãããã€æŠç¥ã解説ãããã®é åã«ãããç¬èªã®èª²é¡ãšæ©äŒã«å¯ŸåŠããŸãã
ããŒãžã§ã³ç®¡çãããã³ããšã³ãéçºã«äžå¯æ¬ ãªçç±
ããŒãžã§ã³ç®¡çã·ã¹ãã ã¯ã倿Žã远跡ãã以åã®ç¶æ ã«æ»ããäºãã®äœæ¥ãäžæžãããããšãªãããŒã ãšå ±åäœæ¥ãè¡ãããã®æ§é åãããæ¹æ³ãæäŸããŸããããã³ããšã³ãéçºè ã«ãšã£ãŠãããã¯UIéçºã®å埩çãªæ§è³ªãšãææ°ã®Webã¢ããªã±ãŒã·ã§ã³ã®è€éããå¢ããŠãããããç¹ã«éèŠã§ããããŒãžã§ã³ç®¡çãç¹ã«Gitãäžå¯æ¬ ãªçç±ã¯æ¬¡ã®ãšããã§ãã
- ã³ã©ãã¬ãŒã·ã§ã³ïŒ è€æ°ã®éçºè ããç«¶åããããšãªãåããããžã§ã¯ãã«åæã«åãçµãããšãã§ããŸããGitã®ãã©ã³ãã³ã°ãšããŒãžæ©èœã¯ãã·ãŒã ã¬ã¹ãªã³ã©ãã¬ãŒã·ã§ã³ãä¿é²ããŸãã
- 倿Žè¿œè·¡ïŒ ãã¹ãŠã®å€æŽãèšé²ãããéçºè ã¯ã³ãŒãããŒã¹ã®é²åãçè§£ãããã°ã®æ ¹æ¬åå ãç¹å®ã§ããŸãã
- 以åã®ç¶æ ãžã®åŸ©å ïŒ æ°ããæ©èœããšã©ãŒãæå³ããªãçµæãæããå Žåãéçºè ã¯ç°¡åã«å®å®ããããŒãžã§ã³ã®ã³ãŒãã«æ»ãããšãã§ããŸãã
- å®éšïŒ éçºè ã¯ãã¡ã€ã³ã®ã³ãŒãããŒã¹ãäžæããããšãªããåé¢ããããã©ã³ãã§æ°ããã¢ã€ãã¢ãæ©èœã詊ãããšãã§ããŸãã
- ãããã€ç®¡çïŒ ããŒãžã§ã³ç®¡çã·ã¹ãã ã¯ããããã€ãã€ãã©ã€ã³ãšçµ±åãããããšãå€ãããã¹ãããæ¿èªãããã³ãŒãã®ã¿ãæ¬çªç°å¢ã«ãããã€ãããããã«ããŸãã
Gitã®åºæ¬ãçè§£ãã
ã¯ãŒã¯ãããŒãšæŠç¥ãæãäžããåã«ãGitã®åºæ¬çãªæŠå¿µãçè§£ããããšãäžå¯æ¬ ã§ãã
- ãªããžããªïŒRepoïŒïŒ Gitã«ãã£ãŠç®¡çããããã¹ãŠã®ãããžã§ã¯ããã¡ã€ã«ãå±¥æŽãã¡ã¿ããŒã¿ã®ã³ã³ããã
- ã³ãããïŒ ç¹å®ã®æç¹ã§è¡ããããªããžããªãžã®å€æŽã®ã¹ãããã·ã§ãããåã³ãããã«ã¯äžæã®èå¥åïŒSHA-1ããã·ã¥ïŒããããŸãã
- ãã©ã³ãïŒ ç¬ç«ããéçºã©ã€ã³ããã©ã³ãã䜿çšãããšãéçºè ã¯ã¡ã€ã³ã®ã³ãŒãããŒã¹ã«åœ±é¿ãäžããããšãªããæ°ããæ©èœããã°ä¿®æ£ã«åãçµãããšãã§ããŸãã
- ããŒãžïŒ ãããã©ã³ãããå¥ã®ãã©ã³ããžã®å€æŽãçµã¿åãããããã»ã¹ã
- ãã«ãªã¯ãšã¹ãïŒPRïŒïŒ ãããã©ã³ããå¥ã®ãã©ã³ãã«ããŒãžããããã®ãªã¯ãšã¹ããéåžžã¯ãã³ãŒãã¬ãã¥ãŒãšãã£ã¹ã«ãã·ã§ã³ã䌎ããŸãã
- ã¯ããŒã³ïŒ ãªã¢ãŒããªããžããªã®ããŒã«ã«ã³ããŒãäœæããããšã
- ããã·ã¥ïŒ ããŒã«ã«ã³ãããããªã¢ãŒããªããžããªã«ã¢ããããŒãããããšã
- ãã«ïŒ ãªã¢ãŒããªããžããªããããŒã«ã«ãªããžããªã«å€æŽãããŠã³ããŒãããããšã
- ãã§ããïŒ èªåçã«ããŒãžããããšãªãããªã¢ãŒããªããžããªããææ°ã®å€æŽãååŸããããšã
- ã¹ã¿ãã·ã¥ïŒ ã³ãããããæºåãã§ããŠããªã倿Žãäžæçã«ä¿åããããšã
ããã³ããšã³ãéçºã§ãã䜿çšãããGitã¯ãŒã¯ãããŒ
Gitã¯ãŒã¯ãããŒã¯ãéçºè ããã©ã³ããã³ããããããã³ããŒãžã䜿çšããŠã³ãŒã倿Žã管çããæ¹æ³ãå®çŸ©ããŸããããŸããŸãªããŒã ãµã€ãºãšãããžã§ã¯ãã®è€éãã«å¯Ÿå¿ããããã€ãã®äžè¬çãªã¯ãŒã¯ãããŒããããŸãã以äžã«ããã€ãã®äžè¬çãªã¢ãããŒãã瀺ããŸãã
1. éäžã¯ãŒã¯ãããŒ
éäžã¯ãŒã¯ãããŒã§ã¯ããã¹ãŠã®éçºè ãåäžã®`main`ïŒãŸãã¯`master`ïŒãã©ã³ãã§çŽæ¥äœæ¥ããŸããããã¯æãã·ã³ãã«ãªã¯ãŒã¯ãããŒã§ãããå€§èŠæš¡ãªããŒã ãè€éãªãããžã§ã¯ãã«ã¯é©ããŠããŸãããç«¶åãçºçãã䞊è¡éçºã®åãçµã¿ã管çããããšãå°é£ã«ãªãå¯èœæ§ããããŸãã
å©ç¹ïŒ
- çè§£ãããããå®è£ ãç°¡åã§ãã
- ã³ã©ãã¬ãŒã·ã§ã³ãéãããå°èŠæš¡ããŒã ã«é©ããŠããŸãã
æ¬ ç¹ïŒ
- ç¹ã«è€æ°ã®éçºè ãåããã¡ã€ã«ã§äœæ¥ããå Žåãç«¶åã®ãªã¹ã¯ãé«ãã§ãã
- 䞊è¡éçºã®åãçµã¿ã管çããããšãå°é£ã§ãã
- ã³ãŒãã¬ãã¥ãŒããã»ã¹ãçµã¿èŸŒãŸããŠããŸããã
2. ãã£ãŒãã£ãŒãã©ã³ãã¯ãŒã¯ãããŒ
ãã£ãŒãã£ãŒãã©ã³ãã¯ãŒã¯ãããŒã¯ãæ°ããæ©èœããã°ä¿®æ£ããšã«å°çšã®ãã©ã³ãã§éçºãããåºãæ¡çšãããŠããã¢ãããŒãã§ããããã«ãã倿Žãåé¢ãããç¬ç«ããéçºãå¯èœã«ãªããŸããæ©èœãå®äºãããšããã©ã³ãã`main`ãã©ã³ãã«ããŒãžããããã®ãã«ãªã¯ãšã¹ããäœæãããŸãã
å©ç¹ïŒ
- 倿Žãåé¢ããç«¶åã®ãªã¹ã¯ã軜æžããŸãã
- 䞊è¡éçºãå¯èœã«ããŸãã
- ãã«ãªã¯ãšã¹ããä»ããŠã³ãŒãã¬ãã¥ãŒãä¿é²ããŸãã
æ¬ ç¹ïŒ
- å¢ãç¶ãããã©ã³ãã管çããã«ã¯èŠåŸãå¿ èŠã§ãã
- é·æã«ããããã£ãŒãã£ãŒãã©ã³ãã§ã¯è€éã«ãªãå¯èœæ§ããããŸãã
äŸïŒ
- æ©èœã®æ°ãããã©ã³ããäœæããïŒ`git checkout -b feature/add-shopping-cart`
- æ©èœãéçºãã倿Žãã³ãããããŸãã
- ãã©ã³ãããªã¢ãŒããªããžããªã«ããã·ã¥ããïŒ`git push origin feature/add-shopping-cart`
- `feature/add-shopping-cart`ãã©ã³ãã`main`ã«ããŒãžããããã®ãã«ãªã¯ãšã¹ããäœæããŸãã
- ã³ãŒãã¬ãã¥ãŒãšæ¿èªåŸããã«ãªã¯ãšã¹ããããŒãžããŸãã
3. Gitflowã¯ãŒã¯ãããŒ
Gitflowã¯ãç¹å®ã®ãã©ã³ãã¿ã€ããç°ãªãç®çã®ããã«å®çŸ©ãããããæ§é åãããã¯ãŒã¯ãããŒã§ããå®å®ãããªãªãŒã¹ã«ã¯`main`ãé²è¡äžã®éçºã«ã¯`develop`ãæ°ããæ©èœã«ã¯`feature`ããªãªãŒã¹ã®æºåã«ã¯`release`ãæ¬çªç°å¢ã§ã®é倧ãªãã°ãžã®å¯ŸåŠã«ã¯`hotfix`ã䜿çšããŸãã
å©ç¹ïŒ
- ãªãªãŒã¹ãšããããã£ãã¯ã¹ã管çããããã®æç¢ºãªæ§é ãæäŸããŸãã
- é »ç¹ãªãªãªãŒã¹ãè¡ããããžã§ã¯ãã«é©ããŠããŸãã
- 峿 Œãªã³ãŒãã¬ãã¥ãŒããã»ã¹ãé©çšããŸãã
æ¬ ç¹ïŒ
- ç¹ã«å°èŠæš¡ãªããŒã ã§ã¯ã管çãè€éã«ãªãå¯èœæ§ããããŸãã
- ãªãªãŒã¹ã®é »åºŠãå°ãªããããžã§ã¯ãã«ã¯äžèŠãªå ŽåããããŸãã
Gitflowã®äž»èŠãªãã©ã³ãïŒ
- mainïŒ æ¬çªç°å¢å¯Ÿå¿ã®ã³ãŒãããŒã¹ã衚ããŸãã
- developïŒ ãã¹ãŠã®æ°ããæ©èœãããŒãžãããçµ±åãã©ã³ãã衚ããŸãã
- feature/*ïŒ æ°ããæ©èœãéçºããããã®ãã©ã³ãã`develop`ããäœæããã`develop`ã«ããŒãžãããŸãã
- release/*ïŒ ãªãªãŒã¹ãæºåããããã®ãã©ã³ãã`develop`ããäœæããã`main`ãš`develop`ã®äž¡æ¹ã«ããŒãžãããŸãã
- hotfix/*ïŒ æ¬çªç°å¢ã§çºçããé倧ãªãã°ã«å¯ŸåŠããããã®ãã©ã³ãã`main`ããäœæããã`main`ãš`develop`ã®äž¡æ¹ã«ããŒãžãããŸãã
4. GitHub Flow
GitHub Flowã¯ãå°èŠæš¡ãªããŒã ãããã·ã³ãã«ãªãããžã§ã¯ãã§äººæ°ã®ã·ã³ãã«ãªã¯ãŒã¯ãããŒã§ãããã£ãŒãã£ãŒãã©ã³ãã¯ãŒã¯ãããŒã«äŒŒãŠããŸãããç¶ç¶çãªãããã€ãéèŠããŠããŸãããã¹ãŠã®ãã©ã³ããã¹ããŒãžã³ã°ç°å¢ã«ãããã€ããŠãã¹ãã§ããŸããæ¿èªããããšã`main`ã«ããŒãžãããæ¬çªç°å¢ã«ãããã€ãããŸãã
å©ç¹ïŒ
- ã·ã³ãã«ã§çè§£ããããã§ãã
- ç¶ç¶çãªãããã€ãä¿é²ããŸãã
- å°èŠæš¡ãªããŒã ãããã·ã³ãã«ãªãããžã§ã¯ãã«é©ããŠããŸãã
æ¬ ç¹ïŒ
- è€éãªãªãªãŒã¹ç®¡çèŠä»¶ããããããžã§ã¯ãã«ã¯é©ããŠããªãå ŽåããããŸãã
- èªååããããã¹ããšãããã€ãã€ãã©ã€ã³ã«å€§ããäŸåããŸãã
ããã³ããšã³ããããžã§ã¯ãã®ãã©ã³ãæŠç¥
ãã©ã³ãæŠç¥ã®éžæã¯ããããžã§ã¯ãã®ããŒãºãšããŒã ã®å¥œã¿ã«äŸåããŸãã以äžã«èæ ®ãã¹ãäžè¬çãªæŠç¥ãããã€ã瀺ããŸãã
- æ©èœããŒã¹ã®ãã©ã³ãïŒ åæ©èœãŸãã¯ãã°ä¿®æ£ã¯ãå¥ã®ãã©ã³ãã§éçºãããŸããããã¯æãäžè¬çã§æšå¥šãããæŠç¥ã§ãã
- ã¿ã¹ã¯ããŒã¹ã®ãã©ã³ãïŒ åã¿ã¹ã¯ã¯ãå¥ã®ãã©ã³ãã§éçºãããŸããããã¯ã倧ããªæ©èœãããå°ãã管çå¯èœãªã¿ã¹ã¯ã«åå²ããã®ã«åœ¹ç«ã¡ãŸãã
- ç°å¢ããŒã¹ã®ãã©ã³ãïŒ ããŸããŸãªç°å¢ïŒäŸïŒ`staging`ã`production`ïŒã®åå¥ã®ãã©ã³ããããã¯ãç°å¢åºæã®æ§æãšãããã€ã管çããã®ã«åœ¹ç«ã¡ãŸãã
- ãªãªãŒã¹ããŒã¹ã®ãã©ã³ãïŒ åãªãªãŒã¹ã®åå¥ã®ãã©ã³ããããã¯ãã³ãŒãããŒã¹ã®å®å®ããããŒãžã§ã³ãç¶æããç¹å®ã®ãªãªãŒã¹ã«ããããã£ãã¯ã¹ãé©çšããã®ã«åœ¹ç«ã¡ãŸãã
ããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã®ãããã€æŠç¥
ããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã«ã¯ãéçºç°å¢ããæ¬çªãµãŒããŒãŸãã¯ãã¹ãã£ã³ã°ãã©ãããã©ãŒã ã«ã³ãŒããç§»åããããšãå«ãŸããŸããããã€ãã®ãããã€æŠç¥ã䜿çšã§ããŸããããããã«ç¬èªã®å©ç¹ã𿬠ç¹ããããŸãã
1. æåãããã€
æåãããã€ã«ã¯ãæ¬çªãµãŒããŒã«ãã¡ã€ã«ãæåã§ã³ããŒããããšãå«ãŸããŸããããã¯æãã·ã³ãã«ãªãããã€æŠç¥ã§ãããæããšã©ãŒãçºçãããããæéãããããŸããæ¬çªç°å¢ã«ã¯æšå¥šãããŸããã
2. FTP/SFTPãããã€
FTPïŒFile Transfer ProtocolïŒãšSFTPïŒSecure File Transfer ProtocolïŒã¯ãã³ã³ãã¥ãŒã¿ãŒéã§ãã¡ã€ã«ã転éããããã®ãããã³ã«ã§ããFTP/SFTPãããã€ã«ã¯ãFTP/SFTPã¯ã©ã€ã¢ã³ãã䜿çšããŠãã¡ã€ã«ãæ¬çªãµãŒããŒã«ã¢ããããŒãããããšãå«ãŸããŸããããã¯ãæåãããã€ããããããã«èªååãããã¢ãããŒãã§ãããã»ãã¥ãªãã£äžã®æžå¿µãšããŒãžã§ã³ç®¡çã®æ¬ åŠã«ãããæ¬çªç°å¢ã«ã¯ãŸã çæ³çã§ã¯ãããŸããã
3. Rsyncãããã€
Rsyncã¯ã2ã€ã®å Žæéã§ãã¡ã€ã«ãåæããããã®ã³ãã³ãã©ã€ã³ãŠãŒãã£ãªãã£ã§ããRsyncãããã€ã«ã¯ãRsyncã䜿çšããŠãã¡ã€ã«ãæ¬çªãµãŒããŒã«ã³ããŒããããšãå«ãŸããŸããããã¯ãFTP/SFTPãããå¹ççã§ä¿¡é Œæ§ã®é«ãã¢ãããŒãã§ãããæåã§ã®æ§æãšå®è¡ãå¿ èŠã§ãã
4. ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³/ç¶ç¶çããªããªãŒïŒCI/CDïŒ
CI/CDã¯ããã«ãããã¹ãããããã€ããã»ã¹ãèªååãããœãããŠã§ã¢éçºãã©ã¯ãã£ã¹ã§ããCI/CDãã€ãã©ã€ã³ã«ã¯ãéåžžãæ¬¡ã®æé ãå«ãŸããŸãã
- ã³ãŒãã³ãããïŒ éçºè ã¯ãã³ãŒã倿ŽãããŒãžã§ã³ç®¡çã·ã¹ãã ïŒäŸïŒGitïŒã«ã³ãããããŸãã
- ãã«ãïŒ CI/CDã·ã¹ãã ã¯ãã¢ããªã±ãŒã·ã§ã³ãèªåçã«ãã«ãããŸããããã«ã¯ãã³ãŒãã®ã³ã³ãã€ã«ãã¢ã»ããã®ãã³ãã«ããã¹ãã®å®è¡ãå«ãŸããå ŽåããããŸãã
- ãã¹ãïŒ CI/CDã·ã¹ãã ã¯ãã¢ããªã±ãŒã·ã§ã³ãæ£ããåäœããŠããããšã確èªããããã«ãèªåãã¹ããèªåçã«å®è¡ããŸãã
- ãããã€ïŒ CI/CDã·ã¹ãã ã¯ãã¢ããªã±ãŒã·ã§ã³ãã¹ããŒãžã³ã°ãŸãã¯æ¬çªç°å¢ã«èªåçã«ãããã€ããŸãã
CI/CDã«ã¯ã次ã®ãããªå€ãã®å©ç¹ããããŸãã
- ããéããªãªãŒã¹ãµã€ã¯ã«ïŒ èªååã«ãããæ°ããæ©èœããã°ä¿®æ£ããªãªãŒã¹ããããã«å¿ èŠãªæéãšåŽåãåæžãããŸãã
- ã³ãŒãå質ã®åäžïŒ èªåãã¹ãã¯ããã°ãç¹å®ãã鲿¢ããã®ã«åœ¹ç«ã¡ãŸãã
- ãªã¹ã¯ã®è»œæžïŒ èªååããããããã€ã¯ã人çãã¹ã®ãªã¹ã¯ãæå°éã«æããŸãã
- å¹çæ§ã®åäžïŒ èªååã«ãããéçºè ã¯ããéèŠãªã¿ã¹ã¯ã«éäžã§ããŸãã
ããã³ããšã³ããããžã§ã¯ãã§ãã䜿çšãããCI/CDããŒã«ïŒ
- JenkinsïŒ ãœãããŠã§ã¢ããã«ãããã¹ãããããã€ããããã«äœ¿çšã§ãããªãŒãã³ãœãŒã¹ã®èªååãµãŒããŒã
- Travis CIïŒ GitHubãšçµ±åããããã¹ãåCI/CDãã©ãããã©ãŒã ã
- CircleCIïŒ GitHubããã³Bitbucketãšçµ±åããããã¹ãåCI/CDãã©ãããã©ãŒã ã
- GitLab CI/CDïŒ GitLabã«çµã¿èŸŒãŸããCI/CDãã©ãããã©ãŒã ã
- GitHub ActionsïŒ GitHubã«çµã¿èŸŒãŸããCI/CDãã©ãããã©ãŒã ã
- NetlifyïŒ éçWebãµã€ããšWebã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããã³ãããã€ããããã®ãã©ãããã©ãŒã ã Netlifyã¯ãçµã¿èŸŒã¿ã®CI/CDæ©èœãæäŸããã¢ãããã¯ãããã€ãã¹ããªãããã¹ããªã©ãããŸããŸãªãããã€æŠç¥ããµããŒãããŠããŸãã JAMstackã¢ãŒããã¯ãã£ã«ç¹ã«é©ããŠããŸãã
- VercelïŒ Netlifyãšåæ§ã«ãããã©ãŒãã³ã¹ãšéçºè ãšã¯ã¹ããªãšã³ã¹ã«éç¹ã眮ããŠããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããã³ãããã€ããããã®ãã©ãããã©ãŒã ã§ããçµã¿èŸŒã¿ã®CI/CDãæäŸãããµãŒããŒã¬ã¹é¢æ°ããµããŒãããŠããŸãã
- AWS AmplifyïŒ ã¢ãã€ã«ããã³Webã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããã³ãããã€ããããã®Amazon Web Servicesã®ãã©ãããã©ãŒã ã§ãã Amplifyã¯ãCI/CDãèªèšŒãã¹ãã¬ãŒãžããµãŒããŒã¬ã¹é¢æ°ãªã©ãå æ¬çãªããŒã«ãšãµãŒãã¹ã®ã»ãããæäŸããŸãã
5. ã¢ãããã¯ãããã€
ã¢ãããã¯ãããã€ã¯ããã¹ãŠã®ãã¡ã€ã«ãåæã«æŽæ°ããããŠãŒã¶ãŒãéšåçã«ãããã€ãããã¢ããªã±ãŒã·ã§ã³ã«ã¢ã¯ã»ã¹ã§ããªãããã«ããŸããããã¯éåžžãæ°ããããŒãžã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ãå¥ã®ãã£ã¬ã¯ããªã«ãããã€ããŠãããWebãµãŒããŒã®ã«ãŒããã£ã¬ã¯ããªãæ°ããããŒãžã§ã³ã«ã¢ãããã¯ã«åãæ¿ããããšã«ãã£ãŠå®çŸãããŸãã
6. ãã«ãŒã°ãªãŒã³ãããã€
ãã«ãŒã°ãªãŒã³ãããã€ã¯ã2ã€ã®åäžã®ç°å¢ãå®è¡ããããšãå«ã¿ãŸããéãç°å¢ïŒçŸåšã®æ¬çªç°å¢ïŒãšç·ã®ç°å¢ïŒã¢ããªã±ãŒã·ã§ã³ã®æ°ããããŒãžã§ã³ïŒã§ãããã©ãã£ãã¯ã¯ãéãç°å¢ããç·ã®ç°å¢ã«åŸã ã«ã·ãããããŸããåé¡ãæ€åºãããå Žåã¯ããã©ãã£ãã¯ãéãç°å¢ã«ãã°ããåãæ¿ããããšãã§ããŸãã
7. ã«ããªã¢ãããã€
ã«ããªã¢ãããã€ã¯ãã¢ããªã±ãŒã·ã§ã³ã®æ°ããããŒãžã§ã³ãå°æ°ã®ãŠãŒã¶ãŒïŒãã«ããªã¢ããŠãŒã¶ãŒïŒã«ãããã€ããããšãå«ã¿ãŸããåé¡ãæ€åºãããªãå Žåã¯ããããã€ãåŸã ã«ä»ã®ãŠãŒã¶ãŒã«å±éãããŸããããã«ãããåé¡ããã¹ãŠã®ãŠãŒã¶ãŒã«åœ±é¿ãäžããåã«æ©æã«æ€åºã§ããŸãã
8. ãµãŒããŒã¬ã¹ãããã€
ãµãŒããŒã¬ã¹ãããã€ã«ã¯ãããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ãAWS LambdaãGoogle Cloud FunctionsãAzure Functionsãªã©ã®ãµãŒããŒã¬ã¹ãã©ãããã©ãŒã ã«ãããã€ããããšãå«ãŸããŸããããã«ããããµãŒããŒã管çããå¿ èŠããªããªããèªåã¹ã±ãŒãªã³ã°ãå¯èœã«ãªããŸããããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã¯éåžžãAmazon CloudFrontãCloudflareãªã©ã®ã³ã³ãã³ãé ä¿¡ãããã¯ãŒã¯ïŒCDNïŒã§ãã¹ããããŠããéçWebãµã€ããšããŠãããã€ãããŸãã
ããã³ããšã³ãã®ããŒãžã§ã³ç®¡çãšãããã€ã®ãã¹ããã©ã¯ãã£ã¹
ã¹ã ãŒãºã§å¹ççãªããã³ããšã³ãéçºããã»ã¹ã確å®ã«ããããã«ã次ã®ãã¹ããã©ã¯ãã£ã¹ãæ€èšããŠãã ããã
- ããŒã ãšãããžã§ã¯ãã«é©ããGitã¯ãŒã¯ãããŒãéžæããŸãã ããŒã ã®èŠæš¡ããããžã§ã¯ãã®è€éãããªãªãŒã¹ã®é »åºŠãèæ ®ããŠãã ããã
- æå³ã®ããã³ãããã¡ãã»ãŒãžã䜿çšããŸãã ã³ãããã¡ãã»ãŒãžã«ã¯ãè¡ããã倿Žãšå€æŽã®çç±ãæç¢ºã«èšè¿°ããå¿ èŠããããŸãã
- èªåãã¹ããäœæããŸãã èªåãã¹ãã¯ãã¢ããªã±ãŒã·ã§ã³ãæ£ããåäœããŠããããšã確èªããååž°ãé²ãã®ã«åœ¹ç«ã¡ãŸãã
- CI/CDãã€ãã©ã€ã³ã䜿çšããŸãã ãã«ãããã¹ãããããã€ããã»ã¹ãèªååããŠããšã©ãŒãæžããããªãªãŒã¹ãµã€ã¯ã«ãé«éåããŸãã
- ã¢ããªã±ãŒã·ã§ã³ãç£èŠããŸãã ã¢ããªã±ãŒã·ã§ã³ã®ãšã©ãŒãšããã©ãŒãã³ã¹ã®åé¡ãç£èŠããŸãã
- ã³ãŒãã¬ãã¥ãŒãå®è£ ããŸãã ã¡ã€ã³ãã©ã³ãã«ããŒãžããåã«ããã¹ãŠã®ã³ãŒããä»ã®ããŒã ã¡ã³ããŒã«ãã£ãŠã¬ãã¥ãŒãããŠããããšã確èªããŸããããã«ããããšã©ãŒããã£ããããã³ãŒãå質ãåäžãããããšãã§ããŸãã
- äŸåé¢ä¿ã宿çã«æŽæ°ããŸãã ãã°ä¿®æ£ãã»ãã¥ãªãã£ããããããã³ããã©ãŒãã³ã¹ã®åäžããå©çãåŸãããã«ããããžã§ã¯ãã®äŸåé¢ä¿ãææ°ã®ç¶æ ã«ä¿ã¡ãŸãã npmãyarnããŸãã¯pnpmãªã©ã®ããŒã«ã䜿çšããŠäŸåé¢ä¿ã管çããŸãã
- ã³ãŒããã©ãŒããã¿ãŒãšãªã³ã¿ãŒã䜿çšããŸãã PrettierãESLintãªã©ã®ããŒã«ã䜿çšããŠãäžè²«ããã³ãŒãã¹ã¿ã€ã«ãé©çšããæœåšçãªãšã©ãŒãç¹å®ããŸãã
- ã¯ãŒã¯ãããŒãææžåããŸãã Gitã¯ãŒã¯ãããŒãšãããã€ããã»ã¹ã«é¢ããæç¢ºãªããã¥ã¡ã³ããäœæããŠããã¹ãŠã®ããŒã ã¡ã³ããŒãããã»ã¹ãçè§£ããŠããããšã確èªããŸãã
- æ§æã«ç°å¢å€æ°ã䜿çšããŸãã æ©å¯æ å ±ãšç°å¢åºæã®æ§æããã³ãŒãããŒã¹ã«ããŒãã³ãŒãã£ã³ã°ããã®ã§ã¯ãªããç°å¢å€æ°ã«ä¿åããŸãã
ããã³ããšã³ãéçºè åãã®é«åºŠãªGitãã¯ããã¯
åºæ¬ãè¶ ããŠãããã€ãã®é«åºŠãªGitãã¯ããã¯ã¯ãã¯ãŒã¯ãããŒãããã«åŒ·åã§ããŸãã
- Gitããã¯ïŒ ã³ããããããã·ã¥ãããŒãžãªã©ãç¹å®ã®Gitã€ãã³ãã®åãŸãã¯åŸã«ã¿ã¹ã¯ãèªååããŸãã ããšãã°ãpre-commitããã¯ã䜿çšããŠãã³ããããèš±å¯ããåã«ãªã³ã¿ãŒãŸãã¯ãã©ãŒããã¿ãŒãå®è¡ã§ããŸãã
- Gitãµãã¢ãžã¥ãŒã«/ãµãããªãŒïŒ å€éšã®äŸåé¢ä¿ãŸãã¯å ±æã³ãŒãããŒã¹ãããããžã§ã¯ãå ã®åå¥ã®GitãªããžããªãšããŠç®¡çããŸãããµãã¢ãžã¥ãŒã«ãšãµãããªãŒã¯ããããã®äŸåé¢ä¿ã管çããããã®ç°ãªãã¢ãããŒããæäŸããŸãã
- ã€ã³ã¿ã©ã¯ãã£ãã¹ããŒãžã³ã°ïŒ `git add -p`ã䜿çšããŠããã¡ã€ã«ãã倿Žãéšåçã«ã¹ããŒãžã³ã°ãããã¡ã€ã«ã®ç¹å®ã®éšåã®ã¿ãã³ãããã§ããããã«ããŸãã
- ãªããŒã¹ãšããŒãžïŒ ãªããŒã¹ãšããŒãžã®éããçè§£ããä»ã®ãã©ã³ãããã®å€æŽãçµ±åããããã®é©åãªæŠç¥ãéžæããŸãããªããŒã¹ã¯ãããã¯ãªãŒã³ãªå±¥æŽãäœæã§ããŸãããããŒãžã¯å ã®ã³ãããå±¥æŽãä¿æããŸãã
- ãã¹ïŒ `git bisect`ã䜿çšããŠãã³ãããå±¥æŽããã€ããªæ€çŽ¢ããããšã«ããããã°ãå°å ¥ããã³ãããããã°ããç¹å®ããŸãã
ããã³ããšã³ãåºæã®èæ ®äºé
ããã³ããšã³ãéçºã«ã¯ãããŒãžã§ã³ç®¡çãšãããã€ã«åœ±é¿ãäžããç¬èªã®èª²é¡ããããŸãã
- ã¢ã»ãã管çïŒ ææ°ã®ããã³ããšã³ããããžã§ã¯ãã«ã¯ãç»åãã¹ã¿ã€ã«ã·ãŒããJavaScriptãåŠçããããã®è€éãªã¢ã»ãããã€ãã©ã€ã³ãå«ãŸããããšããããããŸããã¯ãŒã¯ãããŒã§ãããã®ã¢ã»ããã广çã«åŠçãããããã«ããŸãã
- ãã«ãããŒã«ïŒ WebpackãParcelããŸãã¯Rollupãªã©ã®ãã«ãããŒã«ãCI/CDãã€ãã©ã€ã³ã«çµ±åããããšã¯ããã«ãããã»ã¹ãèªååããããã«äžå¯æ¬ ã§ãã
- ãã£ãã·ã¥ïŒ Webãµã€ãã®ããã©ãŒãã³ã¹ãåäžããããµãŒããŒã®è² è·ã軜æžããããã«ã广çãªãã£ãã·ã¥æŠç¥ãå®è£ ããŸããããŒãžã§ã³ç®¡çã¯ããã£ãã·ã¥ãã¹ãæè¡ã®ç®¡çã«åœ¹ç«ã¡ãŸãã
- CDNçµ±åïŒ ã³ã³ãã³ãé ä¿¡ãããã¯ãŒã¯ïŒCDNïŒãå©çšããŠãããã³ããšã³ãã¢ã»ãããã°ããŒãã«ã«é ä¿¡ããWebãµã€ãã®èªã¿èŸŒã¿æéãæ¹åããŸãã
- A/Bãã¹ãïŒ ããŒãžã§ã³ç®¡çã䜿çšããŠãA/Bãã¹ãã®ããã«æ©èœã®ããŸããŸãªããªãšãŒã·ã§ã³ã管çã§ããŸãã
- ãã€ã¯ãããã³ããšã³ãã¢ãŒããã¯ãã£ïŒ UIã®ããŸããŸãªéšåãåå¥ã«éçºããã³ãããã€ããããã€ã¯ãããã³ããšã³ãã¢ãŒããã¯ãã£ã䜿çšããå ŽåãããŒãžã§ã³ç®¡çã¯ããŸããŸãªã³ãŒãããŒã¹ã管çããããã«ããã«éèŠã«ãªããŸãã
ã»ãã¥ãªãã£ã«é¢ããèæ ®äºé
ã»ãã¥ãªãã£ã¯ãéçºããã³ãããã€ããã»ã¹å šäœã§æåªå äºé ã§ããå¿ èŠããããŸãã
- æ©å¯æ å ±ãå®å šã«ä¿åããŸãã APIããŒããã¹ã¯ãŒãããã®ä»ã®æ©å¯æ å ±ãã³ãŒãããŒã¹ã«ä¿åããããšã¯é¿ããŠãã ãããç°å¢å€æ°ãŸãã¯å°çšã®ç§å¯ç®¡çããŒã«ã䜿çšããŸãã
- ã¢ã¯ã»ã¹å¶åŸ¡ãå®è£ ããŸãã Gitãªããžããªãšãããã€ç°å¢ãžã®ã¢ã¯ã»ã¹ããæ¿èªãããæ åœè ã«å¶éããŸãã
- è匱æ§ã宿çã«ã¹ãã£ã³ããŸãã ã»ãã¥ãªãã£ã¹ãã£ã³ããŒã«ã䜿çšããŠãäŸåé¢ä¿ãšã³ãŒãããŒã¹ã®è匱æ§ãç¹å®ãã察åŠããŸãã
- HTTPSã䜿çšããŸãã ã¢ããªã±ãŒã·ã§ã³ãšãŠãŒã¶ãŒéã®ãã¹ãŠã®éä¿¡ãHTTPSã䜿çšããŠæå·åãããŠããããšã確èªããŸãã
- ã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°ïŒXSSïŒæ»æããä¿è·ããŸãã ãŠãŒã¶ãŒå ¥åããµãã¿ã€ãºããã³ã³ãã³ãã»ãã¥ãªãã£ããªã·ãŒïŒCSPïŒã䜿çšããŠXSSæ»æãé²ããŸãã
çµè«
Gitã䜿çšããããã³ããšã³ãã®ããŒãžã§ã³ç®¡çããã¹ã¿ãŒããããšã¯ãå ç¢ã§ãä¿å®å¯èœã§ãã¹ã±ãŒã©ãã«ãªWebã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã«äžå¯æ¬ ã§ããGitã®åºæ¬ãçè§£ããé©åãªã¯ãŒã¯ãããŒãæ¡çšããå¹ççãªãããã€æŠç¥ãå®è£ ããããšã§ãããã³ããšã³ãéçºè ã¯éçºããã»ã¹ãåçåããã³ãŒãå質ãåäžãããåªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸã§ããŸããç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ãšç¶ç¶çããªããªãŒã®ååãæ¡çšããŠãã¯ãŒã¯ãããŒãèªååãããªãªãŒã¹ãµã€ã¯ã«ãå éããŸããããã³ããšã³ãéçºãé²åãç¶ããäžã§ãææ°ã®ããŒãžã§ã³ç®¡çãšãããã€æè¡ãåžžã«ææ¡ããããšãæåã®éµãšãªããŸãã