100äžè¡ãªãŒããŒã®ã¢ããªã·ãã¯Railsã¢ããªããã€ã¯ããµãŒãã¹åããã¯ãã¯ãããã®æé
ãã€ã¯ããµãŒãã¹ã®å°å ¥äºäŸããäžã®äººã培åºçã«èªããŸããã¯ãã¯ãããã§ã¯ã100äžè¡ãªãŒããŒã®è¶ 巚倧ãªRuby on Railsã¢ããªã®ãã€ã¯ããµãŒãã¹åã«æã¿ãŸãããã¢ããªãããã«åé¢ãã飿ºã§ããããã«ãããããªã©ãåç€Ÿãæ¡ã£ããã€ã¯ããµãŒãã¹åã®æŠç¥ãèããŸããã
- Ruby on Railsã®ããŒãžã§ã³ã¢ããã«1幎ããã£ãŠãã
- ããã€ã¯ããµãŒãã¹åæŠç¥ããŸãã¯ã³ãŒããæžããããšãã
- ããã€ã¯ããµãŒãã¹åæŠç¥ãã¢ããªåºæã®ãããããŠããŠãæžãã
- ããã€ã¯ããµãŒãã¹åæŠç¥ããŸãã¯åé¢ããããéšåããã詊ãã§
- ããã€ã¯ããµãŒãã¹åæŠç¥ãããŒã¿ããŒã¹ãåããŠããã°ãµãŒãã¹ãåãããã
- ããã€ã¯ããµãŒãã¹åæŠç¥ãã€ã³ãã©æ§æãæšæºåãã
- ããã€ã¯ããµãŒãã¹åæŠç¥ããµãŒãã¹ã¡ãã·ã¥ãå ¥ããŠéä¿¡ã®èª²é¡ãã¯ãªã¢ãã
- ãã€ã¯ããµãŒãã¹åã¯ãã·ã¹ãã æ¹åã§ããçµç¹æ¹åã§ããã
ãµãŒãã¹ãæ§æããã·ã¹ãã ã忣ã»çްååãããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ããã®ææ³ãå°å ¥ããäŒæ¥ã¯ãåŸã ã«å¢ããŠããŸãããããããã€ã¯ããµãŒãã¹åã®ããã®ãã¹ããã©ã¯ãã£ã¹ãèŠåºãã®ã¯é£ããã§ããããã©ã®äŒæ¥ãææ¢ãã®ç¶æ ã§ãã¢ãŒããã¯ãã£æ¹åã®åãçµã¿ãããŠããã®ãçŸç¶ã§ãã
ã§ã¯ã巚倧ãªãµãŒãã¹ãæã€æåITäŒæ¥ã¯ãã©ããã£ãŠãã€ã¯ããµãŒãã¹åãæšé²ããŠããã®ãããã®ææ³ãåŠã¶ããšã§ãããã€ã¯ããµãŒãã¹åãè¡ãããã®éããã¹ããèŠããŠããã®ã§ã¯ãªãã§ãããããä»åã¯ãæçã¬ã·ãæçš¿ã»æ€çŽ¢ãµãŒãã¹ã¯ãã¯ãããã®ããå°å Žãããžã§ã¯ãããšåŒã°ããäºäŸãæãäžããŸãã
èãæãåããã®ã¯ãæ ªåŒäŒç€ŸãŠã«ãããŒãã®ä»£è¡šåç· åœ¹ã§ãããã¢ãŒããã¯ãã£èšèšã®ã¹ãã·ã£ãªã¹ãã§ãããå·å³¶çŸ©éããã話ãæã¯ãããå°å Žãããžã§ã¯ããã®çºèµ·äººã§ããéæšå³°éãããšããããžã§ã¯ããªãŒããŒã§ãã倿åä»ããã§ãã
ãäžçæå€§ã®ã¢ããªã·ãã¯Ruby on RailsãµãŒãã¹ããšãèšãããŠããã¯ãã¯ããããã现ååããããã®ææ³ã«è¿«ããŸãã
- 倿 åä»ïŒã»ãããã»ããã²ãšïŒ
hokaccha
hokacchaïŒåçå³ïŒ
- ãœãŒã·ã£ã«ã²ãŒã ã®ããã¯ãšã³ãéçºãWebããã³ããšã³ãã®éçºæ¥åãçµéšåŸã2015幎ã«ã¯ãã¯ãããã«å ¥ç€Ÿãã¬ã·ããµãŒãã¹ã®ãµãŒãã¹éçºã«æ°å¹Žæºãã£ãåŸãçŸåšã¯æè¡éšã¯ãã¯ããããµãŒãã¹åºç€ã°ã«ãŒãã«ãŠã¢ããªã·ãã¯ã§å·šå€§ãªRailsã¢ããªã±ãŒã·ã§ã³ã®ã¢ãŒããã¯ãã£æ¹åæ¥åã«åŸäºããŠãããèæžã«ããã³ããã°ã©ãã®ããã®JavaScriptã¯ããã®äžæ©ããªã©å€æ°ã
- éæš å³°éïŒãããã»ã¿ãããïŒïŒåçäžå€®ïŒ
- ãµã€ãã®äœè²äŒç³»ããã°ã©ããŒã倧åŠåšåŠäžã«Rubyãã¯ãããšããOSSéçºã«ã©ã£ã·ãã€ããã2007幎ãã䞊å忣RDBMSãã³ããŒã«å€åã䞊ååŠçã«ç®èŠããã2013幎ã«ã¯ãã¯ãããå ¥ç€ŸïŒçŸè·ïŒãããŒã¿åæãµãŒãã¹ããã¹ã¿ããããšã³ãžãã¢ã»ãŒ1人ã§å®è£ ãçŸåšã¯æè¡éšããŒã¿åºç€ã°ã«ãŒãã«æå±ããå šç€Ÿå ±éããŒã¿åæåºç€ã®æ§ç¯ãªãŒãããå°å Žãããžã§ã¯ãPMãªã©ãå¹ åºãææãããããµã€ãã®Linuxããã°ã©ãã³ã°ãã10幎æŠããããŒã¿åæå ¥éãã¯ããèæžå€æ°ã
- å·å³¶ 矩éïŒããããŸã»ããããïŒ
kawashima ïŒåçå·ŠïŒ
- æ ªåŒäŒç€ŸãŠã«ãããŒã 代衚åç· åœ¹ãTISæ ªåŒäŒç€Ÿã«ãŠ19幎åãæ§ã ãªæ¥çš®ã®ã·ã¹ãã ã¢ãŒããã¯ãã£èšèšãæ åœãã2018幎ã«éè·ãæ ªåŒäŒç€ŸãŠã«ãããŒãã嵿¥ããã以鿵ãã®ã¢ãŒããã¯ããšããŠãåè·æä»£ããæžãæºããŠããOSSãããã¯ããæè¡èšäºãå ã«ãæ§ã ãªçŸå Žã§ã¢ãŒããã¯ãã£ã®èšèšãç ä¿®ã宿œããŠããã
Ruby on Railsã®ããŒãžã§ã³ã¢ããã«1幎ããã£ãŠãã
å·å³¶ïŒä»åã®ã€ã³ã¿ãã¥ãŒã§ã¯ãããå°å Žãããžã§ã¯ããã«ã€ããŠã®ã話ã䌺ãããã§ãããã®ãããžã§ã¯ãã¯äœãç®æãããã®ã ã£ãã®ã§ããããïŒ
倿ãããå°å Žãããžã§ã¯ããã¯ãcookpad_allãšãããªããžããªã®ã¢ãŒããã¯ãã£å·æ°ã»æ¹åãç®æãããã®ã§ããããã¯ãã¯ãã¯ãããã cookpad.com ã®ãã¡ã€ã³ã§æäŸããŠããã¬ã·ããµãŒãã¹ã§ããã¿ãªãããããããããã¬ã·ããµãŒãã¹ã®ã¯ãã¯ãããããšèããŠã€ã¡ãŒãžãããã®ã«ãªããŸãã
cookpad_allã®ãªããžããªå ã«ã¯ãWebã¢ããªã±ãŒã·ã§ã³ãAPIãµãŒãã管çç»é¢ãããããªã©ã®ã·ã¹ãã ãå«ãŸããŠããŸãããããã®ã³ãŒãäžåŒããäžçäžã®ã¢ãã·ãªãã¯Ruby on RailsïŒä»¥äžãRailsïŒãµãŒãã¹ããšåŒã°ããŠãããã®ã§ãã
ã³ãŒãè¡æ°ãšããŠã¯ãRubyã®ã³ãŒããçŽ27äžè¡ïŒãã¹ããé€ãïŒããã¹ãã³ãŒããçŽ51äžè¡ãHTMLãã³ãã¬ãŒããçŽ14äžè¡ãã€ãŸãããŒã¿ã«ã§100äžè¡ã»ã©ãããŸããã
å·å³¶ïŒã¢ããªã±ãŒã·ã§ã³ã巚倧ã§ãããããã«ãããå°å Žãããžã§ã¯ããã®æšé²åã¯éçºã»éçšã«ãããŠå€§ããªèª²é¡ãæ±ããŠããããã§ãããã©ã®ãããªèª²é¡ããã£ãã®ã§ããïŒ
éæšãã¢ããªã巚倧ããããããcookpad_allã«å€§èŠæš¡ãªæ©èœè¿œå ã»å€æŽãã§ããªãããšãæ¬è³ªçãªèª²é¡ã§ãããããã³ãŒãã倿Žãããšãæå³ããªãç®æã®æ©èœãåããªããªã£ãŠããŸããã§ããã©ã€ãã©ãªã®ããŒãžã§ã³ãè¿éã«ã¯äžããããŸãããäŸåãå€ããããããæŽæ°ãããªã¬ãŒã«ãªã£ãŠæ©èœããããããªãã±ãŒã¹ãããããã§ãã
ãããããRailsã®ããŒãžã§ã³ã¢ãããé£ããããšã倧ããªèª²é¡ã§ãããããŒãžã§ã³2ããããŒãžã§ã³3ãžã®ã¡ãžã£ãŒã¢ããããŒããäžçªãã€ããŠã確ã3ïœ4人ã§1幎ãããããããŸããã3ãã4ã¯ããå°ããã·ã§ããããããã§ã1人ãå°ä»»ã§å幎ã¯ããã£ãŠããŸãããã
å·å³¶ïŒããã¯å€§å€ã âŠâŠã
倿ãRailsãåŸæ¹äºææ§ã®ãªãæ©èœæŽæ°ãè¡ã£ãããšãåå ã§åããªããªãã±ãŒã¹ããããŸãããã¢ããããŒãã«èµ·å ãããšããžã±ãŒã¹ã®ãã°ãèžãã§ããŸãã±ãŒã¹ããããŸããããã«ãRailsã®ã¢ããããŒãã«è¿œåŸããŠããªãå€ãgemãå£ããããgemã«ã¢ã³ããŒããããåœãŠãŠéçšããŠãããã®ã䜿ããªããªã£ããã
ããã»ã©å€§ããªRailsã¢ããªã±ãŒã·ã§ã³ã ãšãããŒãžã§ã³ã¢ããã«äŒŽã£ãŠæ°ãåããªãã»ã©ã®åé¡ãçºçããŸããäœæ¥ã¯äžççžã§ã¯ãããŸãããããããäžããã£ãé ã«ã¯ããŸã次ã®ããŒãžã§ã³ãåºãŠããããšããããè¿ãã§ããã
å·å³¶ïŒãã®ç¶æ ã§ã¯ãæ°žé ã«ããŒãžã§ã³ã¢ããã®äœæ¥ãç¶ãããã§ããã
éæšããããã課é¡ã解決ããããã«ããå°å Žãããžã§ã¯ããã¯ã¹ã¿ãŒãããŸããããŸããã£ãã®ã¯ãæ¹åãããããšããªã¹ãã¢ããããå ŽæããšããŠGitHubã«ãªããžããªãäœãããšã§ããããã®æŽ»åãå°ããã€å®ãçµãã§ããããã€ã¯ããµãŒãã¹åã«çµã³ã€ããŠãããŸãã
倿ãã€ãŸããããšããšãã®ãããžã§ã¯ãã¯ãã€ã¯ããµãŒãã¹åãäž»çŒã«ãããããžã§ã¯ãã§ã¯ãªãã£ããã§ãããããŸã§å·šå€§ãªã¢ããªã·ãã¯ãµãŒãã¹ãéçºã»éçšããèŸãã軜æžããããã®ãããžã§ã¯ãã§ããã®ææ³ã®ã²ãšã€ãšããŠãã€ã¯ããµãŒãã¹åãæå¹ã ãšããã£ãããšããæµãã§ããã
ããã€ã¯ããµãŒãã¹åæŠç¥ããŸãã¯ã³ãŒããæžããããšãã
å·å³¶ïŒã©ã®ãããªéšåããããå°å Žãããžã§ã¯ãããé²ããŸãããïŒ
éæšããŸããèŸãã®æ ¹æ¬åå ãæç¢ºã«ããããã«ã瀟å ã®ããŸããŸãªãšã³ãžãã¢ã«è©±ãèããŸãããå šå¡ãèšã£ãŠããã®ããã³ãŒãéãå€ããããšããããšã§ãã
倿ãããã§ããŸãã¯ãããã«ããŠã³ãŒãéãå°ãªããããããäž»çŒã«çœ®ããŠåããŸããããããªãæ©èœã䜿ãããŠããªãæ©èœãæ¢ããŠãæ¶ããŠãã£ããã§ãã
éæšããã€ã¯ããµãŒãã¹åãè¡ãéã«ã¯ããæ©èœãã©ãåå²ããããäœããçæãã¹ãããã®è°è«ãå¿ ãèµ·ãããŸããã瀟å 調æŽã«ãèŠåŽããŸããäžæ¹ã§ã䜿ãããŠããªãæ©èœã®å»æ¢ã¯ã¡ãªãããããªãã®ã§ãå察æèŠãæãããŸãããã€ãŸããâãããžã§ã¯ãã®ç¬¬äžæ©âã«åããäœæ¥ãªãã§ãã
å·å³¶ïŒãšã¯ããã䜿ãããŠããªãã³ãŒããæ¢ãã®ã倧å€ãªäœæ¥ã§ãããã䜿ãããŠããã³ãŒããééã£ãŠæ¶ããŠããããªãã§ãããã©ã®ããã«ããŠãäœæ¥ãé²ããŠãããŸãããïŒ
éæšãæ¬çªç°å¢ã§äœ¿ãããŠããªãã³ãŒãããããŒã«ã§èªåå€å®ã§ããã°äœæ¥ã楜ã«ãªããŸããããã§ãããå°å Žãããžã§ã¯ããã®ã¡ã³ããŒãšã¯ãã¯ãããã®ãã«ã¿ã€ã Rubyã³ããã¿ãŒã§ãã笹ç°èäžãããé è€äŸä»ããã§è©±ãåããã©ãããæ©èœããããšã³ãŒãåé€ã«äŸ¿å©ããäžç·ã«èããŠãããŸãããããã€ãã®æ©èœã詊ããæçµçã«ã§ããã®ããoneshot coverage{$annotation_1}ããšããRubyã®æ°æ©èœã§ãã
ãã®æ©èœããªã³ã«ããŠäžå®æé枬å®ããããšã§ãã³ãŒããå®è¡ãããç®æã®ã«ãã¬ããžãåãããšãã§ããŸãããŸããäžåºŠç¹å®ã®ç®æãéã£ããäºåç®ã¯èšæž¬ãããªããªããããåŠçæ§èœãã»ãšãã©å£åããŸããã
å·å³¶ïŒRubyãçšããŠãµãŒãã¹éçºããŠããäŒæ¥ã«ãšã£ãŠããã®ããŒã«ã¯æ±çšçã«å°å ¥ã§ãããã§ããã
ããã€ã¯ããµãŒãã¹åæŠç¥ãã¢ããªåºæã®ãããããŠããŠãæžãã
å·å³¶ïŒä»ã«ã¯ã©ã®ãããªããšã宿œããŸãããïŒ
éæšãã³ãŒãåé€ãšã»ãŒåãã¿ã€ãã³ã°ã§å®æœããã®ããã¢ããªã±ãŒã·ã§ã³æ§é ã®æŽçã§ããcookpad_allã¯ãã€ãŠããåäœã¢ãŒãããšåŒã°ããããªãããŒãªå®è£ ããããŠãããã§ãããã®ãåäœã¢ãŒããããªããããšã«åãçµã¿ãŸããã
å·å³¶ïŒãåäœã¢ãŒãããšã¯äœã§ããïŒ
éæšãã²ãšã€ã®Railsã¢ããªã±ãŒã·ã§ã³ããåäœããŠãããã¹ãåã«å¿ããŠWebã¢ããªã±ãŒã·ã§ã³ã«ãªã£ãããAPIãµãŒããŒã«ãªã£ãããããšããå€ãã£ãä»çµã¿ã§ããã²ãšã€ã®ã¢ããªã®äžã«Webã¢ããªãšAPIãµãŒããŒã®èšå®ãæ··åšããŠããã®ã§ãã©ã®èšå®ãã©ã¡ãã®ãã®ãã調ã¹ãã®ã«ãäžèŠåŽã§ããã
éæšãããŒã«ã«ç°å¢ã§ã¢ããªãåããã®ã倧å€ã§ããããã¹ãåãèŠãŠã¢ãŒããåãæ¿ãããã§ãããããŒã«ã«ç°å¢ã®ãã¹ãåã¯åºæ¬çã«localhostãããªãã§ãããã ãããlocalhostã«å¥ã®ååãä»ããªããã°ãã¢ãŒããåãæ¿ããããªããšããç¬èªã®ããŠããŠããããŸããŠã
å·å³¶ïŒç¬èªä»æ§ã詳ããç¥ããªããšãéçºãããããã§ããªãã§ããã
éæšãã¯ãããã®ç¶æ ã¯ãªããªãèŸãã®ã§ãæ§é ããã£ãããããããšã«ããŸããã
å·å³¶ïŒã©ã®ããã«ããŠåå²ããŠãã£ãã®ã§ããïŒ
éæšããåäœã¢ãŒããã®åé€ã«ããã£ãŠã¯ãã¢ããªã±ãŒã·ã§ã³æ¬äœã®ã³ãŒããæ©èœåäœã§ãã£ã¬ã¯ããªåå²ãããŠããããšã幞ãããŸãããåœåãå ã«åé¢ãè¡ãããšãã§ããããã§ããAPIãµãŒããŒã¯ç¬ç«ããã¢ããªã±ãŒã·ã§ã³ã«ããŠãããã«å€ãAPIãµãŒããŒã®ã³ãŒãåé€ãåãããŠå®æœããããšã§ãã¢ããªã±ãŒã·ã§ã³æ§é ããã£ãããããããšã«æåããŸããã
倿ãcookpad_allã¯10幎以äžãéçšãããŠãããããæŽå²ãããããããç¬èªã®éçšããŠããŠãèç©ãããŠãããã§ãããã®èŸããæ¹åããããšãããã®ãã§ãŒãºã§ã¯éèŠèŠãããŠããŸããã
éæšããã§ããã ãæ®éã®Railsã¢ããªã±ãŒã·ã§ã³ã«ãããããšãããã£ãããã¬ãŒãºã§ããããžã§ã¯ããé²ããŠããŸãããã
ããã€ã¯ããµãŒãã¹åæŠç¥ããŸãã¯åé¢ããããéšåããã詊ãã§
éæšãæ¬¡ãã§ãŒãºãšããŠãcookpad_allããã¹ããã¢ããªã®A/Bãã¹ããªã©ã«äœ¿ãããŠããæ©èœãåé¢ããŸããããã®æç¹ã§ã¯ããã€ã¯ããµãŒãã¹åãè¡ããã©ããã¯æ±ºããããŠããããããŸãã¯è©Šéšçã«ãç§ãåœææå±ããŠããããŒã ã®æã£ãŠããã·ã¹ãã ãåé¢ããæ¹éããšã£ããã§ãã
å·å³¶ïŒæåã«åé¢ããæ©èœã®åè£ã¯ãããããã£ããšæããŸããããã®æ©èœãéžãã çç±ã¯äœã§ããïŒ
éæšãããã€ãçç±ããããŸãããã²ãšã€ã¯ããã®æ©èœã¯ããŒã¿ã«ã®ã³ãŒãè¡æ°ã1000è¡ããªããããå°ããªAPIã§ãã£ãããšã§ããäŸåã©ã€ãã©ãªã®çš®é¡ãå°ãªããAPIã®æ°ã2ïœ3åãããã§ããããããå©çšããŠããããŒã¿ããŒã¹ã¯Redis1åã ãã§ããã®Redisã¯ä»ãµãŒãã¹ããã¯äœ¿ãããŸãããAPIã®ç¬ç«æ§ãé«ãcookpad_allãšã®éä¿¡ããããŸããã§ããã
å·å³¶ïŒããŸããªé¢ã§ãåé¢ããã«ã¯éœåã®ãããã®ã ã£ãããã§ããã
éæšããã®æ©èœã®åé¢ãããŸããã£ãããšã§ããµãŒãã¹åå²ïŒïŒãã€ã¯ããµãŒãã¹åïŒãå®çŸã§ããããªããšããåé¢ã«æåããã°ã¢ããªã±ãŒã·ã§ã³ã®å€§å¹ ãªæ©èœå€æŽã容æã«ãªãããšã®éçãç«ã¡ãŸããã
éæšãäœè«ã§ãããå®ã¯ã¯ãã¯ãããã¯3ïœ4幎ã»ã©åããã€ã¯ããµãŒãã¹åã«å€±æããŠãããã§ããæ£ç¢ºã«ã¯ã課éãåºåé ä¿¡ãªã©ã®ã·ã¹ãã ã¯ç¶ºéºã«åé¢ã§ãããã§ããããã以å€ã®ã·ã¹ãã ã«ãããŠè¯ããªããµãŒãã¹åå²ãããŠããŸããŸããã
åé¢ããããã©ããŸããããå ã«æ»ããããåé¢ããããšã§ããã£ãŠéçºã»éçšã®æéãå¢ããäºæ ãå€çºããŸãããããå°å Žãããžã§ã¯ããã®åæãã§ãŒãºã§ãã€ã¯ããµãŒãã¹åãäž»çŒãšããŠæã¡åºããªãã£ãã®ã¯ããã®ãšãã®çµéšããããã€ã¯ããµãŒãã¹ã¯è¯ããªãã®ã§ã¯ããšããé°å²æ°ã瀟å ã«ãã£ãããã§ãã
å·å³¶ïŒãªããåœæã¯ãã€ã¯ããµãŒãã¹åã«å€±æããŠããŸã£ãã®ã ãšæããŸããïŒ
éæšããã£ãšã飿ºã®å€ãéšåãåãããšããããã§ãããããåå²ãè¡ãåã«ãã©ã®éšåãåå²ãã¹ãããããŸãåæãã¹ãã ã£ããã§ãããããããã¯ãã€ã¯ããµãŒãã¹ãäž»æµã ãã©ãã©ãåå²ãããããšé²ããŠããŸã£ãã®ããããªãã£ãã
ãã€ã¯ããµãŒãã¹åã«çæããå Žåãæåã¯ãŸãåé¢ããããéšåããæãã€ããã®ãè¯ããšæããŸãã
ããã€ã¯ããµãŒãã¹åæŠç¥ãããŒã¿ããŒã¹ãåããŠããã°ãµãŒãã¹ãåãããã
å·å³¶ïŒä»ã«ã¯äœãè¡ããŸãããïŒ
éæšãåé¢ããA/Bãã¹ãã®ã·ã¹ãã ãããªãäžæããã£ãã®ãããèãããšããããããŒã¿ããŒã¹ãåããŠããããšã倧ããããšããçµè«ã«èœã¡çããŸããã
ããã§ããããŒã¿ããŒã¹ã®åãæ¹ã«æ²¿ã£ãŠã³ãŒããåãåºãã°ããµãŒãã¹åå²ãäžæãããã®ã§ã¯ãªããããšããæ¹éã®ããšãçŸåšããã€ã¯ããµãŒãã¹åãé²ããŠããŸããå šææ€çŽ¢ã·ã¹ãã ã®Solrãäžå¿ã«åé¢ããã¬ã·ãæ€çŽ¢ããå°çšAuroraãããŒã¹ã«åé¢ããæçãããæ©èœãªã©ãããã®æ¹éã§åé¢ãè¡ã£ãã·ã¹ãã ã«ããããŸãã
éæšããã ããã¬ã·ãæ€çŽ¢ã«ã€ããŠã¯ãŸã 課é¡ãæ®ã£ãŠããŸããSunspotãšããRubyã©ã€ãã©ãªãSolrã«ããå šææ€çŽ¢ããµããŒãããŠãããŠããã®ã§ããããã®ã©ã€ãã©ãªã¯ã¢ãã«ãšå¯çµåã®ä»çµã¿ã§ãããããå®å šã«ã¯æ©èœãåé¢ããããªãã£ããã§ãã
å·å³¶ïŒRailsã䜿ã£ãŠããŠããã€Sunspotãåãå ¥ããŠããäŒæ¥ã¯ããã€ã¯ããµãŒãã¹åãè¡ãéã«ã¯æ³šæãããã§ããã
éæšããããªãã§ãããããŠããããããããããã€ã¯ããµãŒãã¹åã®ãã£ãšãé£ãããã§ãŒãºã«å ¥ã£ãŠããŸããcookpad_allã®ã³ã¢ã®éšåã¯åé¢ã倧å€ã ãšããã£ãŠããã®ã§ããŸãã¯åšèŸºéšåãåé¢ããŠãå°ãã§ãåãçµã¿ãããç¶æ³ã«ããŠããæã¿ããã§ãã
ããã€ã¯ããµãŒãã¹åæŠç¥ãã€ã³ãã©æ§æãæšæºåãã
å·å³¶ïŒãã€ã¯ããµãŒãã¹åã«ããããæ°ããåãå ¥ããæè¡ã¹ã¿ãã¯ã¯ãããŸããïŒ
éæšãã³ã³ããæè¡ã§ãããã¯ãã¯ãããã§ã¯ã³ã³ãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ã®ããã«ãAWSã®ECSããŒã¹ã§æ§ç¯ãããHako{$annotation_2}ãšããããŒã«ã䜿ã£ãŠããŸãã
倿ãçŸåšãå šç€Ÿçã«cookpad_all以å€ã®å šãŠã®ã¢ããªã¯Hakoãå©çšãã圢ã§Dockerç°å¢ã«ä¹ã£ãŠããŸããã¢ããªã±ãŒã·ã§ã³ã«é¢é£ããã·ã¹ãã ãã¡ããªã¯ã¹çã®æ å ±ãé²èЧã§ããhako-consoleãHakoãçšãããªãã©ã€ã³ãžã§ãå®è¡ã®ä»çµã¿ãªã©ãDockerç°å¢ã§äŸ¿å©ã«äœ¿ããããŒã«é¡ã瀟å ã®å ±éåºç€ããŒã ãéçºããŠããã®ã§ãããããå©çšå¯èœã«ããããã«Dockerç§»è¡ãè¡ãããŠããããã§ãããããŠãHakoãå©çšããããšã¯ããã€ã¯ããµãŒãã¹åã«ãããŠãããããã®å©ç¹ããããŸããã
å·å³¶ïŒäŸãã°ãã©ã®ãããªïŒ
éæšãHakoãçšããŠã€ã³ãã©æ§æãæšæºåã»èªååããããšã§ãåããŒã ã®éçºè ãç°å¢æ§ç¯ãå«ããŠèªåãã¡ã§å¶åŸ¡ã§ããç¶æ ã«ãªããŸããããã«ãããã€ã³ãã©åºç€ãèŠãŠããããŒã ããåããŒã ã®éçºè ãžãšãã€ã³ãã©ã®æ±ºå®æš©ãã®ãã®ãæž¡ãããããªããŸãã
倿ãããã«ãå ±éåºç€ã«ä¹ãããšã§ãã€ã³ãã©æ§ç¯ããããã€ãç£èŠãªã©ã®æ¹æ³ãå šç€Ÿçã«æšæºåãããŸããåããŒã å ã§ãéçºããéçšãŸã§ã®äœæ¥ãããå®çµãããããªãããã§ããçŸåšãcookpad_allãåæ§ã«HakoåããŠãããDockeräžã§åããããã®åãçµã¿ãç¶ããŠããŸãã
ããã€ã¯ããµãŒãã¹åæŠç¥ããµãŒãã¹ã¡ãã·ã¥ãå ¥ããŠéä¿¡ã®èª²é¡ãã¯ãªã¢ãã
éæšãä»ã«å°å ¥ããæè¡ã¹ã¿ãã¯ãšããŠã¯ããµãŒãã¹ã¡ãã·ã¥ããããŸããã¯ãã¯ãããã§ã¯ããµãŒãã¹ã¡ãã·ã¥ã®data-planeãšããŠEnvoyã䜿çšããŠãããcontrol-planeã¯èªäœããŠããŸãã
ããããcookpad_allããã€ã¯ããµãŒãã¹åããããã«å°å ¥ãããšãããããå šç€Ÿçã«å ±éã§äœ¿ãããµãŒãã¹ã¡ãã·ã¥åºç€ãå¥ã®ããŒã ãäœã£ãŠããã®ã§ãããã«cookpad_allãä¹ã£ãã£ããšããããã€ã¯ããµãŒãã¹ã«ãé©ããŠãããšããæãã§ããã
ãµãŒãã¹ã¡ãã·ã¥ã®å°å ¥ã«ãã£ãŠå šéä¿¡ããããã·ãçµç±ãããããèªåãªãã©ã€ããšã©ãŒã®æ€ç¥ãéä¿¡ç¶æ³ã®å¯èŠåãªã©ã容æã«ãªããŸããããã€ã¯ããµãŒãã¹ã§ã¯ãµãŒãã¹éã®éä¿¡ã倧éã«çºçããã®ã§ããµãŒããããã¬ã€ã«ãŒããªãã©ã€ãªã©ã®ä»çµã¿ãå ¥ããŠããããšãå¿ èŠã§ããEnvoyã®å°å ¥ã«ãã£ãŠããããã®åææ¡ä»¶ãã¯ãªã¢ã§ããŸããã
倿ããã€ã¯ããµãŒãã¹éã®éä¿¡ã«ãããŠå¿ èŠãªæ©èœãäžéãæã£ãŠããã®ã¯ãEnvoyã®åªããŠãããšããã§ããã
éæšããŸãããã®ä»ã«ãAPIãªãŒã±ã¹ãã¬ãŒã·ã§ã³å±€ãšããŠOrchaãšããã·ã¹ãã ãéçºããŸããããã®ããŒã«ããªããŒã¹ãããã·ãšAPIãµãŒããŒã®éã«å ¥ãããã§ãããŠãæ¢åAPIã®ã³ãŒããããããã«APIã®ã¬ã¹ãã³ã¹ãå€ããããšãå¯èœã«ãªããŸãããããã«ãã£ãŠããã€ã¯ããµãŒãã¹éã®éä¿¡ã®æè»æ§ã倧ãããªã£ãŠããŸãã
ãã€ã¯ããµãŒãã¹åã¯ãã·ã¹ãã æ¹åã§ããçµç¹æ¹åã§ããã
å·å³¶ïŒä»åã®ã話ãããã¯ãã¯ãããããã¯éåžžã«ãªãŒãœããã¯ã¹ãªææ³ã§ãç¡çã®ãªãç¯å²ãããã€ã¯ããµãŒãã¹åãã¹ã¿ãŒãããŠããå°è±¡ãåããŸããããã€ãŠãã3ïœ4幎åã«å€±æããããšãã£ããã£ãŠããŸãããããã®çµéšãèžãŸããŠãé©åãªææ³ã«ãã©ãçããŠããã®ã ãšæããŸãã
éæšããããªãé£ãããšããã«åãçµãã§ããããŸããããªãã§ããããã
å·å³¶ïŒãã®äºäŸã§ã¯ããŸãåšèŸºéšåããåãé¢ããã¢ããªã¹ã®æ¬åœã®å§¿ãèŠããããã«ããã®ãçŽ æŽããããšæããŸãããå€ãã®äŒæ¥ã¯ããã®äºåæºåãã§ããŠããªãã§ããè€æ°ã®ã·ã¹ãã ãæ··åšããŠããç¶æ ã§ããšãæ¬åœã®æå³ã§ã®ããžãã¹èŠæš¡ãèŠãã«ããã§ãããé©åãªåå²ã®åœ¢ãèŠãã«ããã
ãã€ã¯ããµãŒãã¹åããããšèããäŒæ¥ã£ãŠãåã£ç«¯ããæ¬äœã®ã·ã¹ãã ããããã°ã©ã¹ãã¹ãåãã«ãããã¡ãªãã§ããã©ã¹ãã¹ã«è² ããŠããŸã£ãŠãé æ«ããã±ãŒã¹ãå€ãã
倿ãã¹ã©ã€ã ãåããŠã¬ãã«ãäžãããšãããããç¥èŠãç©ãŸãªããã°ãããªãã§ããïŒç¬ïŒã
å·å³¶ïŒãã®éãã§ãïŒç¬ïŒãã§ã¯æåŸã«ãå€§èŠæš¡ãªãµãŒãã¹ãæã€äŒæ¥ãããã€ã¯ããµãŒãã¹åã«åãçµãæçŸ©ãã«ã€ããŠèªã£ãŠããã ããã°ã
éæšã倧ããåããŠ3ã€ã®æçŸ©ããããšæããŸãã1ã€ç®ã¯é«éã§å€§èãªéçºã¹ã¿ã€ã«ãåãæ»ãããšãåé ã§è¿°ã¹ãããã«ã倧ããªæ©èœã®è¿œå ã»å€æŽãã§ããªãç¶æ ã§ã¯ããµãŒãã¹éçºã«ãå¶çŽãããããŸããããžãã¹ã§æ¬æ¥éæãã¹ãç®æšããå®çŸãã«ãããªãããã§ãããã®ç¶æ³ãæ¹åããããšã§ããã©ã¹ãã£ãã¯ãªæ©èœã®è¿œå ã»å€æŽãå¯èœã«ãªããŸãã
2ã€ç®ã¯çµç¹ãã¹ã±ãŒã«ã¢ãŠãå¯èœã«ããããšã巚倧ãªã¢ããªã·ãã¯ãµãŒãã¹ã®å Žåãã³ãŒãä¿®æ£ã®ã³ã³ããªã¯ããå±±ã»ã©çºçãããããçµç¹ã®ãµã€ãºãã®ãã®ãå¶éãããŠããŸããŸãããã€ã¯ããµãŒãã¹åã«ãã£ãŠã忣éçºãå¯èœã«ããããšã«ã¯å€§ããªæçŸ©ããããŸãã
ããã¯ç§èŠã§ãããã¢ããªã·ãã¯ãªã¢ããªã±ãŒã·ã§ã³ã§åé¡ãªãéçºã§ããã®ã¯ããšã³ãžãã¢ã®äººæ°100人ããããäžéã ãšæããŸãããã以äžã«çµç¹ã倧ãããªããªãããã€ã¯ããµãŒãã¹ã®æ¹ã確å®ã«ã¹ã±ãŒã«ãããããªããŸãããã€ã¯ããµãŒãã¹åã¯ãã·ã¹ãã æ¹åã§ãããšåæã«çµç¹æ¹åã§ãããããã§ãã
3ã€ç®ã¯ããŒã¿ãšæ©èœã®åå©çšã§ããã¯ãã¯ãããã«ã¯çŽ300äžåã®ç»é²ãŠãŒã¶ãŒããŸãããããã®ããŒã¿ã¯å€§ããªè³ç£ã§ããããããã³ã¢ã®éšåãã¢ããªã·ãã¯ãªç¶æ ã«ãªã£ãŠãããšããŒã¿ã®å掻çšã¯å®¹æã§ã¯ãããŸãããæ°èŠãµãŒãã¹ãç«ã¡äžããŠãããŒã¿ã«ã¢ã¯ã»ã¹ããããšã¯é£ããããã§ããçµå±ãæ¬äœã«ã³ãŒãã远å ãã以å€ã«ã¯æ¹æ³ããªããªã£ãŠããŸããŸãã
ãµãŒãã¹ã圹å²ããšã«åãåããŠåå©çšå¯èœã«ããããšã§ãããŒã¿ãšæ©èœã®åå©çšæ§ãé«ãŸããŸãããµãŒãã¹ã®å ±éåºç€ãæ§ç¯ã§ããäŒç€Ÿå šäœãšããŠåŒ·ãã·ã¹ãã ãäœããããã§ãããããããã€ã¯ããµãŒãã¹åã®å©ç¹ã ãšèããŠããŸãã
åæã»å·çïŒäžèæŽïŒåçïŒå²©åŽåä¹
*1:oneshot coverageã®è©³çްã«ã€ããŠã¯ãé è€ããããã¯ãã¯ãããéçºè ããã°ãã«ãŠãRuby 2.6 æ°æ©èœïŒæ¬çªç°å¢ã§ã®å©çšãç®æããã³ãŒãã«ãã¬ããžèšæž¬æ©èœããšããèšäºã§è§£èª¬ããŠããã
*2:ECSã®ãããã€ã«ã¯ãELBãšã³ã³ããã®çŽä»ãèšå®ãç°å¢å€æ°ã®æ³šå ¥ãªã©ããŸããŸãªäœæ¥ãå¿ èŠãšãªããããããè«žäœæ¥ãäºåã«èšå®ããããšã§ããããã€ãå¹çåã§ããããŒã«ãHakoã ããããã€æã®ELBäœæãRoute53ã«ãããã¡ã€ã³èšå®ãªã©ãéåžžã§ããã°ã€ã³ãã©ãšã³ãžãã¢ãèšå®ãããããªäœæ¥ãŸã§èªååã§ããã




