æ¦è¦
åç½®ã
ãã®è¨äºã¯Rails Advent Calendar 2020ã®15æ¥ç®ã®è¨äºã§ããæ¨æ¥ã¯negito6ããã®å¿ãã人ã®ããã® Rails ãããã°æ¹æ³ã¾ã¨ãã§ããã
åæ©
ããªããããã®Railsã主æ¦å ´ã¨ãã¦ããèªåãä»å¾å¦ã¶ã¹ãæè¡ã«ã¤ãã¦(éç)ã¨ããè¨äºã¨ãããã«å¯¾ããmizchiããã®ã¢ã³ãµã¼ããã°ãRe: Rails ã主æ¦å ´ã¨ãã¦ããèªåãä»å¾å¦ã¶ã¹ãæè¡ã«ã¤ãã¦ã«è§¦çºããã¦æ¸ãã¦ãã¾ãã
ãæã
ãã®è¨äºã§ã¯Railsã®æè¡çãªå´é¢ãæå³çã«éè¦ãã¦ãã¾ãããã¨ããã®ã¯ãç§ãRails以å¤ã®æè¡ã«ã¤ãã¦ããã¾ã§è©³ãããªãããæ¯è¼ããã®ãå°é£ã ããã§ãã
ã¾ãããµãã£ã¨ãã話é¡ãæ±ãã¨ãããã¨ããããã©ããã¦ãæ¸ãæ¹ãæ¨æ¸¬å¤ãã«ãªã£ã¦ãã¾ã£ã¦ãã¾ããããã¯ç§ã®ç¥è¦ã¨çµé¨ã®å°ãªãã«ãããã®ã§ãã
æ¬ç·¨
ã¢ããªã±ã¼ã·ã§ã³éçºã®ãããªãã¯ã¹
ãããªãã§ãããã¢ããªã±ã¼ã·ã§ã³ãéçºããã¨ãã«ããã¼ã ã®ãµã¤ãºæã¨å°æ¥çãªã¹ã±ã¼ã«æã¨ãããããæ¨ªè»¸ã¨ç¸¦è»¸ã«ããã¨ä»¥ä¸ã®ãããªãããªãã¯ã¹ãæãããã¨æãã¾ãï¼ããã¹ã失礼ï¼ä½è«ãªãããWebã§ããæãã«ãããªãã¯ã¹ã¿ãããªå³ãæãããã¼ã«ãã£ããæãã¦ãã ããï¼ã
ãã¼ã ãµã¤ãº | å°æ¥çãªã¹ã±ã¼ã«æ |
---|---|
ã¹ã¢ã¼ã«ãã¼ã | ã¹ã±ã¼ã«ããªã |
ããã°ãã¼ã | ã¹ã±ã¼ã«ããªã |
ã¹ã¢ã¼ã«ãã¼ã | ã¹ã±ã¼ã«ãããã |
ããã°ãã¼ã | ã¹ã±ã¼ã«ãããã |
ãã®ãã¡ããããã°ãã¼ã ã»ã¹ã±ã¼ã«ããªããã¨ããã¢ããªã±ã¼ã·ã§ã³éçºã¯ä¾ãä»ã¨æ¯è¼ãã¦æ¥µç«¯ã«å°ãªãããï¼ã¹ã±ã¼ã«ããªããªãããã°ãã¼ã ãæ¯ããããªãå¯è½æ§ãé«ãï¼ãªã®ã§ãå®éã«èããã¹ãã¯ãããé¤ãã3ã¤ã«ãªãã¾ãã
Railsã¯ã¹ã¢ã¼ã«ãã¼ã ã§ã¹ã±ã¼ã«ããªãã¢ããªã±ã¼ã·ã§ã³ãéçºããã®ã«æé©
ä¸è¨ã®ãããªãã¯ã¹ã®ãã¡ãRailsãæãåãçºæ®ããã®ã¯ãã¹ã¢ã¼ã«ãã¼ã ã»ã¹ã±ã¼ã«ããªããã®ã±ã¼ã¹ã§ããããã¯Rubyãåçåä»ãè¨èªã§ããã¨ãããã¨ã¨ãRailsã®ããããã®è¨è¨ææ³ã«ããã¨ãããç§ã®èãã§ãã
Rubyãåçåä»ãè¨èªã§ããã¨ãããã¨ã¯ãRubyã§ã®éçºã¯ãã¼ã è¦æ¨¡ã大ãããªãã»ã©çç£æ§ãï¼ãã®ä»ã®è¨èªã¨æ¯è¼ãã¦ï¼æ¥æ¿ã«ä½ä¸ãããããã¨ã示åãã¦ãã¾ããããã«ãããRailsã¯ã¹ã¢ã¼ã«ãã¼ã ã«æé©åããã¦ããã¨èãããã¾ãï¼ç°è«ã¯ããã¨æãã¾ãï¼ã
Railsã®è¨è¨ææ³ã«ã¤ãã¦ã¯ãããã¡ããã®Ruby on Railsã®æ£ä½ã¨åãåãæ¹ã«è©³ããã®ã§ãããè¦ããã«ãå°äººæ°ãã¼ã ã«ããéãã¦ãã¬ã¤ãªéçºãå®ç¾ããããã«ã³ã³ãã¼ãã³ããå¯çµåããã¦ãããã¨ãã話ã§ããããRailsã§ã¯ã¹ã±ã¼ã«ãå°é£ã¨ããäºå®ã«ã¤ãªãã£ã¦ãã¾ãããã¡ãããRubyè¨èªèªä½ã®ã¹ã±ã¼ã©ããªãã£ãä½ãã¨ãããã¨ãå ´åã«ãã£ã¦ã¯æå³ãæã¤ã§ãããã
ãã¼ã è¦æ¨¡ã®æ¡å¤§ã¨ã¹ã±ã¼ã«ãåæã¨ããã¢ããªã±ã¼ã·ã§ã³ãRailsã§ä½ãã®ã¯çã«ããªã£ã¦ããã¨ã¯è¨ããªã
ã¨ãããã¨ã¯ããªãã«ããã¹ã±ã¼ã«åæã®ã¢ããªã±ã¼ã·ã§ã³ã§ããã°ããããRailsã§æ§ç¯ããã®ã¯æé©ã§ã¯ãªãã®ããããã¾ãããå°ãªãã¨ããä½ããã®å·¥å¤«ãªãã«Railsã¢ããªã±ã¼ã·ã§ã³ãã¹ã±ã¼ã«ãã¦ããã¨è¾ããªã£ã¦ãããã¨ããäºä¾ã¯è¤æ°ããããã§ããã¾ãããã¼ã è¦æ¨¡ã大ãããªããã¨ã§Railsã§ã®éçºãæåã§ã¯ãªããªã£ã¦ããã±ã¼ã¹ãããã§ãããã
ä½ãããä¸ã®ä¸ã«ã¯Rails以å¤ã®é¸æè¢ãè±å¯ã«ããã¾ããéçåä»ããã¹ã±ã¼ã©ããªãã£ãæ±ããã®ã§ããã°ããããæ¡ç¨ãããã¨ãæé©ã§ããå ´åãå¤ãã¨èãããã¾ãï¼ç¾ç¶ã®ãã¼ã ãæã¤æè¡çãªå¼·ã¿ãªã©ä»ã®èæ ®ç¹ãããã®ã§å¸¸ã«ã¨ã¯è¨ããªãï¼ã
ã¹ã±ã¼ã©ããªãã£ãä¸è¦ãªã¢ããªã±ã¼ã·ã§ã³ãã¹ã¢ã¼ã«ãã¼ã ã§éçºããããã®ãã¬ã¼ã ã¯ã¼ã¯ãRails
Railsã®ãªãªã¸ãã«ã¢ããªã±ã¼ã·ã§ã³ã¯Basecampã§ããããã®ã¢ããªã±ã¼ã·ã§ã³ãéçºãã¦ããBasecamp社ã¯åµæ¥å½åããç¤¾å¡æ°ãå¢ãããªããã¨ãå¾¹åºãã¦ãããããããã¼ã ãã¼ã¸ã«ããã°ã嵿¥ãã21å¹´çµã£ãä»ã§ã60人ã»ã©ããããªãããã§ãã
ã¾ããBasecampã¨ããã¢ããªã±ã¼ã·ã§ã³ã¯ããªã¼ãã¢ã ã¢ãã«ãé©ç¨ãã¦ããããä¾¡æ ¼ãã¼ã¸ã«ããã¨ç¾å¨ã¯æ99ãã«ã®åºå®ä¾¡æ ¼ã®ããã§ããããã¯Basecampãå¤§è¦æ¨¡ã«ã¹ã±ã¼ã«ããªãã¦ããã¸ãã¹ã¨ãã¦ã¯æç«ããã¨ãããã¨ãæå³ãã¦ãã¾ãã
ãã®ããã«ãRailsã®éçºãæãå¼·ãæ¨é²ãã¦ããBasecamp社ã®ç¾ç¶ãèããã¨ãRailsããã¹ã±ã¼ã«ãä¸è¦ãªã¢ããªã±ã¼ã·ã§ã³ãã¹ã¢ã¼ã«ãã¼ã ã§éçºããããã¨ã«ç¹åãã¦ããã¨ãã¦ããã»ã©ä¸æè°ã§ã¯ãªãã§ãããã
è峿·±ã話ã¨ãã¦ãBasecamp社ã¯èªç¤¾ã®ã¹ãã¼ããã©ã³ã¢ããªãWebæè¡ä¸å¿ã§éçºãããã®ããã«èªç¤¾éçºã®ã©ã¤ãã©ãªã§ããTurbolinksãæ´»ç¨ãã¦ããããæ°åã®ãã¼ã ã§iOSã¨Androidåãã®ã¹ãã¼ããã©ã³ã¢ããªãéçºã§ããã¨ãããã¨ã§ãï¼ãªã³ã¯ãæ¢ããã®ã§ããè¦ã¤ããã¾ããã§ããâ¦ï¼ããã®ããã«ãBasecamp社ã®ã¢ããã¼ãã¯å°ãªãã¨ãå½¼ãã®ç°å¢ã§ã¯æ©è½ãã¦ããããã§ãã
ã¾ãéè¦ãªç¹ã¨ãã¦ãRailsã¯ãã®ãã¹ã±ã¼ã©ããªãã£ãä¸è¦ãªã¢ããªã±ã¼ã·ã§ã³ãã¹ã¢ã¼ã«ãã¼ã ã§éçºããããã®ãã¬ã¼ã ã¯ã¼ã¯ãã¨ãã¦ã¯æãæçãããã¬ã¼ã ã¯ã¼ã¯ã§ããè¿å¹´ã§ã¯Laravelã¨ã®å·®ãæ¥æ¿ã«ç¸®ã¾ã£ã¦ãããã¾ãã¯ãã§ã«è¿½ãæããã¦ããã¨ã®è¨èª¬ãããããã§ããããã®æèã«ããã¦ããRailsã®æç度ã¨å©ä¾¿æ§ã¯å¦å®ããã¾ããã
Railsãå¼·ã¿ãçºæ®ã§ããã±ã¼ã¹ã¯ã©ããããããã®ã
ãã®ãã¹ã±ã¼ã©ããªãã£ãä¸è¦ãªã¢ããªã±ã¼ã·ã§ã³ãã¹ã¢ã¼ã«ãã¼ã ã§éçºãããã¨ããã·ãã¥ã¨ã¼ã·ã§ã³ã§ãããWebã¢ããªã±ã¼ã·ã§ã³éçºã®å ¨ä½ã«å ããå²åã¯ã©ã®ããã大ããã®ã§ãããããæå¤ã¨å¤§ããã®ã§ã¯ãã¨ããã®ãç§ã®è¦è§£ã§ãã
ã¾ããã¹ã¿ã¼ãã¢ãã伿¥ãéçºããã¢ããªã±ã¼ã·ã§ã³ã¯ãã¹ãããå°äººæ°ã§ã®éçºã¨ãªãå ´åãå¤ãã§ããããã¯åç´ã«è³éãå°ãªãã¾ãã¯è²´éã§ãããã¨ãããã¼ã è¦æ¨¡ã大ããã§ããªãã±ã¼ã¹ãå¤ãã§ããããã¹ã¢ã¼ã«ãã¸ãã¹ï¼ã¹ã¿ã¼ãã¢ããã¨éã£ã¦å¤§ããæé·ããåæã§ã¯ãªãï¼ãå®ç¾©ä¸ã¹ã¢ã¼ã«ãã¼ã ã§ã®éçºãããããããã¾ããããããã®ã±ã¼ã¹ã§ã¯Railsãæ¡ç¨ãããã¨ã¯ã以ä¸ã®ã¹ã±ã¼ã©ããªãã£ã®åé¡ãã¯ãªã¢ã§ããã®ã§ããã°ãåççãªé¸æè¢ã®ä¸ã¤ã¨èãã¦ééããªãã§ãããã
ã¢ããªã±ã¼ã·ã§ã³ã®ã¹ã±ã¼ã©ããªãã£ã«ã¤ãã¦ã§ãããããããSaaSã®å ´åã¯ã¹ã±ã¼ã«ã¡ãªãããç¸å¯¾çã«å°ããã¨ã¯èãããã¾ãã䏿¹ãUGCï¼User Generated Contentsï¼ã®ãµã¼ãã¹ã§ããã°ãã¹ã±ã¼ã©ããªãã£ã¯å¿ é ã«ãªã£ã¦ããã§ãããããã以å¤ã«ãECãµã¤ããªã©ãæ¥æ¿ãªã¹ã±ã¼ã©ããªãã£ãå¿ ãããå¿ è¦ã¨ããªããµã¼ãã¹ã¯ãããªãã«ããã¨æããã¾ãã
å人éçºã®å
Railsã¯ããã«ã¹ã¿ãã¯ãã¬ã¼ã ã¯ã¼ã¯ãã§ããããããéã«ããã³ãã¨ã³ãã®æé©åã®å¦¨ãã«ãªã£ã¦ããã¨ãã話ãmizchiããã®è¨äºã®ä¸ã¤ã®è«ç¹ã§ããã¨ç§ã¯çè§£ãã¦ãã¾ããç§ã¯ããã³ãã¨ã³ãã«è©³ãããªãã®ã§æ·±ãè°è«ãããã¨ã¯ã§ããªãã®ã§ãããRailsï¼ãããã¯ä»ã®ãã«ã¹ã¿ãã¯ãã¬ã¼ã ã¯ã¼ã¯ï¼ãããã³ãã¨ã³ãã®æé©åãããæå³ã§ç ç²ã«ãã¦æä¾ãã¦ãããã®ãã¹ã¢ã¼ã«ãã¼ã ã§ã®çç£æ§ã§ãããã®ç©¶æ¥µã®å½¢ã¯å人éçºã§ãããã
å人éçºã¯ç¬ãé£ã°ãããããªåå¨ã§ã¯ãã¯ããªããå®éã«ããã¤ãã®ãµã¼ãã¹ãå人éçºããè²ã£ã¦ãã£ã¦ãã¾ããããã§ã¯ãããã³ãã¨ã³ãã®æé©åãããããããã«ä»®èª¬ãæ¤è¨¼ãããããéè¦ã§ãããRailsãæä¾ããé«éãªéçºãéè¦ãªæå³ãæã¡ã¾ããRailsã®ã¨ã³ã·ã¹ãã ã«ããå種å®è£ ãçç¥ã§ãããã¨ãã¾ãéè¦ã§ãã
ãããã®ç¹ã§ä»ã®ãã¬ã¼ã ã¯ã¼ã¯ãRailsãè¶ ããã¾ã§ã¯ãRailsã¯ããç¨åº¦å®æ³°ã¨è¨ã£ã¦ããããããã¾ããã
Railsã®æ¹åç¹ï¼æ®µéçãªã¹ã±ã¼ã©ããªãã£
ãã¡ãããããã¾ã§ã®è©±ã¯Railsã«åé¡ããªããã¨ãæå³ãã¾ãããç§ã®èãã§ã¯äºå®ã¯éã§ãRailsã«ã¯æ¹åãã¹ãç¹ãå¤ãããã¾ããããã§ã¯ããã¤ãã®èããç´¹ä»ãã¾ãã
Railsã«æ¬ ãã¦ãããã®ã¯è©°ã¾ãã¨ãããæ®µéçãªã¹ã±ã¼ã©ããªãã£ãã«å°½ããã®ã§ã¯ãªããã¨ç§ã¯èãã¦ãã¾ããããã¯ãç¾å®ã®ä¸çã§ã¯ãã¹ã±ã¼ã«ããã¢ããªã±ã¼ã·ã§ã³ãã¨ãã¹ã±ã¼ã«ããªãã¢ããªã±ã¼ã·ã§ã³ãã«ããããªã¨åãããããã§ã¯ãªãã¨ãããããã¾ã§ããã¦è§¦ãã¦æ¥ãªãã£ãäºå®ã«ç±æ¥ãã¾ããæåã¯å人éçºã¾ãã¯ã¹ã¢ã¼ã«ãã¼ã ã§ä½ã£ããã®ãäºæ³ä»¥ä¸ã«æåãã¦ãã¾ããã¹ã±ã¼ã©ããªãã£ãèæ ®ããå¿ è¦ãåºã¦ããâãããªã·ãã¥ã¨ã¼ã·ã§ã³ã¯Railsã®æãé¡èãªå¼±ç¹ã§ãã
Railsã¯omakaseã§ããã¨ããã®ããRailsãã¯ããªã³ã«æ²ããããRailsã®ææ³ã§ãããããã«ç §ããåãããã°ãRailsã¯ããã°ãã¹ã±ã¼ã©ããªãã£ãæ¨æºã§åãããã¹ãã§ããå ·ä½çã«ã¯ãå¤ãã®ã±ã¼ã¹ã§ã¢ãã«å±¤ãè¥å¤§åãããã¨ãã¹ã±ã¼ã©ããªãã£ãä¸ãã¦ããã¨ããç¹ãè¸ã¾ããã¢ãã«å±¤ã段éçã«åå²ãããããªæ©æ§ãå°å ¥ãããã¨ãªã©ãèãããã¾ããä¾ãã°ã³ãã³ããªãã¸ã§ã¯ãããã©ã¼ã ãªãã¸ã§ã¯ããã·ãªã¢ã©ã¤ã¶ãªã©ã§ãï¼å¤§éæã«ã¯ããããCRUDã®D, CU, Rã«ç¸å½ãã¾ãï¼ã
ãã¡ãããRailsã®ã¨ã³ã·ã¹ãã ã«ã¯ããããå«ã¾ãã¦ããã®ã§ããï¼ããããinteractor-railsãyaafãactive_model_serializersãªã©ã代表ä¾ï¼ããããã¯çµå±ã³ã¢ã¨çµ±åããã¦ãããã¡ã³ããã³ã¹ãªã©ã®é¢ã§ä¸å®ãããã¾ãï¼å®éãAMSã®ã¡ã³ããã³ã¹ã¯æ»ã£ã¦ãã¾ãï¼ã
Railsã«ã段éçãªã¹ã±ã¼ã©ããªãã£ããçµã¿è¾¼ã¾ãããã¨ã§ãéçºã®åéãæ ä¿ãã¤ã¤éçºãã¹ã±ã¼ã«ããããããããªãã¬ã¼ã ã¯ã¼ã¯ã«é²åããã¨è¯ããªã¨æã£ã¦ãã¾ãã
ã¾ã¨ã
ã¨ããããã§ãRailsã®æªæ¥ã«ã¤ãã¦èãã¦ã¿ã¾ããããã®è¨äºã§ã¯ããã¤ãã®ç¹ã«è§¦ãããã¨ãã§ããï¼ä¾ãã°ShopifyãCookpad, GitHubã®ãããªå¤§è¦æ¨¡Railsã¢ããªã±ã¼ã·ã§ã³ã®å®ä¾ãªã©ï¼ãæããæ°æã¡ãå°ãããã¾ãããããããããã¾ãå¥ã®æ©ä¼ã«ä¼¼ããã¼ãã§æ¸ãããããã¾ããã