SIç³»ä¼æ¥ã§ç¤¾å ç¬èªã®ãã¬ã¼ã ã¯ã¼ã¯ãä½ããããªãçç±ã«ã¤ãã¦
ãã¥ã¼ãã£ã¼ã¢ã¼ããã¯ãï¼è£ï¼ Advent Calendar 2017 ã®14æ¥ç®ã§ãã
tl;dr
- 社å ãã¬ã¼ã ã¯ã¼ã¯ã¯éçºçç£æ§ãé«ããããã¨è¨ããããã¨ãå¤ãããå®éã¯ã·ã¹ãã ãå®ãããã«ç£ã¾ããï¼ãã¨ãããï¼
- ãã¹ã¦ã¯è¤éæªå¥ãªæ¥åãã·ã¹ãã åãã人ããã·ã¹ãã ã¢ã¼ããã¯ãã£ãéæ©è½é¢ã¾ã§å ¨ã¦è¦ããªããã¨ã«èµ·å ãã
- ç»æçãªããã¯ã¯ãªããæ¥åã«ãã·ã¹ãã ã«ã詳ãã人ãå¢ããã¦ããã¾ããã
ã¯ããã«
SIç³»ã®å¤§è¦æ¨¡ãªæ¥åã·ã¹ãã éçºã«åå ããã¨ã社å ç¬èªã®éåãªãã¬ã¼ã ã¯ã¼ã¯ã«ééãããã¨ãããã¨æãã¾ããããã§ãã社å ãã¬ã¼ã ã¯ã¼ã¯ã¨ã¯ä»¥ä¸ã®æ¡ä»¶ã«ä¸è´ãããã®ãæããã¨ã«ãã¾ãã
- ã¯ãã¼ãºãã½ã¼ã¹ã§ãã
- ãã®ç¤¾å ã§ã¼ããã¼ã¹ã§éçºãããããæ¢åã®ãã¬ã¼ã ã¯ã¼ã¯ãæ¡å¼µã»ã©ãããã¦ãããªã©ãç¬èªã®èæ¯ã»ææ³ã«ããéçºããã¦ãã
- ãã®ããããã¬ã¼ã ã¯ã¼ã¯ç¬èªã®ãä½æ³ãå¶ç´ããã
- éçºçç£æ§ã®åä¸ããéæ©è½çãªè¦ä»¶ãæºãããã¨ãç®çã¨ãã
社å ãã¬ã¼ã ã¯ã¼ã¯ã«æãã馳ãã
èªåãçµé¨ãããã®ã¯Javaãã¼ã¹ã®Web/ãããã®ä¸¡æ¹ã«å¯¾å¿ãããã¬ã¼ã ã¯ã¼ã¯ã§ããè¯ãã¨ããã沢山åã£ãã¨æãã®ã§ãããã¯ã»ãå¼·ãã£ãè¨æ¶ãå¼·ãã§ããä¾ãã°ä»¥ä¸ã®ãããªéçºãè¡ãªãå¿ è¦ãããã¾ããã
- éçºè ãç¬èªã§RDBã«å¯¾ããã³ããã/ãã¼ã«ããã¯ãè¡ãªããã¨ãã§ããªã
- apache.commonsã®StringUtilsãããªãã¦åºåºã¯ã©ã¹ã®ã¦ã¼ãã£ãªãã£ã¡ã½ããã使ããã¨ãæ¨å¥¨
- ããããããªãåã®å¤ãreturnããå¿ è¦ããããã©ããã®æå³ãããããããªãã®ã§ãã¿ããªåãå¤ãã»ãããã
ãªã©ãªã©ã
è²ã å°ãã¾ããã
社å ç¬èªãã¬ã¼ã ã¯ã¼ã¯ãè¯ããæªããã¯ãã¦ãããä¸äººã®éçºè ã¨ãã¦ã¯å°ãç¹ãè²ã ããã¾ããä¸ã«ã¯ç¤¾å ãã¬ã¼ã ã¯ã¼ã¯ãæªãã¨ããããã¯ãéçºä½å¶ä¸ã®åé¡ã§ãã£ãããæä¾è å´ã®ã¢ã©ã«ã®åé¡ãªé¢ãå¤ãã¨æãã®ã§ããâ¦ã
- ä»æ§ãã°ã°ã£ã¦ãåºã¦ããªãããï¼å½ç¶ãªããã¯ãã¼ãºãæè¡ãªã®ã§ï¼ãæèè ã«èããã½ã¼ã¹ãèªãããç¡ã
- ä»æ§ã«ã¯ã»ããããã¨ãå¤ãã使ãããªãã¾ã§ã«æéãããã
- è¨è¨ææ³ã»APIä»æ§ã»å¶ç´ã»FAQã¨ãã£ãããã¥ã¡ã³ããæªæ´åãªãã¨ãï¼çµé¨ä¸ï¼å¤ã
- ä»æ§ãæºãããªãã£ãæã®å¯¾å¿æ¹æ³ããã¡ã³ããã³ã¹ãã¼ã ã«ã伺ãããå¿ è¦ãããããªã¼ãã¼ããããçºçãã
- ç°å¢æ§ç¯ãé£ããå ´åãå¤ããããã¦ãQuick Startã¨ãã£ãæ°ããããREADMEãç¡ã
ãã¨ãç¹å¾´ã¨ãã¦ç°å¢å¤æ°ãã·ã¹ãã ããããã£ãå¤é¨å®ç¾©ãã¡ã¤ã«åããã¦ããå°è±¡ãããã¾ãã便å©ã ãããªã¨æãåé¢ãé ç®ãå¤ããã¦ä½ãåãæ¿ãããã©ããªããããããªãã£ãè¨æ¶ãããã¾ãã
ä»æãã¨ããªãã¢ããªã¹ãªã¢ã¼ããã¯ãã£ã§ããã¤ãªã³ãã¬ãã¹ã ã£ãã®ã§ä»æ¹ãªãé¢ãå¤ããã§ããã©ãã
éçºçç£æ§ã¯é«ã¾ã£ãã¨è¨ãã°é«ã¾ã£ãã¨æãã®ã§ããããã¬ã¼ã ã¯ã¼ã¯ã®ãã£ããã¢ããæéãããã£ãæéãèæ ®ããã¨ãåçã«åä¸ããã¨ã¯è¨ãåãã¾ãããä¾ãã°ãRailsãSpringBootããã¼ã¹ã ã¨ãã§ã«éçºçç£æ§ã¨ãã¦ã¯åªç§ã§ãããã
ä½ãå´ã«ãªã£ã¦ã©ãã
æ°å¹´å¾ãèªåããããã¬ã¼ã ã¯ã¼ã¯ãæä¾ããå´ã®ãã¼ã ã«å ¥ã£ã¦ãè²ã ãªç«å ´ããããã¨ãå¦ã³ã¾ããã
ã¾ããã¢ã¼ããã¯ãã£ãè¨è¨éçºããç«å ´ã¨ãã¦ãéæ©è½çãªè¦³ç¹ã¾ã§èæ ®ããéçºè¦ç´ãä½ãã¨æãã®ã§ããã大è¦æ¨¡éçºã ã¨ã¾ãå®ãããªãã¨ãããã¨ãå®æãã¾ãããã©ããªè¦ç´ãã¨ããã¨ãDBãå¤é¨ãµã¼ãã¹ã«è² è·ãæ¸ããªãããã«ãæµé調æ´ãããããããå®è¡ã§ãããã®ã¯ãã¦ããã¨ãã£ããã¤ã§ãã
ãããããéçºè ã®èªä¸»æ§ã«æ¾ãæããã®ã§ã¯ãªãã¦ãã³ã¼ãã¬ãã¥ã¼ã§æ ä¿ããããã¨ãã話ãªãã§ããããã¬ã¼ã ã¯ã¼ã¯ãã¢ã¼ããã¯ãã£ãè¨è¨ãã人ãã³ã¼ããè¦ãã®ã¯ãUnitTestãå®æããå¾ãã¤ã¾ãããªãéçºå·¥æ°ããããå¾ã«ãªãã¾ãã
ã©ããã¦ãã¨ããã¨ããããã大è¦æ¨¡ã ã¨åå¥ã®æ©è½ã®ä»æ§ãããã¬ã¼ã ã¯ã¼ã¯æä¾è ã¯æãããã¦ã¾ãããDBã®ã¨ã³ãã£ãã£æ°ãæ°ç¾ãã£ã¦ããã®æ©è½ã§ã©ã®ã¨ã³ãã£ãã£ã®ã©ã®é ç®ãã©ã®ããã«CRUDãããã¹ããã¯ããªãé«åº¦ãªæ¥åçã·ã¹ãã ç¥èãæ±ããããã®ã§ãããããããã®æ¥åãµãã·ã¹ãã ãæ å½ãããã¼ã ããç´°ããä»æ§ã¯æãããã¦ãã¾ããã
åæã«ãéæ©è½ã¾ã§æèã§ããã¬ãã¥ã¢ã¼ã大è¦æ¨¡éçºã ã¨ç¢ºä¿ãã«ããã®ã§ãåãµãã·ã¹ãã ãã¼ã ãã¨ã«ã¢ãµã¤ã³ãããã¨ã¯é£ãããå¤ãã¯ãã£ã¨åºãé åãæ å½ãããã¨ã«ãªãã¾ãããã®ãããå½¼ãã¯é常ã«å¿ããã®ã§ãä»æ§ãæºããã¦ãããã¨ãã£ãæ©è½é¢ã®ã¬ãã¥ã¼ã¾ã§æ å½ãããã¨ã¯æéçã«ä¸å¯è½ã§ãããã®ãããä»æ§çã»æ©è½çã«ã¯æ ä¿ããã¦ããç¶æ âUnitTestå¾ã«ã¬ãã¥ã¼ããã®ãåççã«ãªãã¾ãã
ã¤ã¾ãããã¬ã¼ã ã¯ã¼ã¯éçºè ã¯ãUnitTestãä½æãããã³ã¼ãããéæ©è½çãªå´é¢ã«ãã¼ãã¬ãã¥ã¼ãããã¨ãããã¨ã«ãªãã¾ãã
ã©ããã£ã観ç¹ã§ã¬ãã¥ã¼ãããã£ã¦ï¼
ããããããã®ã¯â¦
- 大é件æ°ã«ãªããããã¼ã¿ãå ¨ä»¶ã¡ã¢ãªä¸ã«å±éããã³ã¼ãã«ãªã£ã¦ããªãã
- N+1ãªSQLçºè¡ï¼ãã·ã³ã¬ã³SQLï¼ã«ãªã£ã¦ããªãããã¾ãã¯ããããããåã§ããªãã
- ãªãã¬ã¯ã·ã§ã³ãªã©ãªã¼ãã¼ããããé«ãå¦çãç¡ç¨ã«è¡ã£ã¦ããªãã
- é©åãªä¾å¤ãã³ããªã³ã°ãè¡ã£ã¦ããã
- SQLã§ãããããã¯ãçºçãããããªæä½ããã¦ããªãã
- ãªã³ã©ã¤ã³å¦çã¨ãããå¦çã§ãã¼ã¿ç«¶åãã¦ããªãã
ãªã©ã§ããããã
åºæ¬çã«ã¯éçºç°å¢ã®æ°ä»¶ã®ããã¼ãã¼ã¿ã§ã¯é¡å¨åããªããã©ããããã¯ã·ã§ã³ç°å¢ã§æ¬æ ¼ã«å©ç¨ãããã¨é¡å¨åãããããªãéæ©è½çãªãã¤ã³ãã確èªãã¾ãã
ããã«ä¸ããå 容ã¯å²ãã¨åºæ¬çãªã®ã§ãå®éã«ã¯ãã¾ãææãããã¨ã¯ç¡ãã§ããããã¾ã«ãã³ãã¢ãã¤ç¶æ ã®ã³ã¼ããè¦ããã¨ãããã¾ãã
ã§ãã¬ãã¥ã¼ã§ãã¡ã ã£ããã©ããããã
ä¸è¨ã®ç¨åº¦ã§ããã°ã¡ãã£ã¨ããå¤æ´ã§å¯¾å¿å¯è½ããããã¾ããããä¾ãã°ãé·ããããã©ã³ã¶ã¯ã·ã§ã³ãæã¤ã®ã§ãè¤æ°ã®æ©è½ã«åå²ãã¹ãã ã¨ããçµè«ã«ãªããã¨ãããã¾ãã
ããã§çµæ§å°ãã®ãããã§ã«ããç¨åº¦ã®å·¥æ°ãè²»ãããä¸ã§UnitTestã¾ã§ä½ããã¦ãããä»æ§çã»æ©è½çã«ã¯æ£ããéçºããã¦ããã¨ãããã¨ãªãã§ããã
ãããã»ã¨ãã©ä½ãç´ãã«è¿ãå½ä»¤ãä¸ãã®ã¯ããã¬ã¼ã ã¯ã¼ã¯æä¾è å´ã«ã¨ã£ã¦ãä¸ã é£ãããã®ã§ãããã§ã«å·¥æ°ãããã¦éçºãã¦ãã¦ã追å ã§ä½æ¥ããæéã¯æ£ç´å³ããããªãã¨ããªããªãï¼ã¨ç¸è«ãããããã§ãããã
æä½éã®ä¿®æ£ã§å¿æ¥å¦ç½®ããã¦ãææ¬çãªä¿®æ£ã¯PJã®ãããã¡æéã«å¯¾å¿ããããã¿ãããªè½ã¨ãæã§ããã
æè«ã§ãããPJã®ãããã¡æéãããã«é©ç¨ããããã¨ã¯ãªãã§ãã
ããã¦æè¡çè² åµãç£ã¾ãã
ãããã¡æéã«ååããããæè¡çè² åµãªæ©è½ã¯ãã¬ã¼ã ã¯ã¼ã¯æä¾è å´ã«ã¨ã£ã¦ãç®ã®ä¸ã®ãããã¶ã§ãããªãããããæ§è½ãã¹ãããã³ã°ã©ã³ãã¹ãããããããã¨ã·ã¹ãã ãã«ãããªã¼ãã¼ãããããã¯ã·ã§ã³ã«ä¹ã£ãå¾ã«ä¸å ·åãçããéç¨ã«æå¥ãè¨ãããå ´åãããã§ãããã
éæ©è½ã¯ã¢ã¼ããã¯ãã£ããã¬ã¼ã ã¯ã¼ã¯ã§æ¨ªä¸²ã§éæãã¹ãé ç®ãªã®ã§ãä¸ã¤ã§ãæªéæãªæ©è½ãããã¨ãé¢ä¿è ã¸ã®èª¬æã«å°ã£ã¦ãã¾ãã¾ãã
ãããããªãã¨ãèµ·ãããªãããã«ããããããããéçºè¦ç´ã¯å®ãããªãããå®éã®æã¬ãã¥ã¼ã¾ã§æ¥ã¦ãã¾ã£ããã¨ã«å¤§ããçªãè¿ããã¨ã¯ä¸å¯è½ãããããã¨ããã¬ã¼ã ã¯ã¼ã¯ã§æªããã§ããªãããã«ãããï¼ã¨ããæèã«ãªãããã§ãã
ãããªã®ã§ããä½ãæå°æªã§æ©è½ãå¶éãã¦ãã訳ã§ã¯ãªãã®ã§ããåè¿°ã®ãã©ã³ã¶ã¯ã·ã§ã³ãéçºè èªèº«ã®å¤æã§ã³ãããã»ãã¼ã«ããã¯ã§ããªãã®ãããã£ã¨éå»ã®ã ãããä¸å ·åãçããããçµæãã¾ããããã¬ã¼ã ã¯ã¼ã¯ã課ããå¶ç´ã ã¨æãã¾ãã
ããæå³ããã¬ã¼ã ã¯ã¼ã¯ã®ãªããã®æ©è½ãå°å°ãã¦ãããã ã使ãã«ãããã£ã¦ããã®ã¯ãèªç±åº¦ãçããããã®æ¥ãªã®ã§ä»æ¹ãªãã®ã§ããåãå ¥ãã¾ããããæ¥ãããããã«ã¯ããã®æ¥ããªãçã¾ããã«æãã馳ããã»ããå¾ããã®ãããããããã¾ããããããããããã¦ãã¦ã§ãã£ãã¨ãã¦ãä½ããæ¹åãããã¨ãã人ãã¡ã®æããè©°ã¾ã£ã¦ããã®ã§ãã
ããã¯ãã£ã¦ãå¥ã®æ¹æ³ããããããï¼
ããããããã¾ãã
ä¾ãã°ãéçºè¦ç´ãä½ã£ãã®ã§ããã°ããããèªåãã§ãã¯ããLinterãCIã§ãã§ãã¯ããã°è¯ãã¦ããã£ã¨ç´°ããªãã£ã¼ãããã¯ãåéçºè ã«éãã¹ãã§ã¯ï¼ã¨ãã£ãæè¦ã§ãããããã®éãã ã¨æãã¾ãã
ããã社å ãã¬ã¼ã ã¯ã¼ã¯ã®ç½ªæ·±ãã¨ããã§ããä½æ³ãå¶ç´ãããå²ã«ãããããµãã¼ãããéçºæ¯æ´ãã¼ã«ï¼Linterããµã¸ã§ã¹ãï¼ã貧弱ã§ãã£ããæºåããã¦ããªããã¨ãå¤ãã§ãããããèªèº«ããã¬ã¼ã ã¯ã¼ã¯ãã®ãã®ã®æ¹ä¿®ä½æ¥ã«æä¸æ¯ã§ãLinterãä½ãã¨ããçºæ³ãç¡ãã£ãã§ãã
ãã®ãããããã¡ã¤ã«ä¿åããã¯ã§Linterãèµ·åãã社å ãã¬ã¼ã ã¯ã¼ã¯ã®ãä½æ³ãå®ãã¦ããããã§ãã¯ãåºæ¥ãã°ãé常ã«éãæ´ããã§ããããããã社å ãã¬ã¼ã ã¯ã¼ã¯ãæ£å½æ§ãèã¾ããããããä½ããªãæ¹ãè¯ããããã¨ãã話ã«ããç¹ããããããã¾ããã
æ¸å¿µã¨ãã¦ã社å ãã¬ã¼ã ã¯ã¼ã¯ãåãå·»ãç°å¢ã¯éãæ·±ããLinterã§ãã§ãã¯ãã¦ãç¡è¦ãã人ãããããåºã¦ãããã ãªã¨ãããã¨ãããã¾ãããã®å ´åã¯ãLinterã®ãã§ãã¯ã«åæ ¼ããªãã¨ãªã¢ã¼ããã©ã³ãã«ããã·ã¥åºæ¥ãªãã¨ãã£ãéçºããã¼ãæ´åããå¿ è¦ãåºã¦ããã§ãããã
ããã¾ã§æ¥ãã¨ããããªå¯¾å¦çæ³çãªæ¬è³ªããç¡ãæ´åã¯è¾ãã®ã§ãéæ©è½çãªè¦³ç¹ã§ã·ã¹ãã ãå®ãç«å ´ããããã¨ãã©ã³ã¿ã¤ã ã®éçºãã¬ã¼ã ã¯ã¼ã¯å´ã§å¤ãªã³ã¼ããåããªããããã..ãã¿ãããªãã³ã·ã§ã³ã«ãªãã¾ãã
æ¶èæ¦ã¿ããã ãã£ã¦èª°ããã¤ã¶ããã¦ã¾ããã
ããããããããã人ãããæç¹ã§
ãããã¾ããã¿ãªã¾ã§è¨ããªãã§â¦ã
ã¾ããã§ããä¾ãã°100人ã¨ã200人ã®éçºè ãæãããã¨ããã¨ãåæ§çãªäººæãéã¾ãããã§ãè²ã ãªãã¨ãçºçãããã§ãããã
ãã£ããã¨ãªãã§ããã30人ã¨ãã§ãæ¥ã«éããã®ã¯ä»ã®ã¨ã³ã¸ãã¢ä¸è¶³ã®ãæä¸ãã¨ã¦ã大å¤ã ã¨æãã¾ãã
ã©ãããã°ï¼
社å ãã¬ã¼ã ã¯ã¼ã¯ãç£ã¾ããçç±ãèããã¨ãåéçºè ãéæ©è½çã«ã·ã¹ãã ã«ä¸æ´åãè² è·ãæ¸ããªãããã«ãããã¨ããéæããã大ããªç®çã®ä¸ã¤ã«ããã®ã¯ééããªãã¨æãã¾ãã
ãã®ããããã¬ã¼ã ã¯ã¼ã¯ã¨ããéçºã©ã³ã¿ã¤ã ã§æ ä¿ãããã®ã§ã¯ãªããå¥ã®ææ³ã§æ ä¿ãããã°ããã¬ã¼ã ã¯ã¼ã¯ãããä½æ³ãå¶ç´ãæ¶ããã¨ãåºæ¥ã¾ãã
ä¾ãã°ã
- éçã»åçãªã³ã¼ã解æã§èãã³ã¼ããæ©ãã«æ¤ç¥ããçãçµãã¬ãã¥ã¼ãã
- æ¬çªæ³å®ã®ã·ã¹ãã ãã¹ããèªååãã¦CIãåãã·ã¹ãã çãªä¸æ´åãæ¤åº
- éçºç°å¢ã®ãã¼ã¿ã»ããã®ç²¾åº¦ã¨éãå¢ãã
ãªã©ã§ãããããããããæºåã¯ãããã¯ããã§å¤§å¤ãªä½æ¥ã§ãã
çµå±ã®ã¨ãã
ä¸çªã¦ã£ã¨ãæ©ãã®ã¯ãæ¥åãµãã·ã¹ãã ã®ãªã¼ãã¼ãã·ã¹ãã ã®éæ©è½é¢ã¾ã§ã«ç²¾éãããã¨ããããã¾ãããä»æ§çã»æ©è½çã«æ£ããã¨ããã¬ãã¥ã¼ãããåæã«éæ©è½çãªãã¨ãã¬ãã¥ã¼ã§ããã°æå¥ãªãã§ãããã¡ãããéã«æè¡çã«ç²¾éãã人ããã£ã¨æ¥å詳細ã¾ã§è¸ã¿è¾¼ãã§ãããã¨ãå¿ è¦ã§ãããã
ç¡è«ã人åã§åã ã®ã¹ãã«ã¢ããã«æå¾ ãã¾ãããããªãã¦ãè±çã§çµããããLinterãéçºè¦ç´ï¼Whyã¾ã§èª¬æã§ãã¦ããï¼ãLinterãCIãªã©ãæ´åããéçºç°å¢ãæ©æ¢°åã»èªååããä»çµã¿ã§åãå ¥ããæã¯åãå ¥ãã¦ããã¨ããã®ãç¾å®è§£ã§ã¯ãªããã¨æãã¾ãã
ãã®éã«ãéç解ææè¡ãé²ã¿ãããé«åº¦ãªã³ã³ããã¹ããæããLinterãçºéãããã¨ã«æå¾ ãããããããLinterãã®ãã®ã®éçºã«æè³ããã»ããã社å ãã¬ã¼ã ã¯ã¼ã¯ã«æè³ããããå®ãããããã¨ããããã¾ããã
ã¾ã¨ã
- 社å ãã¬ã¼ã ã¯ã¼ã¯ã¯éçºçç£æ§ã®åä¸ã¨ããããã¯ãéæ©è½è¦ä»¶ãå®ããã¨ãç®çã«ç£ã¾ãããã¨ããã
- ãããã®å質ã¯ãéçºãã¬ã¼ã ã¯ã¼ã¯ã§ã®ãé¤ãã¨ãã¹ãã»ã¬ãã¥ã¼ã»Linterãªã©ã§æ ä¿ãããããªãããæ¬çªããªããã®ãã¹ãæºåã¯é£æ度ãé«ããã¬ãã¥ã¼ã¨Linterãªã©ã§æ ä¿ãããããªã
- Linterã§ãã§ãã¯ã§ãããã¨ã®ä¸éãããã®ã§ãLinterãä½ããã¬ã¼ã ã¯ã¼ã¯æè¡ã®çºéãæ±ãããã