æè¡é¨ã¢ã«ãã¤ãã®é´æ¨(@draftcode)ã§ãã
ã¯ãã¯ããããå é¨åãã«éçºã»éç¨ãè¡ã£ã¦ãããåæ£ãã¹ãå®è¡ã·ã¹ãã RRRSpecããªã¼ãã³ã½ã¼ã¹ã¨ãã¦å ¬éãã¾ãããRRRSpecã¯æéã®ãããèªåãã¹ããåæ£å¦çãããã¨ã§ãå ¨ä½ã®ãã¹ãæéã®ç縮ãçãã¢ããªã±ã¼ã·ã§ã³ã§ããç¾å¨ã¯ãã¯ãããã§ã¯17000ãè¶ ãããã¹ãé ç®ãããããã·ã³ä¸å°ã§ãã¹ããå®è¡ããã¨å®äºã¾ã§æ°æéãããã¾ãããã®ãã¹ãã60並åç¨åº¦ã®åæ£å¦çã§è¡ããã¨ã§ãå¹³å8åãã9åç¨åº¦ã§å®äºã§ããããã«ãªãã¾ãããã¾ããAmazon EC2ã®ã¹ãããã¤ã³ã¹ã¿ã³ã¹ãå©ç¨ãããã¨ã«ãããå¤§å¹ ãªã³ã¹ãåæ¸ãåæã«éæãã¾ããã
https://github.com/cookpad/rrrspec
åæ£ãã¹ãå®è¡ã¨ã¯
ã¢ããªã±ã¼ã·ã§ã³ã大ãããªãã«ã¤ãã¦ãèªåãã¹ãã®æ°ã大ãããªã£ã¦ããã¾ããã¯ãã¯ãããã§ã¯ãé常ã«å¤ãã®èªåãã¹ããæ¸ããã¦ãããé常ã®æ¹æ³ã§ã¯ä¸åã®å®è¡ã«æ°æéããã£ã¦ãã¾ãã¾ãããã®ãããªé常ã«å¤§ãããã¹ãã¹ã¤ã¼ãã®ããã«ãparallel_tests ã®ãããªãã¹ããåæ£å®è¡ããã©ã¤ãã©ãªãæ¢ã«åå¨ãã¦ãã¾ããããããparallel_testsã¯ãã·ã³ä¸å°ã®ã¿ã§ã®åæ£å®è¡ã®ãããã¯ãã¯ãããã®ãã¹ãã¹ã¤ã¼ããå®è¡ããã¨ãä¸å°ã§åæ£å®è¡ãã¦ããªããä¸åã®ãã¹ãã«æ°ååããã£ã¦ãã¾ãã¾ããã
parallel_testsåä½ã§ã¯ã¾ã ãã¹ãæéãååç縮ã§ããªãã£ããããã¯ãã¯ãããã§ã¯remote_specã¨ãããè¤æ°å°ã«å¯¾ãã¦parallel_testsãå®è¡ããã©ã¤ãã©ãªãéçºãã¾ãããããã«ãããä¸åã®ãã¹ãã«ãããæéã10å以å ã«ãããããã¨ãã§ããå®ç¨çãªç¯å²ã§å®è¡ãããã¨ãã§ããããã«ãªãã¾ããã
remote_specã«ãã£ã¦è¤æ°å°ã®ãã·ã³ã«ãããã¹ãã®åæ£å®è¡ãéæåºæ¥ã¾ããããã¾ã ããã¤ãã®åé¡ç¹ãããã¾ãããä¾ãã°ãremote_specã®ä»çµã¿ä¸ããã·ã³å°æ°ãæè»ã«å¢æ¸ããããã¨ãåºæ¥ãªãã£ããããã·ã³ããã¹ãå®è¡ããã»ã¹ã®é害ã«å¯¾ãã¦ãä¸æã対å¿ã§ããªãã¨ããç¹ãæãããã¾ãããããã®åé¡ã解決ããããã«ãRRRSpecã¯ã¼ããã¼ã¹ã§è¨è¨ããã¾ããã
RRRSpecã®æ©è½
RRRSpecã¯RSpecã§è¨è¿°ããããã¹ãã«ç¹åããåæ£ãã¹ãå®è¡ã·ã¹ãã ã§ããRRRSpecã¯ä¸å°ã®ãã¹ã¿ã¨è¤æ°å°ã®ã¯ã¼ã«ã§æ§æããã¾ãããã¹ãå®è¡ãéå§ããã¯ã©ã¤ã¢ã³ãã¯ãã¹ã¿ã«å¯¾ãã¦ãã¹ãå®è¡ã«å¿ è¦ãªã½ã¼ã¹ã³ã¼ãã転éãããã¹ãå®è¡ãã¥ã¼ã«ãã¹ãããã¥ã¼ã¤ã³ã°ãã¾ãããã¹ã¿ã¯ãã¥ã¼ã«å ¥ãããããã¹ããé©å®ã¯ã¼ã«ã«å²ãæ¯ããã¯ã¼ã«ããã¹ãå®è¡ãè¡ãã¾ãã
ãã®ãããªé常ã®åæ£ãã¹ãå®è¡ä»¥å¤ã«ããããã¤ãã®èå³æ·±ãæ©è½ãåãã¦ãã¾ãã
- ãã·ã³ã·ã£ãããã¦ã³ã»ããã»ã¹ã®åæ¢ã®èªå復帰
- ç¡åå¿ã®ããã»ã¹ã«å¯¾ãããã¼ãã¿ã¤ã ã¢ã¦ãã»ã½ããã¿ã¤ã ã¢ã¦ã
- 失æãããã¹ãã®èªååå®è¡
- ãã¹ãå®è¡é åºã®æé©å
- ãã¹ãã®ææ©çå®è¡
ãããã®æ©è½ããªãå¿ è¦ãªã®ããã©ã®ããã«è¡ã£ã¦ããã®ãã¨ãã£ããã¶ã¤ã³ä¸ã®æ±ºå®ã¯RRRSpec Design Decisionsã«ã¾ã¨ãããã¦ãã¾ããã¾ããRRRSpecã®å®è¡ã·ã¼ã±ã³ã¹ãªã©ãRRRSpec Hacking Guideã«ã¾ã¨ãããã¦ãã¾ãã
RRRSpecã®ãã¹ã¿ã¨ã¯ã¼ã«ãä¸å°ã®PCã§åããããã¹ãå®è¡ãè¡ãç°å¢ãlocal_testã«ç¨æãã¦ããã¾ããã»ããã¢ããã®éã«åèã«ãã¦ãã ããã
çè«çãªèæ¯
RRRSpecã«ã¾ã¤ããã¨ã³ã¸ãã¢ãªã³ã°çãªè©±é¡ã¯å ã®Design Decisionsã«ã¾ã¨ãããã¦ãã®ã§ãããããã¨ã¯éãçè«ããã®ã¢ã«ãããã¯ãªè©±é¡ãããã¾ããããã§ã¯ããããã£ã話é¡ã«ã¤ãã¦ãç°¡åã«ç´¹ä»ãã¾ãã
ã¯ã¼ã«ã¼ãã·ã³ã®ã¹ã±ã¼ãªã³ã°
ã¯ãã¯ãããã§ã¯RRRSpecã®å°å ¥ã«ãããAmazon EC2ã®ã¹ãããã¤ã³ã¹ã¿ã³ã¹ãå©ç¨ãã¦åãããã¨ãã§ããããã«ãªãã¾ãããã¹ãããã¤ã³ã¹ã¿ã³ã¹ã¨ã¯ãAmazonå ã§ä½ããã¦ããã¤ã³ã¹ã¿ã³ã¹ããªã¼ã¯ã·ã§ã³ã§è½æãããã¨ã«ãããå®ãåãããã¨ãã§ããã¤ã³ã¹ã¿ã³ã¹ã§ãããã ããå®ãåãããã代ããã«ãäºåãªãã«ãã·ã³ãè½ã¨ãããã¨ããå¶ç´ãããã¾ãã
RRRSpecã¯ãã·ã³ã®åæ¢ã«å¯¾ãã¦æ éèæ§ããããããã¹ãããã¤ã³ã¹ã¿ã³ã¹ã§éç¨ãã¦ãæ¥ã«ãã·ã³ãè½ã¨ããã¦ãåé¡ãªãããã«ãªã£ã¦ãã¾ããã¹ãããã¤ã³ã¹ã¿ã³ã¹ãä¸æã«è½æãã¦ããã·ã³ãã¹ã±ã¼ã«ããããã¨ãã§ããã°ãå¹çãããã¹ããå®è¡ãããã¨ãåºæ¥ã¾ãããããéæããããã«ãã¯ãã¯ãããã§ã¯æ¬¡ã®ãããªãã¨ãè¡ã£ã¦ãã¾ããã
- ã¹ãããã¤ã³ã¹ã¿ã³ã¹ã®ãªã¼ã¯ã·ã§ã³ã®ä»çµã¿ãæ¨å®ããã²ã¼ã çè«ã»ãªã¼ã¯ã·ã§ã³çè«ãåèã«ãã¦ãå¹ç¨é¢æ°ã決å®ãç·å½¢è¨ç»åé¡ã«å¸°çããããã¨ã«ãããå ¥æä¾¡æ ¼æ±ºå®åé¡ã解ãã
- ãã·ã³ã®ã¹ã±ã¼ãªã³ã°ã¹ã±ã¸ã¥ã¼ã«ã決ããããã«ããã·ã³ã®ä½¿ç¨ç¶æ³ãéå»ã®ãã¼ã¿ããäºæ¸¬ããã»ã°ã¡ã³ãæ¨ã使ã£ã¦å¹ççã«è³æºé åæ¦ç¥ãè¨ç®ã
- å¾ ã¡è¡åçè«ãå¿ç¨ãã¦ãæéãããã«å®è¡ããããã¹ãã®å¹³åå®è¡æéãè¦å®å¤ä»¥ä¸ã«ãªãããã«å¿ è¦ãªãã·ã³å°æ°ã決å®ã
ãã®ããã«ã使ã£ã¦ããã®ã¯å¤§å¦ã®å¦é¨çã§å¦ã¶ãåæ©çãªè¨ç®æ©ç§å¦ãæé¤ã§åºã¦ãããã¼ã«ã§ãããä¸æãåé¡ãå¤å½¢ãããã¨ã«ãããç¾å®ã«çºçããåé¡ã«å¯¾ãã¦å¿ç¨ãã¦ãã¾ãã
ã¢ãã«æ¤æ»ã¨ãã©ã¼ã«ãã¤ã³ã¸ã§ã¯ã·ã§ã³
RRRSpecã¯åæ£ã·ã¹ãã ã®ä¸ç¨®ã«ãªãã¾ããåæ£ã·ã¹ãã ã§ã¯è¤æ°ã®ãã·ã³ãå調ãã¦åä½ããããããã·ã³ããããã¯ã¼ã¯ã®é害ã«ããå½±é¿ã大ããã§ãããã¨ããã·ã³ä¸å°ã®æ éãã確çãé常ã«å°ããã¦ãããã·ã³å°æ°ãå¢ããã«ã¤ãã¦æ éã®çºç確çã¯ä¸ãã£ã¦ããã¾ãã
å ã»ã©è§¦ããããã«ã¹ãããã¤ã³ã¹ã¿ã³ã¹ã«ã¯ãæ¥ã«ãã·ã³ãã·ã£ãããã¦ã³ããããã¨ãããã¨ããå¶ç´ãããã¾ãããã®ã¹ãããã¤ã³ã¹ã¿ã³ã¹ã®å¶ç´ã¯ãRRRSpecããã¿ãã¨ãã·ã³ã®æ éã¨ãã¦ãã¨ããããã¨ãã§ãã¾ããã¹ãããã¤ã³ã¹ã¿ã³ã¹ãç¨ããã·ã¹ãã ãåæ£ã·ã¹ãã ã§ã¯ãæ éãé »ç¹ã«èµ·ããããããããã·ã¹ãã å ã§é害ãèµ·ãã£ãã¨ãã«ãå ¨ä½ã¨ãã¦æ£å¸¸ã«åä½ãããã©ããã¨ãã£ããã·ã¹ãã ã®æ éèæ§ãéè¦ã«ãªã£ã¦ãã¾ããæ éèæ§ã調ã¹ãæ¹æ³ã¨ãã¦ãã¢ãã«æ¤æ»ã¨ãã©ã¼ã«ãã¤ã³ã¸ã§ã¯ã·ã§ã³ãæãããã¾ãã
ã¢ãã«æ¤æ»ã¨ã¯ãã·ã¹ãã ã®å ¨ç¶æ ãæ¢ç´¢ãããã¨ã§ãæ£å¸¸ã§ãªãç¶æ ã«é¥ããªããã©ãããæ¤æ»ããææ³ã§ãããã ãã·ã¹ãã ãã®ã¾ã¾ã®å ¨ç¶æ ãæ¢ç´¢ãããã¨ããã¨ãä¸å°ã®ãã·ã³ã®ã¡ã¢ãªç©ºéã ãã§ã2ã®2ã®64ä¹ã®å¤§ããã¨ãªããå ¨ãç¾å®çã§ã¯ããã¾ãããããã§ã¢ãã«æ¤æ»ã§ã¯ãã·ã¹ãã ã®ãããã¥ã¢ãä½ããã¨ã«ãããå ¨ç¶æ ã®æ¢ç´¢ãå¯è½ã«ãã¦ãã¾ããæåãªã¢ãã«æ¤æ»å¨ã¨ãã¦SpinãNuSMVãªã©ãæãããã¾ãã
ãã©ã¼ã«ãã¤ã³ã¸ã§ã¯ã·ã§ã³ã¨ã¯ãã·ã¹ãã ã«ããã¨æ éãåãè¾¼ããã¨ã«ãã£ã¦ãæ éããã¨ãã®åä½ã調ã¹ãææ³ã§ãããã¨ãã°CPUã®ãããªåå°ä½ã«å¯¾ãã¦æ¾å°ç·ãå½ã¦ããã¨ã«ãã£ã¦ããããããªãããèªçºãããããã¾ãã
ã¢ãã«æ¤æ»ã¨ãã©ã¼ã«ãã¤ã³ã¸ã§ã¯ã·ã§ã³ãçµã¿åããããã¨ã«ãããã·ã¹ãã ã®æ éæã®åä½ãå ¨æ¢ç´¢ãããã¨ãã§ããããã«ãããã·ã¹ãã ã«æ éèæ§ããããã©ãããæ¤æ»ãããã¨ãåºæ¥ã¾ãã
RRRSpecã§ã¯RRRSpec Hacking Guideã«ããããã«ãã·ã¹ãã ã®ã¢ããªã³ã°ã念é ã«ç½®ããªãããããã¤ãã®æ éã·ããªãªã¨ãã®å¾©å¸°æ¹æ³ãæããã«ããå®è¡ã·ã¼ã±ã³ã¹ã¾ã§åæãã¦ãã¾ãã
ã¾ã¨ã
åæ£ãã¹ãå®è¡ã·ã¹ãã RRRSpecãéçºãããªã¼ãã³ã½ã¼ã¹ã«ãã¾ããããªããã®ãããªãã¼ã«ãå¿ è¦ã«ãªã£ãã®ãã¨ããåé¡ã«ã¤ãã¦èª¬æããéçºã«éãç´é¢ããã¨ã³ã¸ãã¢ãªã³ã°çãªè©±é¡ã¨ããã®è£å´ã«ããçè«ããã®ã¢ã«ãããã¯ãªè©±é¡ã«ã¤ãã¦èª¬æãã¾ããã
åæ§ã®åé¡ã«ç´é¢ãã¦ããæ¹ã§RRRSpecããã®ã¾ã¾éç¨ã§ããã°å¬ããã§ãããããã§ãªãã¦ããRRRSpecã§ç´é¢ããåé¡ã¨ãã®è§£æ±ºæ³ããä»ã®åæ§ã®ã·ã¹ãã ãå¥ã®åé¡ã«å¯¾ãã¦åèã«ãªãã°å¹¸ãã§ãã