1. ãã¬ãŒã ã¯ãŒã¯ãšã¯
ãœãããŠã§ã¢éçºã®çŸå Žã§ããè³ã«ããããã¬ãŒã ã¯ãŒã¯ãããããããã®æŠå¿µã詳现ã«ã€ããŠã¯å€ãã®äººã ãæ£ç¢ºã«ç解ããŠããªããããããŸãããããã§ã¯ããã®å®çŸ©ã圹å²ãçš®é¡ããããŠéžã³æ¹ãŸã§ããã¬ãŒã ã¯ãŒã¯ã«ã€ããŠåŸ¹åºè§£èª¬ããŸãã
1.1 ãã¬ãŒã ã¯ãŒã¯ã®å®çŸ©ãšç¹æ§
ãã¬ãŒã ã¯ãŒã¯ãšã¯äžäœäœã§ãããããæ£ç¢ºãªå®çŸ©ããããšããã¬ãŒã ã¯ãŒã¯ã¯ãœãããŠã§ã¢ã®æšæºçãªæ§é ãæäŸããã·ã¹ãã ãŸãã¯ããŒã«ã®ã»ãããæããŸããããã«ããéçºè ã¯ãéè€ããåºæ¬çãªã³ãŒããæžãããšãªããç¹å®ã®ã¿ã¹ã¯ã«çŠç¹ãåœãŠãŠã³ãŒãã£ã³ã°ããããšãã§ããŸãã
ãŸãããã¬ãŒã ã¯ãŒã¯ã¯èšèšãã¿ãŒã³ã®å®è£ ãæäŸããŠããŸããããã«ããä»ã®éçºè ãããªãã®ã³ãŒããç解ãããããªãã ãã§ãªãããã°ãæžãããéçºããã»ã¹ãå¹çåããã®ã«åœ¹ç«ã¡ãŸãã
ãã¬ãŒã ã¯ãŒã¯ã®æ倧ã®ç¹æ§ã¯ãã®åå©çšæ§ã§ããäžåºŠéçºãããã¬ãŒã ã¯ãŒã¯ã¯ãä»ã®ãããžã§ã¯ãã§ã䜿çšããããšãã§ããå¹ççãªéçºãå¯èœã«ããŸãã
1.2 ãã¬ãŒã ã¯ãŒã¯ã®åœ¹å²ãšäŸ¡å€
ã§ã¯ãå ·äœçã«ãã¬ãŒã ã¯ãŒã¯ã¯éçºè ã«ã©ã®ãããªäŸ¡å€ãæäŸããã®ã§ããããïŒæãçŽæ¥çãªåœ¹å²ã¯ãéçºããã»ã¹ã®å¹çåã§ãããã¬ãŒã ã¯ãŒã¯ã䜿çšããããšã§ãå®åçãªã³ãŒããæ¯åæžãæéãçããããå ·äœçãªæ©èœã«éäžã§ããŸãã
ããã«ããã¬ãŒã ã¯ãŒã¯ã¯å®å®ããå質ã®ä¿æã«ãå¯äžããŸãããã¬ãŒã ã¯ãŒã¯ã¯äžå®ã®ãã¶ã€ã³ãã¿ãŒã³ãšã«ãŒã«ã«åŸããããäžå®ã®å質ãç¶æããããã§ãã
ããã«ãéçºããŒã éã®å調äœæ¥ãã¹ã ãŒãºã«ããããã®ããŒã«ãšããŠããã¬ãŒã ã¯ãŒã¯ã¯æçšã§ããæ確ãªã«ãŒã«ãšæ§é ãããããã现éšãŸã§æ瀺ãåºãå¿ èŠããªããçµæçã«ã³ãã¥ãã±ãŒã·ã§ã³ã®æéãåæžããããšãã§ããŸãã
1.3 ãã¬ãŒã ã¯ãŒã¯ã®çš®é¡ãšãã®ç¹åŸŽ
ãã¬ãŒã ã¯ãŒã¯ã«ã¯ããŸããŸãªçš®é¡ãååšããŠããããããããç°ãªãç¹åŸŽãæã£ãŠããŸããäŸãã°ãJavaScriptã®ãã¬ãŒã ã¯ãŒã¯ã«ã¯AngularJSãReactJSã» Vue.jsãªã©ãããããããããç°ãªãç¹æ§ãšçšéãæã£ãŠããŸãã
ãŸããRuby on RailsãDjangoïŒPythonïŒãªã©ã¯ãå šäœçãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ãå©ãããã¬ãŒã ã¯ãŒã¯ã§ãããããã¯ã¢ãã«ããã¥ãŒãã³ã³ãããŒã©ïŒMVCïŒãã¿ãŒã³ãåãå ¥ããã¢ããªã±ãŒã·ã§ã³ã®æ§é ãå®çŸ©ããã®ã«åœ¹ç«ã¡ãŸãã
ãããã®ãã¬ãŒã ã¯ãŒã¯ã¯åã ãæã€ç¹æ§ãšããããå©çšããéçºè ã®ããŒãºã«ãã£ãŠäœ¿ãåããããŸãããã£ãŠããã¬ãŒã ã¯ãŒã¯éžã³ã®éã«ã¯ãããããã®ç¹æ§ãç解ããããšãéèŠã§ãã
1.4 ãã¬ãŒã ã¯ãŒã¯ã®éžã³æ¹
ãã¬ãŒã ã¯ãŒã¯ãéžã¶éã«ã¯ãåãã«ãããžã§ã¯ãã®èŠä»¶ããã£ãããšç解ããããšãéèŠã§ãããã®äžã§ãç¹å®ã®èŠä»¶ãæºããèœåãæã€ãã¬ãŒã ã¯ãŒã¯ãèŠã€ããããšãæ±ããããŸãã
ãŸãããã¬ãŒã ã¯ãŒã¯ã®ã³ãã¥ããã£ã®æŽ»çºãã¯ãåé¡è§£æ±ºã®è¿ éãããã¬ãŒã ã¯ãŒã¯ã®ç¶ç¶çãªæ¹è¯ã«çŽçµããŸãã掻çºãªã³ãã¥ããã£ã®ãããã¬ãŒã ã¯ãŒã¯ãéžã¶ãšãå°ã£ããšãã«çŽ æ©ãå©ããŠããããå¯èœæ§ããããŸãã
æåŸã«ããã¬ãŒã ã¯ãŒã¯éžã³ã«ã¯èªèº«ã®ã¹ãã«ã»ãããçµéšãéèŠãªèŠçŽ ã§ããèªåãããŒã ãæ¢ã«ç¿çããŠããèšèªããã¬ãŒã ã¯ãŒã¯ãéžãã æ¹ããçç£æ§ãé«ãŸãã§ãããã
2. MVCãšã¯äœã
MVCãšã¯ãœãããŠã§ã¢ã®èšèšãã¿ãŒã³ã§ããModel-View-Controllerã®ç¥ã§ãããã®èšèšãã¿ãŒã³ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ïŒUIïŒãšããžãã¯ãæŽçããäžéšåã®å€æŽãä»ãã»ãšãã©åœ±é¿ãäžããªãããã«ããããã«éåžžã«äŸ¿å©ã§ãã
ãã®ãã¬ãŒã ã¯ãŒã¯ã¯ãœãããŠã§ã¢ã®å éšæ§é ã3ã€ã®éšåã«åããŠãããããã®åœ¹å²ãšçžäºäœçšãæ確ã«å®çŸ©ããŸããããã«ãã£ãŠããœãããŠã§ã¢ã®èšèšãšçµç¹ãå¹ççã«ãªããŸãã
ããã§ã¯ãMVCã®ç解ãæ·±ããããã®åºæ¬çãªç¥èã«ã€ããŠè§£èª¬ããŸãã詳现ãªå ·äœäŸãå®éã®äœ¿çšäŸã«ã€ããŠã¯ãããããã®ãµãã»ã¯ã·ã§ã³ã§èª¬æããŸãã
2.1 MVCã®å®çŸ©
ããããã®æåãè¡šããšãããèŠãŠã¿ãŸããããModelã¯ããŒã¿ãšããžãã¹ããžãã¯ãViewã¯ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãControllerã¯ModelãšViewã®éã®æ¥çå€ãè¡šçŸããŠããŸãããããããç¬ç«ããŠãããä»ã®éšåããéé¢ãããŠããŸãã
MVCã®ç®çã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããžãã¹ããžãã¯ãšãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãåé¢ããããšã§ããããã«ãããã¢ããªã±ãŒã·ã§ã³ã倧ãããªãã«ã€ããŠã管çã容æã«ãªããŸãã
äžéšã®å€æŽãä»ã®éšåã«åœ±é¿ãåãŒãå¯èœæ§ãäœããªããããããäžè²«ããã³ãŒãããŒã¹ãä¿ã€ããšãã§ããŸãããããŠãæ°ããæ©èœã®è¿œå ãŸãã¯æ¢åã®éšåã®å€æŽã容æã«ãªããŸãã
2.2 MVCã¢ãã«ã®ã¡ãªãããšãã¡ãªãã
MVCã¢ãã«ã®äžçªã®ã¡ãªããã¯ãã¢ããªã±ãŒã·ã§ã³ã®éçºãšã¡ã³ããã³ã¹ã容æã«ãªããšããç¹ã§ãããŸããç¬ç«æ§ãé«ãŸããããéçºè ã¯ç¹å®ã®éšåã«ã ãéäžã§ããŸãã
ãŸããMVCã¢ãã«ãæ¡çšããããšã§ãã¢ããªã±ãŒã·ã§ã³å šäœãéããŠäžè²«æ§ãšçµ±äžæ§ãä¿ã€ããšãã§ããŸããããã«ãããéçºè ã¯äºæž¬å¯èœã§ãæäŸãããæ©èœãæ£ç¢ºã«å®è£ ããããšãã§ããŸãã
ããããªããããã®ã¢ãã«ã«ãçæããããŸããåæã®ã³ãŒãèšèšãé©åã§ãªããã°ãã³ã³ãããŒã©ãè€éã«ãªãéããŠãããžãã¹ããžãã¯ãã³ã³ãããŒã©ãšã¢ãã«ã®éã§æŒ ç¶ãšãªã£ãŠããŸãå¯èœæ§ããããŸãã
2.3 MVCã®éèŠãªã³ã³ããŒãã³ã: ã¢ãã«ããã¥ãŒãã³ã³ãããŒã©ãŒ
ããã§ã¯ãMVCã¢ãã«ã®3ã€ã®äž»èŠãªéšåã«ã€ããŠè©³ãã解説ããŸãã
ã¢ãã«ã¯ãããŒã¿ãšãã®ããŒã¿ã«å¯ŸããæäœïŒããžãã¹ããžãã¯ïŒãä¿æããŸããã¢ãã«ã¯ã¢ããªã±ãŒã·ã§ã³ãè¡ãã¹ãä»äºãå®çŸ©ããŸããããŒã¿ããŒã¹ã®CRUDæäœïŒäœæãèªã¿åããæŽæ°ãåé€ïŒã¯ã¢ãã«ã«ãã£ãŠè¡ãããŸãã
ãã¥ãŒã¯ãã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãå®çŸ©ããŸãããŠãŒã¶ãŒãæ å ±ãå ¥æããããæ å ±ãéä¿¡ããããã®ã€ã³ã¿ãŒãã§ãŒã¹ãããã§äœæãããŸãããã¥ãŒã¯ã¢ãã«ããã®æ å ±ã䜿çšããŠããŠãŒã¶ãŒãå¿ èŠãšããæ å ±ã衚瀺ããŸãã
æåŸã«ãã³ã³ãããŒã©ã¯ã¢ãã«ãšãã¥ãŒã®éãã€ãªããŸãããŠãŒã¶ãŒã®è¡åã«åå¿ããŠãé©åãªã¢ãã«ãšãã¥ãŒãéžæããŸããã³ã³ãããŒã©ã¯éåžžããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã§ã®ãŠãŒã¶ãŒã®åäœïŒã¯ãªãã¯ãããŒå ¥åãªã©ïŒãåãåãããããã¢ãã«æäœã«å€æããŸãã
2.4 MVCã®é©çšç¯å²ãšå¶çŽ
MVCã¢ãã«ã¯äžè¬çã«webã¢ããªã±ãŒã·ã§ã³ããã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ã®èšèšã§ãã䜿çšãããŸããç¹ã«ããµãŒããŒãšã¯ã©ã€ã¢ã³ãã®éã§æ å ±ãããåãããå¿ èŠãããã¢ããªã±ãŒã·ã§ã³ã§ããã®äŸ¡å€ãæ倧åãããŸãã
ããããªãããã¢ããªã±ãŒã·ã§ã³ã®èšèšãéåžžã«ã·ã³ãã«ãã€å°èŠæš¡ã§ããå ŽåãMVCã¢ãã«ãæ¡çšãããšèšç»ä»¥äžã«è€éããå¢ãå¯èœæ§ããããŸããMVCã¢ãã«ã¯ã¢ããªã±ãŒã·ã§ã³ã®å€§èŠæš¡ãªæ¡åŒµã«ããŸã察å¿ããããã®ãã®ã ãšç解ããŠãã ããã
MVCã¢ãã«ã¯éåžžã«æçšãªãœãããŠã§ã¢èšèšãã¿ãŒã³ã§ããããã¹ãŠã®ãããžã§ã¯ãããã®ã¢ãã«ã«åŸãå¿ èŠãããããã§ã¯ãããŸãããã¢ããªã±ãŒã·ã§ã³ã®èŠæš¡ãç®æšããããŠåé¡ã®èªç¶ãèæ ®ããäžã§é©åãªèšèšã®éžæãããããšãéèŠã§ãã
3. ãã¬ãŒã ã¯ãŒã¯ãšMVCã®é£æº
ã«ã¹ã¿ã ãœãããŠã§ã¢éçºã®ããã« ãã¬ãŒã ã¯ãŒã¯ãšMVCãé£æºããä»çµã¿ã«ã€ããŠæ·±ãæãäžããŠã¿ãŸãããããããã¯è€éãªãœãããŠã§ã¢éçºãé«åºŠã«å¹çåããä¿¡é Œæ§ãšä¿å®æ§ãåäžãããäžå¿çãªèŠçŽ ã§ãã
äžè¬ã«ããã¬ãŒã ã¯ãŒã¯ã¯ã¢ããªã±ãŒã·ã§ã³ã®åºæ¬çãªã¹ã±ã«ãã³ãæäŸããç¹å®ã®ãã¿ãŒã³ããããã³ã«ã«åŸãããã«èšèšãããã³ãŒãã®ã»ããã§ããäžæ¹ãMVCïŒã¢ãã«-ãã¥ãŒ-ã³ã³ãããŒã©ãŒïŒã¯ãœãããŠã§ã¢ã¢ãŒããã¯ãã£ãã¿ãŒã³ã®äžã€ã§ãã¢ããªã±ãŒã·ã§ã³ã®3ã€ã®äž»èŠãªéšåãåé¢ã»çµåãããšããæŠå¿µã§ãã
ãããäºã€ãé£æºããã°ãããçµç¹åããããæ§é çã§ä¿å®æ§ã®é«ããœãããŠã§ã¢éçºç°å¢ãå®çŸå¯èœãšãªããŸãã
3.1 ãã¬ãŒã ã¯ãŒã¯ãšMVCã®é¢ä¿æ§
ãã¬ãŒã ã¯ãŒã¯ãšMVCã®é¢ä¿æ§ãç解ããããã«ã¯ããŸãäœã圌ããçžäºäŸåçã§åŒ·åã«é£æºãããŠããã®ããããã§èå¯ããŸãã
å ·äœçã«ã¯ãå€ãã®ãã¬ãŒã ã¯ãŒã¯ã¯MVCã¢ãŒããã¯ãã£ãã¿ãŒã³ã«åŸãèšèšãããŠããŸããããã¯ãã¢ããªã±ãŒã·ã§ã³ã®è€éæ§ã管çããã®ã«åœ¹ç«ã€ããã§ããMVCãã¿ãŒã³ããã¬ãŒã ã¯ãŒã¯ã«çµã¿èŸŒãããšã§ãéçºè ã¯ãœãããŠã§ã¢ã¢ããªã±ãŒã·ã§ã³ã®åéšåãåé¢ããç¬ç«ããŠéçºãããã¹ãããããšãã§ããŸãã
ããã«ãããç¶æ³ã«å¿ããŠå ·äœçãªããžãã¹ããžãã¯ãšãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãç¬èªã«æŽæ°ã§ããããã«ãªããŸããMVCã¢ãŒããã¯ãã£ããã¬ãŒã ã¯ãŒã¯ã«åãå ¥ããããçç±ã®äžéšãšãªã£ãŠããŸãã
3.2 MVCãã¬ãŒã ã¯ãŒã¯ã®åœ¹å²
MVCãã¬ãŒã ã¯ãŒã¯ã®äž»ãªåœ¹å²ã¯ãã¢ããªã±ãŒã·ã§ã³ã®éçºãšä¿å®ãå¹çåããããšã§ãã
ãŸãåãã«ãã¢ãã«ã¯ããžãã¹ããžãã¯ãè¡šçŸããŸããã€ãŸããããŒã¿ã®æäœãããŒã¿ããŒã¹ãšã®éä¿¡ãªã©ãã¢ããªã±ãŒã·ã§ã³ã®äž»èŠãªæ©èœãæ åœããŸããããã«å¯ŸããŠããã¥ãŒã¯ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãåŠçããŸããããã¯ç»é¢ã«è¡šç€ºãããæ å ±ã®è¡šç€ºæ¹æ³ãå®çŸ©ããŸããæåŸã«ãã³ã³ãããŒã©ãŒã¯ã¢ãã«ãšãã¥ãŒãæåã«çµã³ã€ããéšåã§ããããã¯ãŠãŒã¶ãŒã®å ¥åã«å¿ããŠé©åãªã¢ãã«æäœãåŒã³åºããçµæããã¥ãŒã«éä¿¡ããŸãã
ããã3ã€ã®èŠçŽ ãææ©çã«é£æºããŠãéçºè ã¯ã¿ã¹ã¯ãé«å質ãã€å¹ççã«å®äºã§ããŸãã
3.3 人æ°MVCãã¬ãŒã ã¯ãŒã¯ã®æ¯èŒ
é²åãç¶ããéçºã®äžçã«ã¯ãçŽ æŽãããMVCãã¬ãŒã ã¯ãŒã¯ã沢山ãããŸãããã®äžã§æã人æ°ã®ãããã®ãããã€ã玹ä»ããŸãããã
Ruby on Railsã¯Rubyèšèªã§éçºãããç°¡æœããšé床ã匷調ããMVCãã¬ãŒã ã¯ãŒã¯ã§ãããŸããDjangoã¯Pythonã®é«ã¬ãã«ãªMVCãã¬ãŒã ã¯ãŒã¯ã§ã”Donât Repeat Yourself”ã®ååã«åŸããã³ãŒãã®ç¹°ãè¿ããæå°éã«æããããšãéèŠããŠããŸããããã«ãSpring MVCã¯Javaçšã®ãã¬ãŒã ã¯ãŒã¯ã§ãäŒæ¥èŠæš¡ã®ã¢ããªã±ãŒã·ã§ã³éçºã«æé©åãããŠããŸãã
ãããåã ã¯ç¬èªã®ç¹åŸŽãšå©ç¹ãæã¡ãç¹å®ã®ãããžã§ã¯ããšããŒã ã®ããŒãºã«ãããšããã倧ããã§ãããã
3.4 MVCãã¬ãŒã ã¯ãŒã¯ã®éžæåºæº
ãã¬ãŒã ã¯ãŒã¯ã®éžæã¯ã¢ããªã±ãŒã·ã§ã³ã®éçºãšæåã«å€§ããªåœ±é¿ãäžããŸããããŠãæé©ãªMVCãã¬ãŒã ã¯ãŒã¯ãéžã¶ããã®äžéšã®åºæºã¯äœã§ããããïŒ
ãŸããéçºèšèªã®éžæãéèŠã§ããããŒã ã®æè¡ã¹ãã«ããããžã§ã¯ãã®èŠä»¶ãããã³å°æ¥ã®ç¶æã«ãã£ãŠéžæãããŸãã次ã«ããã¬ãŒã ã¯ãŒã¯ã®äººæ°ãšã³ãã¥ããã£ã®æ¯æŽãéèŠã«ãªããŸãã匷åãªã³ãã¥ããã£ã¯æ°ããåé¡ã«çŽé¢ãããšãã®ãªãœãŒã¹ãšãªãããã¬ãŒã ã¯ãŒã¯ã®çåæ§ãšæ¹åãä¿èšŒããŸãã
ãããŠã䜿çšãããã¬ãŒã ã¯ãŒã¯ãæäŸããèšèšãã¿ãŒã³ãšèšèšã®å²åŠããã¬ãŒã ã¯ãŒã¯ãã©ã®çšåºŠåŒ·åºãªã¢ãŒããã¯ãã£ãæäŸããŠããããè©äŸ¡ããå¿ èŠããããŸããæçµçãªéžæã¯ããããžã§ã¯ãã®ç¹æ§ãããŒã ã®å°éæè¡ãéçºã¹ããŒããä¿å®æ§ãªã©ãå€ãã®èŠçŽ ãèæ ®ããçµæãšãªããŸãã
4. ãã¬ãŒã ã¯ãŒã¯MVCã®å ·äœçãªéçš
ãã®ç« ã§ã¯ããã¬ãŒã ã¯ãŒã¯MVCã®å ·äœçãªéçšã«ã€ããŠè§£èª¬ããŸããæ§ç¯æé ãå®éã®ããã°ã©ã ã®äŸãåŠçæµãããããã°æé ãšãã£ãå ·äœçãªå 容ãåŠã³ãŸãããã
MVCãã¬ãŒã ã¯ãŒã¯ã¯ã³ãŒãã®æŽçãä¿å®æ§ã®åäžãåå©çšæ§ã®ç¢ºä¿ãªã©ã®ã¡ãªããã享åã§ããçŽ æŽãããããŒã«ã§ãã
ããã§ã¯ãåºæ¬çãªæŠå¿µãç解ããäžã§ãã³ãŒãã¬ãã«ã§ã©ã®ããã«é©çšãããããç解ããŸãããã
4.1 MVCãã¬ãŒã ã¯ãŒã¯ã®æ§ç¯æé
ãŸãã¯ãMVCãã¬ãŒã ã¯ãŒã¯ã®æ§ç¯æé ã«ã€ããŠèª¬æããŸãã第äžã«ã¢ãã«ããã¥ãŒãã³ã³ãããŒã©ã®3ã€ã®ã³ã³ããŒãã³ããæ確ã«å®çŸ©ããŸãããããã¯ã¢ããªã±ãŒã·ã§ã³ã®äž»èŠéšåãšãªããŸãã
第äºã«ãããããã®åœ¹å²ãç解ãéšåããšã®å®è£ ãžãšé²ããŸããåéšåãäºãã«ç¬ç«ããŠããããšã§ã圹å²ãæ確ã«ãªããã³ãŒãã®ä¿å®æ§ãåäžããããã°ã®çºèŠãšä¿®æ£ã容æã«ããŸãã
æåŸã«ããããäžã€ã®ã³ã³ããŒãã³ããé©åã«æ¥ç¶ããŸããã¢ãã«ã¯ããŒã¿ã®ç®¡çããã¥ãŒã¯ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãã³ã³ãããŒã©ã¯ãããäºã€ã®æ©æž¡ã圹ãšãªããŸãã
4.2 MVCãã¬ãŒã ã¯ãŒã¯ãçšããããã°ã©ã ã®äŸ
MVCãã¬ãŒã ã¯ãŒã¯ãçšããããã°ã©ã ã®äžäŸãšããŠããŠãŒã¶ãŒã¢ã«ãŠã³ã管çã·ã¹ãã ãèããŠã¿ãŸããã¢ãã«ã¯ããŒã¿ããŒã¹ãšã®ã€ã³ã¿ã©ã¯ã·ã§ã³ãæ åœãããŠãŒã¶ãŒæ å ±ã管çããŸãã
ãã¥ãŒã¯ãŠãŒã¶ãŒã¢ã«ãŠã³ãã®äžèŠ§è¡šç€ºããåã ã®ã¢ã«ãŠã³ã詳现衚瀺ãšãã£ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããŸãã
ã³ã³ãããŒã©ã¯ããŠãŒã¶ãŒãªã¯ãšã¹ããé©åãªã¢ãã«ãžãšãããã³ã°ãããã¥ãŒã«çµæã衚瀺ããã圹å²ãæãããŸãã
4.3 MVCãã¬ãŒã ã¯ãŒã¯ã§ã®åŠçæµã
MVCãã¬ãŒã ã¯ãŒã¯ã§ã®åŠçæµãã¯ä»¥äžã®ããã«ãªããŸããã³ã³ãããŒã©ããŠãŒã¶ãŒããã®ãªã¯ãšã¹ããåãåããé©åãªã¢ãã«ãåŒã³åºããŸãã 次ã«ãã¢ãã«ã¯ããŒã¿ãœãŒã¹ããå¿ èŠãªããŒã¿ãååŸããçµæãã³ã³ãããŒã©ã«è¿ããŸãã
ã³ã³ãããŒã©ã¯ãã®çµæããã¥ãŒã«æž¡ãããã¥ãŒã¯ããã衚瀺ããŸãããããã®æé ã¯äžé£ã®æµããšããŠåãã察話çãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãå®çŸããŸãã
ãã®ä»çµã¿ã«ããããŠãŒã¶ãŒã¯ããŒã¿ã®æŽæ°ãååŸãšãã£ãæäœãæ åçã«å®è¡ã§ããŸãã
4.4 ãã¬ãŒã ã¯ãŒã¯MVCã®ãããã°æé
ãšã©ãŒãã©ããã³ã°ãšãããã°ã¯MVCãã¬ãŒã ã¯ãŒã¯éçšã®éèŠãªéšåã§ãããŸãã¯ãã·ã¹ãã çææã®ãšã©ãŒãã°ããã§ãã¯ããåé¡ãçºçããéã«äœãèµ·ãã£ãã®ããç解ããŸãã
次ã«ãåé¡ãçºçããéšäœãç¹å®ããŸããã¢ãã«ããã¥ãŒãã³ã³ãããŒã©ã®ã©ã®éšåã§ãšã©ãŒãçºçããã®ããç¹å®ãããã®éšåã®ã³ãŒããåæ€èšããŸãã
æåŸã«ããšã©ãŒã®åå ãç¹å®ãããã³ãŒãã®ä¿®æ£ãè¡ããŸãããã®éžæãªãããã°æµãã¯ã·ã¹ãã ã®å®å®æ§ãšä¿¡é Œæ§ã確ä¿ããŸãã
5. ãã¬ãŒã ã¯ãŒã¯MVCã«å¯Ÿãããã¬ã³ããšèŠè§£
ãœãããŠã§ã¢éçºã®äžã§æ¥µããŠéèŠãšãããã®ããæ¥åããžãã¯ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãããŒã¿ã®ç®¡çãå¹ççã«æ§ç¯ããç¶æããææ³ã§ããMVCïŒã¢ãã«-ãã¥ãŒ-ã³ã³ãããŒã©ïŒãã¿ãŒã³ã§ãããã®å ·çŸåã®åœ¢ãšããŠãå€ãã®ãã¬ãŒã ã¯ãŒã¯ãMVCãæ¡çšããŠããŸããæ¬ç« ã§ã¯ãçŸç¶ã®ãã¬ãŒã ã¯ãŒã¯MVCã®å©çšç¶æ³ã«ã€ããŠãä»ã®èšèšãã¿ãŒã³ãšã®æ¯èŒãæªæ¥äºæž¬ããããŠæ¥çã®åå¿ã«ã€ããŠè©³çŽ°ã«è§£èª¬ããŸãã
5.1 ãã¬ãŒã ã¯ãŒã¯MVCã®çŸåšã®å©çšç¶æ³
çŸåšããã¬ãŒã ã¯ãŒã¯MVCã¯ãRuby on RailsãSpring MVCãDjangoãªã©ãå€æ°ã®äººæ°Webãã¬ãŒã ã¯ãŒã¯ã§å©çšãããŠããŸããäŒæ¥ã®å éšã·ã¹ãã ã ãã§ã¯ãªãã倧èŠæš¡ãªWebã¢ããªã±ãŒã·ã§ã³ã§ãåºãå©çšãããŠããŸãããã®çç±ã¯ã圹å²ã®ã¢ãžã¥ãŒã«åã«ããé«ãåå©çšæ§ãšã¡ã³ããã³ã¹æ§ããããå¹çæ§ã«ãããŸãã
MVCãã¿ãŒã³ãæ¡çšããããšã¯ãå€§å¹ ãªæéã®ç¯çŽã«ãã€ãªãããŸããåæã«ãéçºè éã§ã®èªèã®éœéœ¬ãæžãããããŒã ãšããŠã®çç£æ§ãé«ãã圹å²ãæãããŸãã
ãŸããããžãã¹ããžãã¯ãšè¡šç€ºçšã³ãŒããåé¢ããäºã§ãããŒã«ãªãŒãŒã·ã§ã³ããã¶ã€ã³ã®å€æŽã容æã«ãªãããšãèŠéããŸãããããã¯ããœãããŠã§ã¢èŠä»¶å€æŽã«äŒŽããé »ç¹ã«ã³ãŒãä¿®æ£ãæ±ããããçŸä»£ã®éçºç°å¢ã«ãããŠéèŠãªèŠçŽ ã®äžã€ãšèšããã§ãããã
5.2 ãã¬ãŒã ã¯ãŒã¯MVCãšä»ã®èšèšãã¿ãŒã³ãšã®æ¯èŒ
ä»ã®èšèšãã¿ãŒã³ãšæ¯èŒããéã®ãã¬ãŒã ã¯ãŒã¯MVCã®æ倧ã®ç¹åŸŽã¯ããã®åé¢ã®æ確ãã§ãã圹å²ããšã«ã¯ã©ã¹ãåããäºã§ãåã¯ã©ã¹ã®åœ¹å²ãæ確ãšãªãããããããç¬ç«ããŠæ©èœããŸããããã«ãããäžéšã®å€æŽãä»ã®éšåã«åœ±é¿ãäžãã«ãããªããšããã¡ãªããããããŸãã
äžæ¹ããã¿ãŒã³ã®ç解ãé©çšã«ã¯äžå®ã®åŠç¿ã³ã¹ããå¿ èŠãšãªããŸããç¹ã«ã倧èŠæš¡ãªãããžã§ã¯ãã§ã¯èšèšã®è€éæ§ãå¢å€§ãã管çãé£ãããªãå¯èœæ§ããããŸãã
ãããããã¿ãŒã³ãç解ãããé©çšããããšããã®ã¡ãªããã¯å€§ããªãã®ã«ãªããšèããããŸããMVCã®å²åŠã¯ããœãããŠã§ã¢éçºã«ãããäžè²«æ§ãšå¹çæ§ããããããŸãã
5.3 ãã¬ãŒã ã¯ãŒã¯MVCã®æªæ¥å±æ
ãã¬ãŒã ã¯ãŒã¯MVCã®æªæ¥ã«ã€ããŠã¯ããã®æ®åçãšå¹çæ§ããèŠãŠãåŒãç¶ãéèŠãªäœçœ®ãå ãããšèããããŸããç¹ã«Webéçºã«ãããŠã¯ããã®æå¹æ§ãèªèãããåºãå©çšãããããšãäºæ³ãããŸãã
ãã ãããœãããŠã§ã¢éçºã¯åžžã«é²åããæ°ããªèšèšãã¿ãŒã³ãçŸããå¯èœæ§ããããŸãããã®äžã§ããã¬ãŒã ã¯ãŒã¯MVCã®èãæ¹ã¯ããŒã¹ãšãªããæ°ããªãã¿ãŒã³ã®æ§ç¯ã«ãå¯äžãããšèããããŸãã
ãŸããæ©èœãæè¡ã®é²åã«å¯Ÿå¿ãããã¬ãŒã ã¯ãŒã¯ã®é²åãéèŠãªãã€ã³ããšãªããŸããäŸãã°ããªã¢ã«ã¿ã€ã éä¿¡ã容æã«ããWebSocketã®å©çšã«ãã£ãŠãMVCã®ã³ã³ãããŒã©éšåã®åœ¹å²ãå¢å€§ãããªã©ãæè¡ã®é²æ©ã«äŒŽãMVCãã¬ãŒã ã¯ãŒã¯ãé²åããŠãããšäºæ³ãããŸãã
5.4 ãã¬ãŒã ã¯ãŒã¯MVCãžã®æ¥çã®åå¿
æ¥çã®åå¿ãšããŠã¯ã倧æµã®å€§èŠæš¡éçºã§ã¯ãã¬ãŒã ã¯ãŒã¯MVCãæšæºçãªæ¹æ³ãšããŠæ¡çšãããŠããŸãããã¬ãŒã ã¯ãŒã¯MVCã䜿ã£ãéçºã¯ãããéããããå¹ççãªçµæãçããããçŸåšã®é«éãªããžãã¹ç°å¢ã«é©å¿ããŠããŸãã
ãã®äžæ¹ã§ãäŒæ¥ã«ãã£ãŠã¯èªç€Ÿã®èŠä»¶ã«åãããç¬èªã®èšèšãã¿ãŒã³ãéçºããæ¡çšããŠãããšããããããŸãããããããããã¯ç¹äŸã§ããããã¬ãŒã ã¯ãŒã¯MVCã倧ããªç¯å²ã§åºãåãå ¥ããããŠããããšã«å€ãããããŸããã
çµå±ã®ãšããããœãããŠã§ã¢éçºã®å¹çãšå質ã¯ãèšèšã«ãããæ確ãªæéãšãªããã¬ãŒã ã¯ãŒã¯ã®ååšã倧ãã圱é¿ããŠããŸãããã®ãããæ¥çãšããŠããã¬ãŒã ã¯ãŒã¯MVCã®å©çšãšé²åãæ¯æããŠãããšèšããã§ãããã
6. ç·æ¬
ãã®èšäºã§ã¯ããã¬ãŒã ã¯ãŒã¯ã®MVCãšããéèŠãªã³ã³ã»ããã«ã€ããŠè©³çŽ°ã«è§£èª¬ããŠããŸããã以äžã§ã¯ããããŸã§ã®æ å ±ãæããŠå šäœããŸãšããŸãã
6.1 ãã¬ãŒã ã¯ãŒã¯ãšMVCã®éèŠæ§ã®å確èª
ãã¬ãŒã ã¯ãŒã¯ãšã¯ãã¢ããªã±ãŒã·ã§ã³ãå¹ççã«éçºããããã®ãã³ãã¬ãŒããè£å©ããŒã«ã®éãŸãã§ããäžæ¹ãMVCïŒModel-View-ControllerïŒã¯ããã¬ãŒã ã¯ãŒã¯ã®äžã§ããæ¡çšãããèšèšãã¿ãŒã³ã®äžã€ã§ãã¢ããªã±ãŒã·ã§ã³ã®æ§é ãæ確ã«ããããããšãããšãã«åºåãããããã®åœ¹å²ã«ãªããŸãã
ãããã¯ãã¢ããªã±ãŒã·ã§ã³éçºã容æã«ããåéšåã®ç¬ç«æ§ãé«ãããããä¿®æ£ãæ¡åŒµã容æã«è¡ããŸãããã®ãããããããç解ã掻çšããããšã¯ãå¹ççãªãœãããŠã§ã¢éçºãè¡ãäžã§äžå¯æ¬ ã§ãã
ãã®éèŠæ§ãç解ãå確èªããããšã§ããã¬ãŒã ã¯ãŒã¯MVCã«å¯Ÿããç解ãæ·±ãŸããæ矩ããåŠã³ãšãªã£ãããšã§ãããã
6.2 ãã¬ãŒã ã¯ãŒã¯MVCã®ãã¹ããã©ã¯ãã£ã¹ãšæ³šæç¹
ãã¬ãŒã ã¯ãŒã¯MVCã®ãã¹ããã©ã¯ãã£ã¹ã«ã€ããŠã觊ããŸãããåé¢ã®ååãå¿ å®ã«å®ããã¢ãžã¥ã©ãŒãªèšèšãå¿æããããšãåºæ¬çãªã«ãŒã«ã§ããäžæ¹ãæ £ããªããã¡ã¯èª€è§£ãçããããModelãšControllerã®äœ¿ãåãã«ã¯æ³šæãå¿ èŠã§ãã
ãŸãããã¬ãŒã ã¯ãŒã¯ãMVCã®èšèšãã¿ãŒã³ãé©çšããããšã§ãéçºè ãäºã決ãŸã£ãã«ãŒã«ã«æ²¿ã£ãŠããã°ã©ãã³ã°ãããããã«ãŒã«ãç¡èŠããããšãªãäžè²«æ§ãä¿ã€ããšãå¯èœã§ãã
ããããå šãŠãããžãã£ããªé¢ã ãã§ã¯ãªãããšãèŠããŠããã¹ãã§ããæã ã«ãŒã«ãç解ããã«ãã é©çšããã ããšãªããšãããã¯ãã ã®éå°ãªèŠå¶ã«ãªã£ãŠããŸããŸãããã®ãã©ã³ã¹ãèŠã€ããããšãéèŠã§ãã
6.3 ãã¬ãŒã ã¯ãŒã¯MVCãåŠã¶ããã®ãªãœãŒã¹
èªå·±åŠç¿ãéèŠã§ãããããã«ç解ãæ·±ããããã«ã¯ãå®éã«ãã¬ãŒã ã¯ãŒã¯MVCã䜿ãããŠãããµã³ãã«ãããžã§ã¯ããèŠãŠã¿ããšè¯ãã§ãããããŸããGitHubãªã©ã®éçºè ã³ãã¥ããã£ãè±å¯ãªæ å ±æºãšãªããŸãã
æžç±ãæçãªãªãœãŒã¹ãšãªããŸããäŸãã°ããMVCãã¬ãŒã ã¯ãŒã¯å ¥éããããããžã§ã¯ãã§äœ¿ããMVCãã¬ãŒã ã¯ãŒã¯ããšãã£ãããŒããæ·±æãããæžç±ãæ§ã ã«åºçãããŠããŸãã
æåŸã«ãç¶ç¶çãªåŠç¿ãšå®è·µã«ãã£ãŠãæãå¹æçãªçµæãåŸãããŸããçæéã§çµæãæ±ãããçå®ã«ã¹ãã«ãåäžãããŠãããŸãããã
6.4 ãŸãšã
ãã®èšäºã§ã¯ããã¬ãŒã ã¯ãŒã¯ã®MVCãšãã®éèŠæ§ã«ã€ããŠè§£èª¬ãããã®ãã¹ããã©ã¯ãã£ã¹ãšæ³šæç¹ãåŠã³ãŸããããŸããããã«ã¹ãã«ã磚ãããã®ãªãœãŒã¹ã«ã€ããŠã玹ä»ããŸããã
ãã®ç¥èãåºã«ããã質ã®é«ããœãããŠã§ã¢éçºã«åãçµãããšãã§ããã¯ãã§ããæåŸã«ãåŠã³ã¯çµããã®ãªãæ ã§ãããšããç¹ãå¿ããªãã§ãã ããããã®èšäºããã®æ ã®äžéšãšãªããã ããªãæçãªãã®ãšãªãããšãé¡ããŸãã
æåŸã«ããã¬ãŒã ã¯ãŒã¯MVCã¯çŽ æŽãããæŠå¿µã§ããããããç解ããããšã§ãæã ã®ãœãããŠã§ã¢éçºã¹ãã«ã¯å€§ããåé²ããŸããä»åŸãåŠã³ãæ·±ããæ°ããªç¥èãæ¢æ±ããŠãããŸãããã