Inspired by みねこあさんとこ
çºç«¯ï¼
Life is beautiful: Ruby on Railsの「えせMVC」の弊害
Modelã®å¤é¨ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®è¨è¨ã«ããã¦ãã£ã¨ã大åãªãã¨ã¯ããã®ããã¼ã¿ã®æ´åæ§ãã®è²¬ä»»ãï¼ï¼ï¼ï¼ Modelå´ã§å¼ãåãããControllerãä½ããã¦ããã¼ã¿ã®æ´åæ§ã ãã¯çµ¶å¯¾ã«å£ããªããããã«ä½ã£ã¦ãããã¨ã§ããã
ã¾ã£ããåæã§ãã
ããã«å¯¾ããã²ãããã®åå¿ï¼
えせMVCについてそろそろ一言言っておくか - yvsu pron. yas
ç§ã¯ãModelã«ã¯åã¾ããæªããã¸ãã¹ãã¸ãã¯ã¯Serviceã«ãããã¨ããããã¦ãã¾ãããã®è¾ºã¯å¥½ã¿ã§ãæ°¸ç¶åãããªãModelã«ããæ¹æ³ãããã¾ããControllerã«ãã£ãã»ããè¯ããã¨ãããã§ãããã
ã¾ã£ããåæã§ãã
ãMVCã¨ã¯ãªããããçãªè©±ã«ã¯å®ã®ã¨ããèå³ã¯ãªãã®ã§ãããç§ã®ç解ã§ã¯ãModelã¯ãã¼ã¿ã®ã¢ãã«ãã®ãã®ã§ãããèªåèªèº«ã®æ´åæ§ã«çµ¶å¯¾ã®è²¬ä»»ãæããªããã°ãªãã¾ãããéè¡å£åº§ã§è¨ããªããç§ãèªåã®å£åº§ãã1000åå¼ãåºããããç§ã®å£åº§ã®æ®é«ã1000åæ¸ããé帳ã«è¨å ¥ããããã®å±¥æ´ã«ãä½æä½æ¥ã«ååå¼ãåºãããã¨ããè¨é²ãæ®ããªããã°ãªãã¾ããããããã¯ãç§ã誰ãã®å£åº§ã«1000åæ¯ãè¾¼ããªãã誰ãã®å£åº§ã®æ®é«ã1000åå¢ãã¦ããã®èª°ãã®ãé帳ã«è¨å ¥ããããã®å±¥æ´ã«ãä½æä½æ¥ã«ååæ¯ãè¾¼ã¾ããã¨ããè¨é²ãæ®ããªããã°ãªãã¾ããã
ã§ã¯ãç§ãããçã£ã¦ã«ã©ã¼ã®ã¯ã¦ãªã¹ã¿ã¼ããªã«ããè²·ããã¨æã£ãã¨ãã¦ãèªåã®å£åº§ããã¯ã¦ãªã®å£åº§ã«æ¯ãè¾¼ããã¨æã£ãã¨ããããã
- ç§ã®å£åº§ãã1000åå¼ãåºã
- ã¯ã¦ãªã®å£åº§ã«1000åæ¯ãè¾¼ã
ã¨ãããµãã¤ã®å¦çãç¶ãã¦è¡ããã¨ã ãã¨æ½è±¡åãããã¨ã¯ãç¡çã®ãã話ã§ã¯ãªãã§ããããã¦ãããããã«ç¡çãããã¨ããã®ãªããããªãã½ããã¦ã§ã¢å·¥å¦ãã¯ãããããªã«ãããããããç§èªèº«ãATMã®åã«ç«ã£ã¦ã1000åå¼ãåºãã¦ç´å¹£ãæã«ãã¦ããããã¯ã¦ãªã«ç¾éã§æ¯ãè¾¼ãã®ã¨å®è³ªçã«ã¯åããã¨ãããããã§ãåã«çååã®ããã®ä»æããªãã§ããã*1ã
ã ããããã®å¦çã¯ãModelã®ãã誰ãã®å£åº§ããä¸å®éé¡ãå¼ãåºãã¡ã½ãããã¨ã誰ãã®å£åº§ã«ä¸å®éé¡æ¯ãè¾¼ãã¡ã½ããããé ã«å¼ã¶ãã¨ã§å®ç¾ã§ããªããã°ãªããªãã
ãã¡ãããç§ã®å£åº§ãã1000åå¼ãåºãã ãå¼ãåºãã¦ãã¨ã©ã¼ãä½ãã§ãã¯ã¦ãªã®å£åº§ã«1000åæ¯ãè¾¼ã¾ãããã¨ãªãçµãã£ã¦ãã¾ã£ã¦ã¯å°ãã¾ãããããããã©ã³ã¶ã¯ã·ã§ã³ã®ä¿è¨¼ã¯ãModelã«ãããããã¼ã¿ã®æ´åæ§ããããä¸ä½ã§ä¿è¨¼ããªããã°ãªãã¾ããã
ãç§ã®å£åº§ãã1000åå¼ãåºããã¨ããæä½ã¯ãããèªä½ãModelã«ã¨ã£ã¦æ´åæ§ã®åããæä½ã§ããã ããããã¯åçºã§å®è¡ã§ããªããã°ãããããããã¦ãç§ãã¯ã¦ãªã«å£åº§ãã1000åæ¯ãè¾¼ããã¨æã£ããããç§ã®å£åº§ãã1000åå¼ãåºãããã¯ã¦ãªã®å£åº§ã«1000åæ¯ãè¾¼ããã¨ãããµãã¤ã®æä½ãç¶ãã¦è¡ããã¨èãããã¨ããããããªããã§ãããã®ãµãã¤ã®æä½ãååã ããã£ã¦ãããã£ããããModelã®æ´åæ§ãã¯å£ããªãã¯ãã§ãã*2ãã¦ã¼ã¶ã§ããç§ã¯é常ã«å°ããã¤ã¾ããModelã«ã¨ã£ã¦ã®æ´åæ§ã¯å´©ãã¦ããªãã®ãããããªãã§ãããã¦ã¼ã¶ã«ã¨ã£ã¦ã®æ´åæ§ã¯å´©ãã¦ããããã§ãã
ããããModelãã誰ãã®å£åº§ããä¸å®éé¡ãå¼ãåºãã¡ã½ããããControllerã«å ¬éãã¦ããã®ãªãã
Life is beautiful: Ruby on Railsの「えせMVC」の弊害
Modelã®å¤é¨ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®è¨è¨ã«ããã¦ãã£ã¨ã大åãªãã¨ã¯ããã®ããã¼ã¿ã®æ´åæ§ãã®è²¬ä»»ãï¼ï¼ï¼ï¼ Modelå´ã§å¼ãåãããControllerãä½ããã¦ããã¼ã¿ã®æ´åæ§ã ãã¯çµ¶å¯¾ã«å£ããªããããã«ä½ã£ã¦ãããã¨ã§ããã
Controllerãä½ããã¦ããã¦ã¼ã¶ã«ã¨ã£ã¦ã®æ´åæ§ããå´©ããªãããã«ãããã¨ã¯ä¸å¯è½ã§ãã
ã§ãç¾å®çãªã¢ããªã±ã¼ã·ã§ã³ã«ããã¦ââã¨ããã®ã¯ããããWebã¢ããªã¨ãæ¥åã¢ããªã¨ãã®ä¸çã§ããã©ââã誰ãã®å£åº§ãã誰ãã®å£åº§ã«ãéãæ¯ãè¾¼ããã¿ãããªæä½ã¯ãã²ã¨ã¤ã®ããã¸ãã¹ãã¸ãã¯ãã¨ãã¦åãåºããæä½ã ã¨æããã§ãããã¦ãããããããã¸ãã¹ãã¸ãã¯ã§ãªãããªããã¸ãã¹ãã¸ãã¯ã£ã¦ä½ãªãã ã
ããã¦ããã®ããã¸ãã¹ãã¸ãã¯ãã¯ãã¦ã¼ã¶ã®è¦æã«å¿ãã¦ãã¶ãã¶ãã¨å¢æ®ãã¦ããéå½ã«ããã¾ããããControllerãä½ããã¦ããã¼ã¿ã®æ´åæ§ã ãã¯çµ¶å¯¾ã«å£ããªãããã¨ãå®ç¾ããããªããModelã¯ç çã®ããã«å°ããªã³ã¼ãã§å®ç¾ããã¦ããªããã°ãªãã¾ãããããã£ã¡ã ãããããªäººãããããã¾ãããã¶ãã¶ãã¨å¢æ®ãã¦ããã³ã¼ãã«ã¤ãã¦ãæ´åæ§ãä¿ã¤ãã¨ã¯å°é£ã ããã§ãã
Modelã®æ´åæ§ã¯Modelã絶対çã«è²¬ä»»ãæã¤ããã©ãã¦ã¼ã¶ã«ã¨ã£ã¦ã®æ´åæ§ã¯ããã1é層ä¸ã®é層ã§è²¬ä»»ãæããªããã°ãªããªãããããCotrollerãªã®ãServiceã¨å¼ã¶ã®ãã¯ããããªãããã©ã
ã¯ã¼ãããããã¼ãã¼ã«ãªããModelã®æ´åæ§ã¨ãã¦ã¼ã¶ã«ã¨ã£ã¦ã®æ´åæ§ã®å·®ç°ã¯å¤§ããããã¾ãããSmalltalkã®MVCãMicrosoftã®Document-Viewã¯ãã®ã¸ãã®æ§é ãåæã¨ãã¦ããããã«ç§ã«ã¯è¦ãã¾ããã§ããã¢ããªã«ãã£ã¦ã¯ããModelã«ã¨ã£ã¦ã®atomicãªæä½ãã¨ãã¦ã¼ã¶ã«ã¨ã£ã¦ã®atomicãªæä½ãã¯é£ãéãããããªãã®? ã¨ç§ã¯æãããã§ãã
*1:ææ°æäºã ã®è©±ã¯ã²ã¨ã¾ãç¡è¦ã
*2:ãç§ãèªåã®å£åº§ãã1000åç¾éã§å¼ãåºããã¨ããæä½ã¯ããèªä½åç¬ã§æç«ããããããã£ã¨ããå£åº§ããæ¯ãè¾¼ãå ´åãç§ã®æå ã«1000åæãæ¥ããã¨ã¯ããã¾ãããã§ããã¾ãããç§ã®æå ã(ATMãããéãåãåºãã¨ãã)ã¾ã§ãããã°ã©ãã³ã°ã«ãããModelã«çµã¿è¾¼ãã®ã¯ç¡çãªããããªãã§ããããã