æ¬è¨äºã¯
ããã«ãªã¯ã¦ã£ã¼ã¯ã
1æ¥ç®ã®è¨äºã§ãã
ð»
åç¥è¨äº
â¶â¶ æ¬è¨äº â¶â¶
2æ¥ç®
ð
ããã«ã¡ã¯ãããã³ãã¨ã³ãé åãä¸å¿ã«æ´»åãã¦ããã·ã¹ãã ã¨ã³ã¸ãã¢ã®å±±ç°ã§ãã
æ¨ä»ã®ã·ã¹ãã éçºã«ããã¦ã¯Gitã使ç¨ãããã¨ãã»ã¨ãã©ãã¨æãã¾ãã
ã¾ããéçºããã»ã¹ã¨ãã¦ãã«ãªã¯ã¨ã¹ãï¼ä»¥ä¸ãPRï¼ãå©ç¨ãããã¼ã ãå¤ãã®ã§ã¯ãªãã§ããããï¼
ããã§ããã®è¨äºã§ã¯å®éã«ç§ãè¡ãªã£ã¦ããPRãå¹ççã«ã¬ãã¥ã¼ããããã®åãçµã¿ã¨ãPRãå©ç¨ããéã«æèããåãçµã¿ã«ã¤ãã¦ãç´¹ä»ãããã¨æãã¾ãã
â»ããã§ã¯TypeScriptãå©ç¨ããéçºçµé¨ããã¨ã«è¨è¼ãã¾ãã
- ã·ã¹ãã çãªåãçµã¿
- éçºè ï¼ã¬ãã¥ã¼ã¤ï¼ã¨ãã¦ã®åãçµã¿
- ã¬ãã¥ã¢ã¼ã¨ãã¦ã®åãçµã¿
- ãããã«
ã·ã¹ãã çãªåãçµã¿
ãã©ã¼ããã¿ã¼ãå©ç¨ãã
ã¾ãã¯Prettierã®ãããªãã©ã¼ããã¿ã¼ãå°å
¥ãããã¨ã§ãã
ã³ã¼ãã®å¯èªæ§ã¨ããç¹ã§ã®ã¡ãªãããããã¾ãããPRã«ãããã¡ãªãããåå¨ãã¦ãã¾ãã
å
±éã®ã³ã¼ããã©ã¼ãããããã¼ã ã§åå¨ãã¦ããªãå ´åãã¤ã³ãã³ãã®éããã¹ãã¼ã¹ã®æç¡ãææ«ã®ã»ãã³ãã³ã®æç¡ãªã©éçºè
ã«ãã£ã¦éããåºã¦ããå¯è½æ§ãããã¾ãã
ãããã£ãéããæ¾ç½®ãã¦ããã¨ãæå³ãã¬ã¿ã¤ãã³ã°ã§å·®åã¨ãã¦PRã«ä¸ãã£ã¦ãããã¨ãããã¾ãã
PRã®ã¬ãã¥ã¢ã¼ã¨ãã¦ã¯ãã³ã¼ãã®å·®åã確èªãããã¨ãå¤ãã¨æãã¾ãã
PRã®æ¬åã¯æ©è½éçºãä¸å
·åä¿®æ£ã«ããããããå·®åã«ã¤ãã¦ããã©ã¼ãããã®éãã®ãããªä½è¨ãªæ
å ±ã¯ç¾ãã¦ã»ããããã¾ããã
ãããã£ããã¤ãºãæé¤ããã ãã§ãã¬ãã¥ã¼ããå´ã®è² æ
ã¯ä¸ãããã¨æãã¾ãã
éçè§£æãå©ç¨ãã
次ã¯ESLintã®ãããªéçè§£æï¼Lintï¼ã®å°å
¥ã§ãã
éçè§£æã¯ã½ã¼ã¹ã³ã¼ããè§£æãã¦ãæå®ããã³ã¼ãã£ã³ã°ã«ã¼ã«ã«ãããã£ã¦ã½ã¼ã¹ã³ã¼ããæ¸ããã¦ãããããã§ãã¯ãã¦ããã¾ãã
ãã¼ã ã§éçºããéã¯ã³ã¼ãã£ã³ã°ã«ã¼ã«ã«å¾ã£ã¦éçºãããã¨ãå¤ãã®ã§ã¯ãªãã§ããããï¼
ãããã£ãã«ã¼ã«ã¯ãªãã¹ããå
ç¨ã®PrettierãESLintã«ä»»ãã¦ãã¾ãããã«ãã¦ãã¾ãã
ç¹°ãè¿ãã®å
容ã«ãªãã¾ãããã¬ãã¥ã¢ã¼ã¨ãã¦ã¯æ©è½éçºãä¸å
·åä¿®æ£ã®ã¬ãã¥ã¼ã«éä¸ã§ãããã¨ãæã¾ããã§ãã
ã·ã¹ãã çã«ãã§ãã¯ã§ããé¨åã¯ã©ãã©ãã·ã¹ãã ã«ä»»ãã¦ããããã«ãã¦ãã¾ãã
ãã¹ãã³ã¼ããæ¸ããå®è¡ãã
æå¾ã«ãã¹ãã³ã¼ãã«ã¤ãã¦ã§ãï¼éçºè
ãåãçµãã¹ããã¤ã³ãã§ãããã¾ããï¼ã
TypeScriptã§ã¯JestãVitestããããã¦ããããã¹ãã§ã¯æåã©ããã§ããããã
ãã¹ãã³ã¼ãã®éè¦æ§ãªã©ã«ã¤ãã¦ããã§ã¯è§¦ãã¾ãããã追å ãã¹ããã¹ãã³ã¼ãã¯è¿½å ããæ¢åã®ãã¹ãã³ã¼ãã¯å®è¡ããããã«ãã¼ã ã¨ãã¦åãçµãã§ãã¾ããã
PRã¯é¢æã¨ãã¦ã®å½¹å²ãæã£ã¦ããå ´åããããã¨æãã¾ãã
ä¾ãã°ãå
±éçãªå¦çã«ä¿®æ£ãå
¥ããã¨ãããããæ©è½ããã°ã¬ã¼ããããã¨ããçµé¨ã¯ããã¾ãããï¼
ã¬ãã¥ã¼ã®ã¿ã¤ãã³ã°ã§æ°ãã¤ããã®ãããã®ã§ããã人éãªãã°è¦è½ã¨ãå¯è½æ§ã¯ããã¾ãããã
ãã¹ãã³ã¼ããå®è¡ãããã¨ã§ããããã£ãã±ã¼ã¹ã¯é²ãããã¨ããããã¨æãã¾ãã
ã¾ããæ°è¦ã«éçºããé¨åã«é¢ãã¦ãã¹ãã³ã¼ããæ¸ããã¨ã§ãå質ã®ç¢ºä¿ã¨ä¸è¨ã®ãããªäºè±¡ã®äºé²ãè¦è¾¼ãã¾ãã
ãã®è¾ºãã®ãã©ã¼ãããã®ãã§ãã¯ãéçè§£æãã¦ããããã¹ãã¯CIã¨ãã¦å®ç¾©ãããã¨ãå¤ãã§ãã
ãã®ä»
TypeScriptã«éã£ã話ã§ãããtsconfigã®strictã¯trueã«è¨å®ããããã«ãã¦ãã¾ãã
strictãfalseãªããã¸ã§ã¯ããå¼ãç¶ãã ã¨ãã¯ãã³ã¼ãã£ã³ã°ç¨ã®tsconfigã¨ãã«ãç¨ã®tsconfigãåãããªã©ã®å·¥å¤«ãããããã«ãã¦ãã¾ãã
éçºè ï¼ã¬ãã¥ã¼ã¤ï¼ã¨ãã¦ã®åãçµã¿
PRã®ç¯å²ã«æ³¨æãã
ç§ã®ãã¼ã ã§ã¯èª²é¡ç®¡çã·ã¹ãã ãå©ç¨ãããã¨ãå¤ãã§ãããã¿ãªãã¾ã¯ãããã§ããããï¼
å©ç¨ãã¦ããå ´åã¯ã課é¡ï¼ãã±ããï¼ã«ç´ã¥ãã¦PRã使ãããã¨ãå¤ãã¨æãã¾ãã
親åãªæ¹ã«å¤ãæ°ããã¾ãããè¤æ°ã®èª²é¡ãã¾ã¨ãã¦1ã¤ã®PRã«ãããã¨ãããã¾ãã
ã¬ãã¥ã¢ã¼ã®è² æ
軽æ¸ãæèãã¦ã®è¡åãã¨æãã¾ãããç§ã¯ãåºæ¬çã«èª²é¡ã¨PRã¯1対1ã«ãªãããã«ãã¦ãã¾ãã
â»ä¾ãã°ä¸å
·åã«ããã¦ãåå ãåãå ´åã¯ãã®æ¨ã課é¡ã«è¨è¼ãã¦èª²é¡å´ãã¯ãã¼ãºããããã«ãã¦ãã¾ãã
å人差ãããã¨æãã¾ãããç§ã¨ãã¦ã¯å
容ãè¤åçãª1ã¤ã®PRããå
容ãåç´ãªè¤æ°ã®PRã®æ¹ãã¬ãã¥ã¼ããããã§ãã
対å¿å
容ã¨å·®åãæå¿«ã§ããã»ã©å¹ççãªPRã®ã¬ãã¥ã¼ãå¯è½ãã¨æãã¾ãã
ãªã®ã§ã課é¡ã®åå²ç²åº¦ãéè¦ã«ãªã£ã¦ãã¾ãã
PRã®ã³ã¡ã³ãæ©è½ãæ´»ç¨ãã
ããããªãããã©ããã¦ã対å¿å
容ãè¤éã«ãªã£ã¦ãã¾ããã¨ã¯ãããã¨æãã¾ãã
ãã®ãããªå ´åã¯ãéçºè
ï¼PRã®ä½æè
ï¼ã解説ã®ããã®ã³ã¡ã³ããããããã¨ããã£ã¦ãã¾ããã
ã¬ãã¥ã¢ã¼ã¨ãã¦ã¯ã¤ã³ãããã®æ å ±ãä¹ãããã°ä¹ããã»ã©æéãããã£ã¦ãã¾ãã¾ãã®ã§ãç§ãPRã使ããã¨ãã¯å¹çåã®ããã«åãçµãããã«ãã¦ãã¾ãã
ã³ãããã«æå³ããããã
PRã®è¦æ¨¡ã大ããå ´åãã³ãããåä½ã§å·®åã確èªããã¬ãã¥ã¢ã¼ãããã®ã§ã¯ãªãã§ããããï¼
å
è¿°ã®éãã課é¡åã®ã¿ã¤ãã³ã°ã§ç´°ååã好ã¾ããã§ãããããã§ãè¦æ¨¡ã大ãããªããã¨ãããã¾ãã
ãããã£ãå ´åã«ã¯ç§ãã³ãããåä½ã§ç¢ºèªãããã¨ãå¤ãã§ãã
ç§ãéçºè
ã¨ãã¦ã³ãããããå ´åã¯ãâ¯æâ¯æ¥ã®ä½æ¥ãã§ã¯ãªããAæ©è½ã«â¯â¯ã®èæ
®ã追å ãããã®ããã«å
容ãæç¢ºã«ãªãããã«ãã¦ãã¾ãã
å¾ã
ãéå»ã®ã³ããããã°ã確èªããã¨ãã«ãå½¹ç«ã¤ã¯ãã§ãã
ãã®ãããã®ã³ãããã«ã¼ã«ã¯ãã¼ã ã§æ±ºãã¦éç¨ããã®ãããã¨æãã¾ãã
ã¾ããPR使åã«git rebase -iã§ã³ããããã°ãæ´çãããã¨ãå¤ãã§ãã
ãããã°ã³ã¼ããæ¶ãå¿ãã¦ããã¨ããªã©ã¯ãã®æ¹æ³ã§ä¿®æ£ããç¡é§ãªã³ããããã°ãçã¾ããªãããã«ãã¦ãã¾ãã
ã¬ãã¥ã¢ã¼ã¨ãã¦ã®åãçµã¿
ãã¬ãã¸å ±æã®å ´ã¨ãã
PRã¯éçºè
ãã¬ãã¥ã¢ã¼ã«ã¬ãã¥ã¼ãã¦ãããã¨ããå ´ã§ãããæçãªæ
å ±ã¯ãã¼ã ã§å
±æããããã«åãçµãã§ãã¾ãã
PRã®1ã¤1ã¤ã®ã³ã¡ã³ãã¯ãã¬ãã¸ã§ããã¨èãã¦ãããããããéçºè
ã¨ã¬ãã¥ã¢ã¼ã ãã«éãè¾¼ãã¦ãã¾ãã®ã¯ãã£ãããªããã¨æãã¾ãã
ã¾ãããã¼ã éçºã§ã¯Slackãªã©ã®ãã£ãããã¼ã«ãå©ç¨ãã¦ãããã¨ãå¤ãã¨æãã¾ãã
詳細ãªããåããªã©ã¯ãã£ããã§æ¸ã¾ãã¦ãã¾ããã¨ããããã¨æãã¾ãããçµç·¯ã®æ¦è¦ã決å®äºé
ã«ã¤ãã¦ã¯PRã®ã³ã¡ã³ãã«æ®ãããã«ãã¦ãã¾ãã
é¢ä¿ã®ãªãPRãè¦ãæ©ä¼ã¯ãªãã¨ãããã¼ã ãããã¨ã¯æãã¾ãããç°¡åãªãã¬ãã¸å
±æã®å ´ã¨ãã¦æ´»ç¨ãã¦ã¿ã¦ãããã®ã§ã¯ãªãã§ããããï¼
ã³ã¼ãã¬ãã«ã§ãã¬ãã¸ãå
±æããã«ã¯ãPRã¯ä½¿ãåæãããã¨æãã¾ãã
ã¦ã©ã¼ã¯ã¹ã«ã¼å½¢å¼ã§ã¬ãã¥ã¼ããã
éçºè
ã主ä½ã¨ãªã£ã¦PRã®å
容ã説æããã¬ãã¥ã¼ããæ¹æ³ã§ãã
éå»å®æ½ãã¦ããéãåå è
ã¯ã¬ãã¥ã¢ã¼ã®ã¿ãªããä»ã®éçºè
ã対象ã¨ãã¦ãã¾ããã
ã¬ãã¥ã¼ã®æéã ãåå è
ãææãããã¨ã«ãªããå¹çé¢ã§ã¯æ£ç´ãªã¨ããããã¨ã¯è¨ãã¾ããã
使ãæã¯æ
éã«ãã¦ãã¾ããã
ä¾ãã°ãããã¸ã§ã¯ããç«ã¡ä¸ãã£ã¦æåã®ããä¸å®ã®æéã®PRã¯ãã®ãããªå½¢ã§ã¬ãã¥ã¼ãã¦ãã¾ããã
ã¹ã¿ã¼ãã®ã¿ã¤ãã³ã°ã§ãããä¸å®ã®å質確ä¿ã®ããã«ã¯é常ã«ããã£ãã¨æã£ã¦ãã¾ãã
â»ç§åäººã®æè¦ã¨ãã¦éçºãé²ãã§ããã¨æ¢åã®ã½ã¼ã¹ã³ã¼ããæ¨¡å£ããå¾åãããã¨æãã¦ãããããç«ã¡ä¸ããã¯éè¦ã ã¨èãã¦ãã¾ãã
ä»ã«ãã³ã¢ãªé¨åã®éçºã§ãã£ãããé£æåº¦ã®é«ãé¨åã®éçºãªã©ã§æ´»ç¨ããããã«ãã¦ãã¾ããã
ã¾ããææäºé
ãæ±ºå®äºé
ã¯é常ã®PRã¨åãããã«ã³ã¡ã³ãã¨ãã¦æ®ãããã«ãã¦ãã¾ããã
ããã¯å
ã»ã©ã®ãã¬ãã¸å
±æã®å ´ã¨ãããã¨ãã観ç¹ãããããã¦ãã¾ããã
ãã¼ã¸æã«ãªãã¼ã¹ãè¡ãªã
æå¾ã«PRããã¼ã¸ããã¨ãã®å·¥å¤«ã§ãã
ã³ããããã°ã綺éºã«ä¿ã¤ããã«ããã¼ã¸åã®ã¿ã¤ãã³ã°ã§ãªãã¼ã¹ã宿½ããããã«ãã¦ãã¾ãã
â»PRã®ãã¼ã¸ã³ãããèªä½ã¯æ®ãã¾ããããããGitHubã®ãRebase and mergeãã®ãããªåä½ã¨ã¯ç°ãªãã¾ãã
ä¸å
·ååæãªã©ã§éå»ã®ã³ããããã°ã確èªããæ©ä¼ããããã¨æãã¾ãã
ã³ããããã°ã綺éºã ã¨ã夿´ã追ããããã®ã¨ç¢ºèªæã®ã¢ããã¼ã·ã§ã³ãä¸ããã¨å人çã«ã¯æãã¦ãã¾ãã
å¾ã
ã®ä½æ¥å¹çåã®ããã«ãããã®ã²ã¨æéã¯å¹æçã§ã¯ãªãã§ããããï¼
ãã ãããã§ã¯è©³ç´°ã«è§¦ãã¾ããããªãã¼ã¹ã®æ³¨æç¹ãããã¤ãããã¾ãã®ã§ãã®ç¹ã¯æ³¨æããªããè¡ãªãã®ãããã§ãããã
â»ãªãã¼ã¹ã¨ããããã¯ãªã¢ã¼ãã¸ã®åæ æãã¨ãã表ç¾ã®æ¹ãããããããã¾ããã
ã¾ããéçºè¦æ¨¡ãä½å¶ãå¤§è¦æ¨¡ã«ãªãã¨éç¨ã大å¤ã«ãªãã¾ãã
PRã®ãã¼ã¸åã®ã¿ã¤ãã³ã°ã§æ¯åãªãã¼ã¹ãè¡ãªãã®ã§ãPRã®æ°ã ããªãã¼ã¹ãããªããã°ãããªãã¨ããæéã§ãã
ãã¨ã¯ãã³ã³ããªã¯ãçºçæã®å¯¾å¿ã«ã¤ãã¦ã§ãã
ãªãã¼ã¹ã«ãããã³ã³ããªã¯ãã®è§£æ¶ã¯ãã³ããããã¨ã«å¯¾å¿ãã¦ããå¿
è¦ãããã¾ãã
è¤æ°ã®ã³ãããã«ããã£ã¦ã³ã³ããªã¯ããçºçããå ´åããã¼ã¸ã«ããã³ã³ããªã¯ãã®è§£æ¶ãããæéããããã¨æãã¾ãã
éå»ã®ããã¸ã§ã¯ãã§ã¯ãåéçºè
ã§ãªãã¼ã¹ãããéç¨ãè¡ãªã£ã¦ãã¾ããã
éçºè
ã¬ãã«ã§ãªãã¼ã¹ãããã¨ããããã®æéããã¼ã å
ã§åæ£ã§ããã®ã§ãéç¨æ¹éã¨ãã¦æ¤è¨ããã®ãããã§ãããã
ãããã«
ããã¾ã§ãç§ã®åãçµã¿ã«ã¤ãã¦è¨è¼ãã¦ãã¾ããã
ãããã¯ä¸ä¾ã§ããã常ã«ã©ã®å ´æã«ããã¦ãæ£è§£ãã¨ãããã®ã§ã¯ããã¾ããã
ã¿ãªãã¾ã«ããã¾ãã¦ãæ§ã ãªåãçµã¿ãããã¦ããã¨æãã¾ãã®ã§ãä½ãã®åèã«ãªãã°å¹¸ãã§ãã