ããã«ã¡ã¯ãHabrïŒ
ãã®èšäºã§ã¯ã1CïŒãšã³ã¿ãŒãã©ã€ãºãã©ãããã©ãŒã éçºããã»ã¹ã®æ§ç¯æ¹æ³ãå質ä¿èšŒãžã®åãçµã¿æ¹æ³ããã·ã¢æ倧ã®ãœãããŠã§ã¢ã·ã¹ãã ã®äœæäžã«åŠãã æèšãå
±æããŸãã
人ãšããã»ã¹
æ倧10人ã®ããã°ã©ããããªãããã€ãã®ã°ã«ãŒãããããããã©ãããã©ãŒã ã§äœæ¥ãããã®4åã®3ã¯C ++ã§èšè¿°ãããæ®ãã¯JavaãšJavaScriptã§èšè¿°ãããŠããŸãã
åã°ã«ãŒãã¯ãããšãã°æ¬¡ã®ãããªéçºã®åå¥ã®æ¹åã«åãçµãã§ããŸãã
- éçºããŒã«ïŒã³ã³ãã£ã®ã¥ã¬ãŒã¿ãŒïŒ
- Webã¯ã©ã€ã¢ã³ã
- ãµãŒããŒã€ã³ãã©ã¹ãã©ã¯ãã£ãšãã§ãŒã«ãªãŒããŒã¯ã©ã¹ã¿ãŒ
- ãªã©
å
šéšã§12ãè¶
ããã°ã«ãŒãããããŸãã ãããšã¯å¥ã«ãå質ä¿èšŒããŒã ããããŸãã
ãã¡ããããã®ãµã€ãºïŒ1,000äžè¡ãè¶
ããã³ãŒãïŒã®ãããžã§ã¯ãã§ã¯ãã³ãŒãã®äžè¬çãªæææš©ã«ã€ããŠã¯èšåããŠããŸããããã®ãããªããªã¥ãŒã ãé ã®äžã«ä¿æããããšã¯äžå¯èœã§ãã å°ãªããšã2ã€ã®ã°ã«ãŒãã§ã
ãã¹ä¿æ° ãã確ä¿ããããšããŠããŸãã
ç§ãã¡ã¯ãæè»æ§ãæäŸããŠéçºé床ãåäžãããããŒã ã®ç¬ç«æ§ãšãããŒã ãããŒã ãšå€ã®äžçãšã®éã§å¹æçã«ããåãã§ããããã«ããåäžæ§ãšã®ãã©ã³ã¹ãç¶æããããšããŸãã ãã®ãããå
±éã®ããŒãžã§ã³ç®¡çã·ã¹ãã ããã«ããµãŒããŒãã¿ã¹ã¯ãã©ãã«ãŒïŒä»¥äžã§èª¬æããŸãïŒãC ++ã³ãŒãã£ã³ã°æšæºãèšèšããã¥ã¡ã³ããã³ãã¬ãŒãããŠãŒã¶ãŒããã®ãšã©ãŒåŠçã«ãŒã«ãªã©ããããŸãã ãã¹ãŠã®ããŒã ãæºãããªããã°ãªããªãèŠåã¯ãã°ã«ãŒããªãŒããŒã®å
±éã®æ±ºå®ã«ãã£ãŠéçºããã³æ¡çšãããŸãã
äžæ¹ããå
åããã«åãããããã©ã¯ãã£ã¹ã§ã¯ãããŒã ã¯éåžžã«èªåŸçã§ãã ããšãã°ãã³ãŒãæ€æ»ã¯ãã¹ãŠã®ããŒã ã«é©çšãããããã«ãªããŸããïŒãŸããã¬ãã¥ãŒã®å¿
é ééã決å®ããäžè¬çãªã«ãŒã«ããããŸãïŒãããããã¯ç°ãªãææã«å°å
¥ãããããã»ã¹ã¯ç°ãªãã«ãŒã«ã«åŸã£ãŠæ§ç¯ãããŸããã
ããã»ã¹ã®çµç¹ã«ãåãããšãåœãŠã¯ãŸããŸãã誰ããã¢ãžã£ã€ã«ãªãã·ã§ã³ãå®è·µãã誰ããä»ã®ã¹ã¿ã€ã«ã®ãããžã§ã¯ã管çã䜿çšããŸãã æ£èŠã®SCRUMã¯ã©ãã«ãååšããªãããã§ã-ç®±å
¥ã補åã®ä»æ§ã«ããå¶éã課ããããŸãã ããšãã°ããã¢ã³ã¹ãã¬ãŒã·ã§ã³ã®çŽ æŽãããå®è·µã¯ãã®ãŸãŸé©çšããããšã¯ã§ããŸããã ä»ã®ãã©ã¯ãã£ã¹ãããšãã°ãããã¯ããªãŒããŒã®åœ¹å²ã«ã¯ãç¬èªã®é¡äŒŒç©ããããŸãã ãããã¯ããªãŒããŒãšããŠãã°ã«ãŒãã®ãããã¯éåžžã圌ã®æ瀺ã«åŸã£ãŠè¡åããŸãã ããŒã ã®æè¡çãªãŒããŒã·ããã«å ããŠããã®æãéèŠãªã¿ã¹ã¯ã®1ã€ã¯ããããªãéçºã®æ¹åæ§ã決å®ããããšã§ãã ãã©ãããã©ãŒã ãéçºããããã®æŠç¥ãšæŠè¡ãéçºããããã»ã¹ã¯è€éã§èå³æ·±ããããã¯ã§ãããå¥ã®èšäºã«å°å¿µããŸãã
ã¿ã¹ã¯ã«åãçµã
ç¹å®ã®æ©èœãå®è£
ãã決å®ãäžããããšãå°ãªããšãã¿ã¹ã¯ãæ
åœããéçºè
ãšããŒã ãªãŒããŒãåå ããäžé£ã®ãã£ã¹ã«ãã·ã§ã³ã§ãã®å€èŠ³ã決å®ãããŸãã å€ãã®å Žåãå¿
èŠãªå°éç¥èãæã€ä»ã®ããŒã ã¡ã³ããŒãŸãã¯ä»ã®ã°ã«ãŒãã®åŸæ¥å¡ãé¢äžããŠããŸããã æçµããŒãžã§ã³ã¯ã1CïŒãšã³ã¿ãŒãã©ã€ãºãã©ãããã©ãŒã éçºã®ãªãŒããŒã«ãã£ãŠæ¿èªãããŠããŸãã
ãã®ãããªè°è«ã§ã¯ã決å®ãäžãããŸãã
- ã¿ã¹ã¯ã®ã¹ã³ãŒãã«å«ãŸãããã®ãšå«ãŸããªããã®
- æ³å®ããããŠãŒã¹ã±ãŒã¹ã ãµããŒãããªãã·ããªãªãç解ããããšã¯ããã«éèŠã§ãã
- ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã¯ã©ã®ããã«èŠããã
- ã¢ããªã±ãŒã·ã§ã³éçºè
åãã®APIã¯ã©ã®ãããªãã®ã
- æ°ããã¡ã«ããºã ãæ¢åã®ã¡ã«ããºã ãšã©ã®ããã«çµã¿åããããã
- ã»ãã¥ãªãã£ã¯ã©ããªããŸãã
- ãªã©
ããã«ãæè¿ãããå€ãã®æœåšçãªæ¶è²»è
ãšåé¡ãè°è«ããããšããŠããŸã-äŸãã°ãæåŸã®
å
¬éã»ãããŒã§ãèšèšäžã®ãã€ããªããŒã¿ãæäœããæ°ããå¯èœæ§ã«ã€ããŠè©±ãã質åã«çããè°è«ããããã€ãã®å¯èœãªã¢ããªã±ãŒã·ã§ã³ãéžã³åºããŸãã以åã¯èããŠããŸããã§ããã
æ°ããé¢æ°ã§äœæ¥ãéå§ãããšãã¿ã¹ã¯ãã©ãã«ãŒã§ãã®é¢æ°ã®ã¿ã¹ã¯ãäœæãããŸãã ã¡ãªã¿ã«ããã©ãã«ãŒã¯ã1CïŒEnterpriseãã§èšè¿°ãããŠããããTask BaseããšåŒã°ããŠããŸãã ã¿ã¹ã¯ããšã«ãã¿ã¹ã¯ããã¥ã¡ã³ããã¿ã¹ã¯ãã©ãã«ãŒïŒå®éã«ã¯ã¿ã¹ã¯ã®ä»æ§ïŒã«ä¿åãããŸãã 次ã®3ã€ã®äž»èŠéšåã§æ§æãããŠããŸãã
- åé¡ã®åæãšè§£æ±ºçã®ãªãã·ã§ã³
- éžæãããœãªã¥ãŒã·ã§ã³ã®èª¬æ
- æè¡çãªå®è£
ã®è©³çŽ°ã®èª¬æ
ãããžã§ã¯ãããã¥ã¡ã³ãã®æºåã¯ãå®è£
åã«éå§ããããšãããã°ãã¿ã¹ã¯ã«å¯ŸããŠäœããã®èª¿æ»ãŸãã¯ãããã¿ã€ããæåã«è¡ãããå ŽåãåŸã§éå§ããããšããããŸãã ãããã«ãããããã¯ãŠã©ãŒã¿ãŒãã©ãŒã«ã¢ãã«ãšã¯ç°ãªããå埩ããã»ã¹ã§ããããããžã§ã¯ãããã¥ã¡ã³ãã®éçºãšæ¹è¯ã¯å®è£
ãšäžŠè¡ããŠè¡ãããŸãã äž»ãªããšã¯ãã¿ã¹ã¯ã®æºåãæŽããŸã§ã«ããããžã§ã¯ãææžããã¹ãŠã®è©³çŽ°ã§æ¿èªãããããšã§ãã ãããŠããã®ãããªå€ãã®è©³çŽ°ããããŸããäŸãã°ïŒ
- 䜿çšãããçšèªã®çµ±äžã åæ§ã®ç¶æ³ã§ãã©ãããã©ãŒã ã®1ç®æã§ãèšé²ããšããçšèªã䜿çšãããå Žåããä¿åãã®äœ¿çšã¯éåžžã«æ£åœåãããã¹ãã§ãã
- ã¢ãããŒãã®çµ±äžã æã
ãç 究ãšäœ¿çšã®äžè¬çãªçµéšãåçŽåããããã«ãããšããããã®äžå©ãªç¹ãæããã§ãã£ããšããŠããæ°ããåé¡ã§å€ãã¢ãããŒããç¹°ãè¿ãå¿
èŠããã
- äºææ§ã å€ãåäœãç¶æã§ããªãå Žåã§ããäºææ§ã«ã€ããŠèããå¿
èŠããããŸãã å€ãã®å Žåãã¢ããªã±ãŒã·ã§ã³ãœãªã¥ãŒã·ã§ã³ã¯ãšã©ãŒãçºçãããããæ¥æ¿ãªå€åã¯ãšã³ããŠãŒã¶ãŒåŽã®æäœäžèœã«ã€ãªãããŸãã ãããã£ãŠãå€ãã®å Žåãå€ãåäœã¯ãäºæã¢ãŒããã®ãŸãŸã§ãã ãã©ãããã©ãŒã ã®æ°ãããªãªãŒã¹ã§èµ·åãããæ¢åã®æ§æã¯ãç¡å¹ã«ãããšããæèçãªæ±ºå®ãè¡ããããŸã§ãäºæã¢ãŒããã䜿çšããŸãã
ããã«ãåé¡ã®è°è«ã¯è«æã®èæ¡ã«èšé²ãããŠãããããåŸã§ç¹å®ã®ãªãã·ã§ã³ãåãå
¥ãããããæåŠãããããç解ããããšãã§ããŸãã
ãããžã§ã¯ããæ¿èªãããéçºè
ãSVNã®æ©èœãã©ã³ãã«æ°ããæ©èœãå®è£
ããåŸïŒããã³Gitã§æ°ããIDEãéçºãããšãïŒãã¿ã¹ã¯ã¯ã°ã«ãŒãã®ä»ã®ã¡ã³ããŒã«ããã³ãŒãæ€æ»ãšæåæ€èšŒãåããŸãã ããã«ãã¿ã¹ã¯ãã©ã³ãã§èªåãã¹ããå®è¡ãããŸãã以äžã§èª¬æããŸãã åã段éã§ãå¥ã®æè¡ææžãäœæãããŸããããã¯ããã¹ã¿ãŒãšãã¯ãã«ã«ã©ã€ã¿ãŒåãã®ã¿ã¹ã¯ã®èª¬æã§ãã ãããžã§ã¯ããšã¯ç°ãªããããã¥ã¡ã³ãã«ã¯æè¡çãªå®è£
ã®è©³çŽ°ã¯å«ãŸããŠããŸããããããã¥ã¡ã³ãã®ã©ã®ã»ã¯ã·ã§ã³ãè£è¶³ããå¿
èŠãããããæ°ããæ©èœãäºææ§ã®ãªãå€æŽããããããã©ãããªã©ããã°ããç解ã§ããããã«æ§æãããŠããŸã
ãã§ãã¯ããã³ä¿®æ£ãããã¿ã¹ã¯ã¯ã¡ã€ã³ãªãªãŒã¹ãã©ã³ãã«æ³šããããã¹ãã°ã«ãŒãã䜿çšã§ããããã«ãªããŸãã
ãã¥ãŒããªã¢ã«ãšã¬ã·ã
- ãããžã§ã¯ãææžã®äŸ¡å€ã¯ãä»ã®ææžãšåæ§ã«ãå¿
ãããæããã§ã¯ãããŸããã ç§ãã¡ã«ãšã£ãŠã¯ã次ã®ãšããã§ãã
- èšèšããã»ã¹äžããã¹ãŠã®åå è
ããã£ã¹ã«ãã·ã§ã³ã®ã³ã³ããã¹ãããã°ãã埩å
ãã決å®ãå¿ãããããæªãããããããªãããã«ããã®ã«åœ¹ç«ã¡ãŸãã
- ãã®åŸãçãããç¶æ³ã§ã¯ãæ£ããåäœãããããªããšãããããžã§ã¯ãããã¥ã¡ã³ãã¯ã決å®èªäœãšãã®æ¡çšã®åæ©ãæãåºãã®ã«åœ¹ç«ã¡ãŸãã
- ãããžã§ã¯ãããã¥ã¡ã³ãã¯ããŠãŒã¶ãŒããã¥ã¡ã³ãã®éå§ç¹ãšããŠæ©èœããŸãã éçºè
ã¯ããŒãããäœããæžãããããã¯ãã«ã«ã©ã€ã¿ãŒã«å£é ã§èª¬æãããããå¿
èŠã¯ãããŸããããã§ã«æºåãæŽã£ãŠããŸãã
- äœæãããæ©èœã䜿çšããããã®ã·ããªãªã¯ãäžè¬çãªãã¬ãŒãºã§ã¯ãªããåžžã«è©³çŽ°ã«èšè¿°ããå¿
èŠããããŸããã詳现ã§ããã»ã©è¯ãã§ãã ãããè¡ãããªãå Žåã䜿çšãäžäŸ¿ãŸãã¯äžå¯èœã«ãªã決å®ãè¡ãããå¯èœæ§ããããäžéšã®å°ããªéšåãçç±ãšããŠåœ¹ç«ã€ããšããããŸãã ã¢ãžã£ã€ã«éçºã§ã¯ããã®ãããªè©³çŽ°ã¯æ¬¡ã®ã€ãã¬ãŒã·ã§ã³ã§ç°¡åã«ä¿®æ£ã§ããç§ãã¡ã®å ŽåããŠãŒã¶ãŒã¯æ°å¹Žã§ä¿®æ£ãååŸã§ããŸãïŒãã«ãµã€ã¯ã«ïŒãã©ãããã©ãŒã ã®æçµããŒãžã§ã³ããªãªãŒã¹ããããŸã§->ã€ãããŒã·ã§ã³ã䜿çšããæ§æããªãªãŒã¹ããã->ãŠãŒã¶ãŒããã®ãã£ãŒãããã¯ãåéããã->ä¿®æ£ãè¡ãããŸãã->æ°ããããŒãžã§ã³ããªãªãŒã¹ãããŸãã->ä¿®æ£ãèæ
®ããŠæ§æãæŽæ°ãããŸãã->ãŠãŒã¶ãŒãæ§æã®æ°ããããŒãžã§ã³ãã€ã³ã¹ããŒã«ããŸãïŒã
- ã·ããªãªãããåªããŠããã®ã¯ãããŒãžã§ã³ã®å
¬åŒãªãªãŒã¹ãšåäœã®ä¿®æ£ã®åã«å®éã®ãŠãŒã¶ãŒïŒæ§æéçºè
ïŒããããã¿ã€ãã䜿çšããããšã§ãã ãã®æ
£è¡ã¯ãç§ãã¡ãšãšãã«åºã䜿çšããå§ããã°ããã§ãããã»ãšãã©ãã¹ãŠã®å Žåã貎éãªç¥èããããããŸããã å€ãã®å Žåããã®ç¥èã¯æ©èœã«é¢é£ããããšã¯ã§ããŸããããåäœã®éæ©èœæ©èœïŒããšãã°ããã°ã®ååšããšã©ãŒã®èšºæã®å®¹æãïŒã«é¢é£ããŠããŸãã
- åæ§ã«ãããã©ãŒãã³ã¹åºæºãäºåã«å®çŸ©ãããã®å®è£
ãæ€èšŒããå¿
èŠããããŸãã ãããã®èŠä»¶ãã¿ã¹ã¯ã®å®äºæã«ãã§ãã¯ãªã¹ãã«è¿œå ããããŸã§ãããã¯åžžã«è¡ãããŠããŸããã§ããã
å質ä¿èšŒ
äžè¬ã«ããå質ããšãå質ä¿èšŒãã¯éåžžã«åºãçšèªã§ãã å°ãªããšããæ€èšŒãšæ€èšŒãšãã2ã€ã®ããã»ã¹ãåºå¥ã§ããŸãã æ€èšŒãšã¯éåžžããœãããŠã§ã¢ã®åäœãä»æ§ã«æºæ ããä»ã®æãããªãšã©ãŒããªãããšãæå³ããæ€èšŒãšã¯ãŠãŒã¶ãŒã®ããŒãºãžã®æºæ ãæ€èšŒããããšãæå³ããŸãã ãã®ã»ã¯ã·ã§ã³ã§ã¯ãæ€èšŒãšããæå³ã§ã®å質ä¿èšŒã«çŠç¹ãåœãŠãŸãã
ãã¹ãæ
åœè
ã¯ã泚å
¥åŸã«ã¿ã¹ã¯ã«ã¢ã¯ã»ã¹ã§ããŸãããå質ä¿èšŒããã»ã¹ã¯ã¯ããã«æ©ãå§ãŸããŸãã æè¿ãç§ãã¡ã¯ãããæ¹åããããã«å€å€§ãªåªåãããªããã°ãªããŸããã§ããã æ¢åã®ã¡ã«ããºã ãæ©èœã®å¢å ãšè€éãã®å€§å¹
ãªå¢å ã«å¯ŸããŠäžååã§ããããšãæããã«ãªããŸããã ãããã®åãçµã¿ã¯ãæ°ããŒãžã§ã³8.3.6ã«å¯ŸããããŒãããŒã®ãã£ãŒãããã¯ã«ãããšãç§ãã¡ã«ã¯æãããšããã§ã¯ãã§ã«å¹æãçºæ®ããŠãããããã¡ããå€ãã®ä»äºããŸã æ¥ãŠããã
æ¢åã®å質ä¿èšŒã¡ã«ããºã ã¯ãçµç¹ãšæè¡ã«åããããšãã§ããŸãã åŸè
ããå§ããŸãããã
ãã¹ã
å質ä¿èšŒã¡ã«ããºã ã«é¢ããŠã¯ããã¹ãã¯ããã«æãæµ®ãã³ãŸãã ãã¡ãããæã
ããããã䜿çšããããã€ãã®æ¹æ³ã§ïŒ
åäœãã¹ã
C ++ã§ã¯ãåäœãã¹ããäœæããŸãã
åã®èšäºã§è¿°ã¹ãããã«ã
Google Testãš
Google Mockã®ä¿®æ£ããŒãžã§ã³ã䜿çšããŠããŸãã ããšãã°ãJSONãèšè¿°ãããšãã«ã¢ã³ããµã³ãæåïŒ "ïŒ"ïŒã®ãšã¹ã±ãŒãããã§ãã¯ããäžè¬çãªãã¹ãã¯æ¬¡ã®ããã«ãªããŸãã
TEST(TestEscaping, EscapeAmpersand) {
çµ±åãã¹ã
次ã®ã¬ãã«ã®ãã¹ãã¯ãèšèªã1CïŒEnterpriseãã§æžãããçµ±åãã¹ãã§ãã ãã¹ãã®å€§éšåã圢æããŸãã ãã¹ãã®å
žåçãªã»ããã¯ã* .dtãã¡ã€ã«ã«ä¿åãããåå¥ã®æ
å ±ããŒã¹ã§ãã ãã¹ãã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãã®ããŒã¿ããŒã¹ãããŠã³ããŒãããæ¢ç¥ã®ã¡ãœãããåŒã³åºããŸãããã®ã¡ãœããã¯ãéçºè
ã«ãã£ãŠèšè¿°ãããåã
ã®ãã¹ããåŒã³åºããçµæããã©ãŒãããããŠCIïŒ
ç¶ç¶ççµ±å ïŒã€ã³ãã©ã¹ãã©ã¯ãã£ã解éã§ããããã«ããŸãã
& __() = ("json"); = "__"; = .(); JSON = JSON(); JSON(JSON, ); JSON.(); .(, );
ãã®å Žåãèšé²ã®çµæãæšæºãšç°ãªãå ŽåãäŸå€ãã¹ããŒãããã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãããæ€åºããŠãã¹ãã®å€±æãšããŠè§£éããŸãã
CIã·ã¹ãã èªäœã¯ã32ãããããã³64ãããã®Windowsããã³Linuxãå«ãOSããã³DBMSã®ããŸããŸãªããŒãžã§ã³ãããã³MS SQL ServerãOracleãPostgreSQLãIBM DB2ãããã³ç¬èªã®ãã¡ã€ã«ããŒã¿ããŒã¹ãããããã®ãã¹ããå®è¡ããŸãã
ã«ã¹ã¿ã ãã¹ãã·ã¹ãã
3çªç®ã®æãé¢åãªã¿ã€ãã®ãã¹ãã¯ããããã ãã«ã¹ã¿ã ãã¹ãã·ã¹ãã ãã ãã¹ã察象ã®ã¹ã¯ãªããã1ã€ã®ããŒã¿ããŒã¹ã®å¶éãè¶
ããŠ1Cã«ãªã£ãå Žåãããšãã°ãWebãµãŒãã¹ãä»ããå€éšã·ã¹ãã ãšã®çžäºäœçšããã¹ãããå Žåã«äœ¿çšãããŸãã åãã¹ãã°ã«ãŒãã«ã¯ã1ã€ä»¥äžã®ä»®æ³ãã·ã³ãå²ãåœãŠãããããããã«ç¹å¥ãªãšãŒãžã§ã³ãããã°ã©ã ãã€ã³ã¹ããŒã«ãããŠããŸãã ãã以å€ã®å Žåããã¹ãéçºè
ã¯å®å
šãªèªç±ãæã¡ãçµæãCIã§èªã¿åããGoogleãã¹ã圢åŒã®ãã¡ã€ã«ãšããŠæäŸãããšããèŠä»¶ã«ãã£ãŠã®ã¿å¶éãããŸãã
ããšãã°ãWebãµãŒãã¹ã®SOAPã¯ã©ã€ã¢ã³ãããã¹ãããã«ã¯ãCïŒã§èšè¿°ããããµãŒãã¹ã䜿çšããã³ã³ãã£ã®ã¥ã¬ãŒã¿ãŒã®ããŸããŸãªæ©èœããã¹ãããã«ã¯ãPythonã§èšè¿°ãããèšå€§ãªãã¹ããã¬ãŒã ã¯ãŒã¯ã䜿çšããŸãã
ãã®èªç±ã®è£åŽã¯ãåOSã®ãã¹ããæåã§æ§æããå¿
èŠãããããšãä»®æ³ãã·ã³ã®ããªãŒãã管çããããšãããã³ãã®ä»ã®ãªãŒããŒãããã§ãã ãããã£ãŠãçµ±åãã¹ãïŒåã®ã»ã¯ã·ã§ã³ã§èª¬æïŒã®éçºã«äŒŽããã«ã¹ã¿ã ãã¹ãã·ã¹ãã ã®äœ¿çšãå¶éããäºå®ã§ãã
äžèšã®ãã¹ãã¯ããã©ãããã©ãŒã éçºè
èªèº«ãC ++ã§äœæããããç¹å®ã®æ©èœããã¹ãããããã«åŒ·åãããå°ããªæ§æïŒã¢ããªã±ãŒã·ã§ã³ãœãªã¥ãŒã·ã§ã³ïŒãäœæããããšã«ãã£ãŠäœæãããŸãã ããã¯ãšã©ãŒããªãããã®å¿
èŠæ¡ä»¶ã§ãããç¹ã«1CïŒEnterpriseãã©ãããã©ãŒã ãªã©ã®ã·ã¹ãã ã§ã¯ååã§ã¯ãããŸãããã»ãšãã©ã®æ©èœã¯é©çšãããïŒãŠãŒã¶ãŒãçŽæ¥äœ¿çšããŸãïŒãã¢ããªã±ãŒã·ã§ã³ããã°ã©ã ãæ§ç¯ããããã®åºç€ãšããŠæ©èœããŸãã ãããã£ãŠããã¹ãã«ã¯å¥ã®æ®µéããããŸããå®éã®é©çšãœãªã¥ãŒã·ã§ã³ã«å¯Ÿããèªåããã³æåã®ã·ããªãªãã¹ãã§ãã ãã®ã°ã«ãŒãã«ã¯ãã¹ãã¬ã¹ãã¹ããå«ãŸããŸãã ããã¯èå³æ·±ã倧ããªãããã¯ã§ãããããã«ã€ããŠã¯å¥ã®èšäºãèšç»ããŠããŸãã
ããã«ããã¹ãŠã®ã¿ã€ãã®ãã¹ããCIã§å®è¡ãããŸãã ç¶ç¶ççµ±åãµãŒããŒãšããŠã
Jenkinsã䜿çšãããŸãã å·çæç¹ã§ã®å€èŠ³ã¯æ¬¡ã®ãšããã§ãã
åãã«ãæ§æïŒWindows x86ããã³x64ãLinux x86ããã³x64ïŒã«ã¯ãç°ãªããã·ã³ã§äžŠè¡ããŠå®è¡ãããç¬èªã®ã¢ã»ã³ããªã¿ã¹ã¯ããããŸãã 1ã€ã®æ§æã®ã¢ã»ã³ãã«ã«ã¯é·ãæéãããããŸã-匷åãªæ©åšã§ãã£ãŠãã倧éã®C ++ã®ã³ã³ãã€ã«ãšãªã³ã¯ã¯ç°¡åãªäœæ¥ã§ã¯ãããŸããã ããã«ãLinuxçšããã±ãŒãžïŒdebããã³rpmïŒã®äœæã«ã¯ãçµæãšããŠåçã®ã³ã³ãã€ã«æéãããããŸãã
ãããã£ãŠããççž®ãã«ããã¯1æ¥äžæ©èœããWindows x86ããã³Linux x64ã§ã®ã³ã³ãã€ã«ããã§ãã¯ããæå°éã®ãã¹ãã»ãããå®è¡ããŸããå®æãã«ãã¯æ¯æ©æ©èœãããã¹ãŠã®æ§æãåéããŠãã¹ãŠã®ãã¹ããå®è¡ããŸãã ã¢ã»ã³ããªããã³ãã¹ãæžã¿ã®åå€éã¢ã»ã³ããªã«ã¯ã¿ã°ãä»ããããŠãããããéçºè
ã¯ã¿ã¹ã¯ã®ãã©ã³ããäœæãããšãããŸãã¯ã¡ã€ã³ãã©ã³ãããå€æŽãæ¿å
¥ãããšãã«ãã³ã³ãã€ã«ããã³äœæ¥ã³ããŒã§äœæ¥ããŠããããšã確èªã§ããŸãã çŸåšãå®æçãªãã«ããããé »ç¹ã«éå§ãããããå€ãã®ãã¹ããå«ãŸããããã«åãçµãã§ããŸãã ãã®äœæ¥ã®æçµçãªç®æšã¯ãã³ãããåŸ2æé以å
ã«ãã¹ãã§ãšã©ãŒãæ€åºããããšã§ãïŒãã¹ãã§æ€åºã§ããå ŽåïŒããã®ãããèŠã€ãã£ããšã©ãŒã¯å¶æ¥æ¥ã®çµãããŸã§ã«ä¿®æ£ãããŸãã ãã®ãããªåå¿æéã¯ãå¹çãåçã«åäžãããŸãã第1ã«ãéçºè
èªèº«ããšã©ãŒã®å°å
¥äžã«äœæ¥ããã³ã³ããã¹ãã埩å
ããå¿
èŠããªãã第2ã«ããšã©ãŒãä»ã®äººã®äœæ¥ããããã¯ããå¯èœæ§ãäœããªããŸãã
éçããã³åçåæ
ãããããã¹ãã ãã§ã¯äººéã¯çããŠããŸããïŒ ãŸããé·å¹Žã«ããã£ãŠãã®äŸ¡å€ã蚌æããŠããéçã³ãŒãåæã䜿çšããŠããŸãã 1é±éã«1åãå°ãªããšã1ã€ã®ééãããããå€ãã®å Žåãè¡šé¢ãã¹ãã§ã¯ãã£ããã§ããªããã®ããããŸãã
3ã€ã®ç°ãªãã¢ãã©ã€ã¶ãŒã䜿çšããŸãã
- Cppcheck
- PVS-Studio
- Microsoft Visual Studioã«çµã¿èŸŒãŸããŠããŸã
ãããã¯ãã¹ãŠå°ãç°ãªã£ãŠæ©èœããããŸããŸãªçš®é¡ã®ãšã©ãŒãæ€åºããäºãã«è£å®ããæ¹æ³ãæ°ã«å
¥ã£ãŠããŸãã
éçããŒã«ã«å ããŠã
ã¢ãã¬ã¹ãµãã¿ã€ã¶ãŒããŒã«ïŒCLangãããžã§ã¯ãã®äžéšïŒãš
Valgrindã䜿çšããŠãå®è¡æã®ã·ã¹ãã ã®åäœã確èªããŸãã
æäœã®åçãéåžžã«ç°ãªããããã®2ã€ã®ããŒã«ã¯ãã»ãŒåãç®çã§äœ¿çšãããŸããããšãã°ãã¡ã¢ãªã䜿çšãã誀ã£ãæäœã®ç¶æ³ã®æ€çŽ¢ã§ãã
- åæåãããŠããªãã¡ã¢ãªã¢ã¯ã»ã¹
- 解æŸãããã¡ã¢ãªã¢ã¯ã»ã¹
- é
åã®å¢çãè¶
ããŠçµäºãããªã©ã
åçåæã§ã¯ã以åã«æåã§è©Šè¡ããããšã©ãŒãäœåºŠãèŠã€ãããŸããã ããã¯ãåçåæãæå¹ã«ãããã¹ãã®ããã€ãã®ã°ã«ãŒãã®å®æçãªèªåèµ·åãçµç¹ããããã®ã€ã³ã»ã³ãã£ããšããŠæ©èœããŸããã ãã¹ãŠã®ãã¹ãã°ã«ãŒãã§åçåæãåžžã«äœ¿çšããŠããããã©ãŒãã³ã¹ã®å¶éã¯ãããŸãã-Memory Sanitizerã䜿çšãããšããã©ãŒãã³ã¹ãçŽ3åäœäžããValgrindã䜿çšãããš1ã2æ¡äœäžããŸãã ãããããããã®éå®çãªäœ¿çšã§ããè¯ãçµæããããããŸãã
çµç¹ã®å質ä¿èšŒ
æ©æ¢°ã«ãã£ãŠå®è¡ãããèªåãã§ãã¯ã«å ããŠãå質ä¿èšŒãæ¥ã
ã®éçºããã»ã¹ã«çµ±åããããšããŸãã
ãã®ããã«æãåºã䜿çšãããŠããæ¹æ³ã¯ããã¢ã³ãŒãã¬ãã¥ãŒã§ãã ç§ãã¡ã®çµéšã瀺ãããã«ãäžå®ã®ã³ãŒãæ€æ»ã¯ç¹å®ã®ãšã©ãŒããã£ããããã ãã§ãªãïŒããã¯å®æçã«çºçããŸãïŒãããèªã¿ããããããçµç¹åãããã³ãŒããæäŸããããšã§çºçãé²ããŸãã é·æçãªå質ãæäŸããŸãã
ä»ã®ç®æšã¯ãã°ã«ãŒãå
ã®ããã°ã©ããŒããäºãã®äœæ¥ãæåã§ãã§ãã¯ããããšã§è¿œæ±ãããŸã-ã¿ã¹ã¯ã«æ²¡é ããŠããªã人ã«ããè¡šé¢ãã¹ãã§ãããã¿ã¹ã¯ããã©ã³ã¯ã«æ³šãããåã§ãã£ãŠããæ©æã«ãšã©ãŒãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
ãããããã¹ãŠã®çµç¹ç察çã®äžã§æãå¹æçãªã®ã¯ãMicrosoftããç¬èªã®ããã°ããŒããé£ã¹ãããšåŒã°ããã¢ãããŒãã§ããã補åéçºè
ãæåã®ãŠãŒã¶ãŒã§ãã ç§ãã¡ã®å Žåãã補åãã¯ã¿ã¹ã¯ãã©ãã«ãŒïŒäžèšã®ãã¿ã¹ã¯ããŒã¹ãïŒã§ãããéçºè
ã¯ããã1æ¥äžäœ¿çšããŸãã æ¯æ¥ããã®æ§æã¯CIã«ã¢ã»ã³ãã«ããããã©ãããã©ãŒã ã®ææ°ããŒãžã§ã³ã«è»¢éããããã¹ãŠã®çæãšçæã¯ããã«äœæè
ã«åœ±é¿ããŸãã
ãã¿ã¹ã¯ã®ããŒã¹ãã¯ãæ°äžã®ã¿ã¹ã¯ãšãšã©ãŒã«é¢ããæ
å ±ãä¿åããæ·±å»ãªæ
å ±ã·ã¹ãã ã§ããããŠãŒã¶ãŒæ°ã¯100ãè¶
ããŠããããšã匷調ããããšæããŸãã ããã¯
1CïŒEnterpriseã®æ倧ã®å®è£
ãšã¯æ¯èŒã§ããŸããã
ãäžèŠæš¡ã®äŒæ¥ãšéåžžã«å¹æµããŸãã ãã¡ããããã¹ãŠã®ã¡ã«ããºã ããã®æ¹æ³ã§ãã§ãã¯ã§ããããã§ã¯ãããŸããïŒããšãã°ãã¢ã«ãŠã³ãã£ã³ã°ãµãã·ã¹ãã ã¯äžåé¢äžããŸããïŒãããã¹ããããæ©èœã®ç¯å²ãåºããããã«ãç°ãªãéçºã°ã«ãŒããç°ãªãæ¥ç¶æ¹æ³ã䜿çšããããšãããšãã°èª°ããWebã¯ã©ã€ã¢ã³ãã䜿çšãã誰ããWindowsã®ã·ã³ã¯ã©ã€ã¢ã³ãã§ãããLinuxã®èª°ãã§ãã ããã«ãç°ãªãæ§æïŒç°ãªãããŒãžã§ã³ãç°ãªãOSãªã©ïŒã§åäœããã¿ã¹ã¯ããŒã¹ãµãŒããŒã®ããã€ãã®ã€ã³ã¹ã¿ã³ã¹ã䜿çšããããã©ãããã©ãŒã ã«å«ãŸããã¡ã«ããºã ã䜿çšããŠäºãã«åæãããŸãã
ã¿ã¹ã¯ããŒã¹ã«å ããŠãä»ã®ãå®éšçãããŒã¹ããããŸãããæ©èœçã§ã¯ãªãè² è·ãå°ãªãã§ãã
åŠãã æèš
å質ä¿èšŒã·ã¹ãã ã®éçºã¯ããã«ç¶ãããïŒå®éããã®éã«çµæ¢ç¬Šãæã€ããšã¯ã»ãšãã©äžå¯èœã§ãïŒãä»ãããã€ãã®çµè«ãå
±æããæºåãã§ããŠããŸãã
- ãã®ããã«åºãåºã䜿çšãããŠãã補åã§ã¯ããã¹ããäœæããã»ãããäœæããªããããå®äŸ¡ã§ãã æ©èœã«ãšã©ãŒãããããããã¹ããããããå Žå-ãšã³ããŠãŒã¶ãŒãããŒãããŒããµããŒããµãŒãã¹ãããã«ã¯ãšã©ãŒã®åçŸãä¿®æ£ãããã³ãã®åŸã®æ€èšŒã«é¢é£ãã1ã€ã®éçºéšéã®ã³ã¹ããã¯ããã«å€§ãããªããŸãã
- èªåãã¹ãã®äœæãé£ããå Žåã§ããéçºè
ã«æåãã¹ãã®æ£åŒãªèª¬æãäœæããããäŸé Œããããšãã§ããŸãã ãããèªãã åŸãããªãã¯éçºè
ã圌ã®é è³ãã©ã®ããã«ãã§ãã¯ãããããããã£ãŠæœåšçãªãšã©ãŒã®ã®ã£ãããèŠã€ããããšãã§ããŸãã
- CIããã³ãã¹ãçšã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãäœæããããšã¯ã財åé¢ã§ãæéé¢ã§ãã³ã¹ãã®ãããããžãã¹ã§ãã ç¹ã«ããã§ã«æçãããããžã§ã¯ãã§ãããè¡ãå¿
èŠãããå Žåã ã§ããã ãæ©ãå§ããŸãããïŒ
ãããŠãã1ã€ã®çµè«ã¯ãèšäºããçŽæ¥ã§ã¯ãããŸãããã次ã®ããšãçºè¡šããŸãããã¬ãŒã ã¯ãŒã¯ã®æè¯ã®ãã¹ãã¯ããã®äžã«æ§ç¯ãããã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãã§ãã ãã ãã1CïŒAccountingãªã©ã®é©çšãœãªã¥ãŒã·ã§ã³ã䜿çšããŠãã©ãããã©ãŒã ããã¹ãããæ¹æ³ã«ã€ããŠã¯ã次ã®ããããã®èšäºã§èª¬æããŸãã