Model-View-ViewModel (MVVM) ã¯ããŠãŒã¶ãŒ ã€ã³ã¿ãŒãã§ã€ã¹ (UI) éçºãç¹ã«ã¢ãã€ã« ã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ããã¹ãã«ãããé¢å¿ã®åé¢ãç°¡çŽ åããã³åŒ·åããããã«å°å ¥ããããœãããŠã§ã¢ ã¢ãŒããã¯ã㣠ãã¿ãŒã³ã§ããããã¯ãModel-View-Controller (MVC) ãã¿ãŒã³ã®æ¡åŒµã§ãããè€é㪠UI ã·ããªãªãåŠçãããšãã« MVC ãçŽé¢ããå¶éã®äžéšã«å¯ŸåŠããããšãç®çãšããŠããŸãã MVVM ã¯ãéçºè ãã¢ããªã±ãŒã·ã§ã³ã®è€éãã管çããã¡ã³ããã³ã¹ãç°¡çŽ åããã®ã«åœ¹ç«ã€ãããã¯ãªãŒã³ã§ã¢ãžã¥ãŒã«åããããã¹ãå¯èœãªã¢ãŒããã¯ãã£ãæšé²ããŸãã
MVVM ã«ã¯ã次㮠3 ã€ã®äž»èŠãªã³ã³ããŒãã³ãããããŸãã
- ã¢ãã«: ã¢ããªã±ãŒã·ã§ã³ã®ããŒã¿ãšããžãã¹ ããžãã¯ã衚ããŸããã¢ãã«ã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ãšãããŒã¿ã®æäœã«å¿ èŠãªããŒã¿åŠçãŸãã¯æ€èšŒããžãã¯ãæ ŒçŽãããŸãããã®ã³ã³ããŒãã³ã㯠UI ããç¬ç«ããŠãããéåžžã¯ããŒã¿ããŒã¹ãRESTful APIããã®ä»ã®ãããã¯ãŒã¯ ãµãŒãã¹ãªã©ã®å€éšã·ã¹ãã ãšå¯Ÿè©±ããŸãã
- ãã¥ãŒ: ã¢ããªã±ãŒã·ã§ã³ã®èŠèŠç衚çŸãšãŠãŒã¶ãŒ ã€ã³ã¿ã©ã¯ã·ã§ã³å±€ã衚ããŸããã¢ãã«ã®ããŒã¿ããŠãŒã¶ãŒã«è¡šç€ºãããŠãŒã¶ãŒå ¥åãåãåããViewModel ãšéä¿¡ããŠããŒã¿ãæäœããŸãããã¥ãŒã¯éåžžãå¿çæ§ãé«ãé åçãªãŠãŒã¶ãŒ ãšã¯ã¹ããªãšã³ã¹ãæäŸãããã¿ã³ãããã¹ã ãã£ãŒã«ããã©ãã«ãªã©ã®èŠçŽ ã§æ§æãããŸãã
- ViewModel: ãã¥ãŒãšã¢ãã«ã®éã®ä»²ä»è ãšããŠæ©èœããŸãããã¥ãŒã«å¿ èŠãªããŒã¿ãšã³ãã³ããå ¬éãããŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ã«å¿çããå¿ èŠã«å¿ããŠã¢ãã«ãæŽæ°ãã責任ããããŸãã ViewModel ã¯ãã¢ãã«ã®ããŒã¿ãšæäœã®è€éããæœè±¡åãããã¥ãŒãæäœããããã®ããã·ã³ãã«ã§çŠç¹ãçµã£ãæ§é ãæç€ºããŸããã³ã³ãããŒã©ãŒããã¥ãŒãçŽæ¥æäœã§ãã MVC ãã¿ãŒã³ãšã¯ç°ãªããViewModel ã¯ç¹å®ã® View èŠçŽ ãžã®çŽæ¥åç §ãäŸåé¢ä¿ãæããªããããæè»æ§ãšåå©çšæ§ãåäžããŸãã
MVVM ã®éèŠãªåŽé¢ã® 1 ã€ã¯ãView ãš ViewModel ã®éã§åæ¹åã®ããŒã¿ ãã€ã³ãã£ã³ã°ã確ç«ã§ããããšã§ãããã®ããŒã¿ ãã€ã³ãã£ã³ã°æ¥ç¶ã¯ãViewModel ã§ã®å€æŽã View ã«èªåçã«åæ ãããããšããŸãã¯ãã®éã確å®ã«è¡ãã®ã«åœ¹ç«ã¡ãŸããããã«ãããViewModel 㯠UI ã³ã³ããŒãã³ããšçŽæ¥å¯Ÿè©±ããããšãªãããŒã¿ã View ãšåæã§ããããã«ãªããView ãš ViewModel ã®éã®çµåãå€§å¹ ã«è»œæžãããŸãã
MVVM ãã¿ãŒã³ãå®è£ ãããšã次ã®ãããªããã€ãã®ç¹ã§ã¢ãã€ã« ã¢ããªã±ãŒã·ã§ã³éçºã«å€§ããªã¡ãªãããåŸãããŸãã
- ä¿å®æ§: MVVM ã¯ãæžå¿µäºé ãåé¢ããã³ã³ããŒãã³ãéã®äŸåé¢ä¿ãæžããããšã«ãããããã¢ãžã¥ãŒã«åãããçè§£ããããã³ãŒãããŒã¹ãå¯èœã«ãããã®çµæãã³ãŒãã®ä¿å®ã容æã«ãªããæ°ããããŒã ã¡ã³ããŒãããè¿ éã«å°å ¥ã§ããããã«ãªããŸãã
- ãã¹ãå®¹ææ§: View ãš ViewModel ãåé¢ãããŠãããããViewModel ã«ã¯ View ãžã®çŽæ¥åç §ãå«ãŸããŠããªããããããç°¡åãªåäœãã¹ããå¯èœã«ãªããŸããããã«ãããããå ç¢ã§ãšã©ãŒã®ãªãã¢ããªã±ãŒã·ã§ã³ãä¿é²ãããŸãã
- åå©çšæ§: ViewModel ã¯ããã©ãããã©ãŒã åºæã®äŸåé¢ä¿ããªããããè€æ°ã®ãã¥ãŒéãããã«ã¯ç°ãªããã©ãããã©ãŒã éã§åå©çšã§ããŸããããã«ãããéçºæéãççž®ãããã¢ããªã±ãŒã·ã§ã³éã®äžè²«æ§ãåäžããŸãã
- ã¹ã±ãŒã©ããªãã£: MVVM ã®ã¢ãžã¥ã©ãŒ ã¢ãŒããã¯ãã£ã¯ãæ¢åã®ã¢ããªã±ãŒã·ã§ã³æ§é ãšæ©èœãžã®åœ±é¿ãæå°éã«æããªãããã¢ããªã±ãŒã·ã§ã³èŠä»¶ã®å°æ¥ã®æé·ãšå€åã«å¯Ÿå¿ããã®ã«åœ¹ç«ã¡ãŸãã
Android ã® Jetpack ã iOS ã®SwiftUIãªã©ãããã€ãã®äººæ°ã®ããã¢ãã€ã« ã¢ã㪠ãã¬ãŒã ã¯ãŒã¯ãšã©ã€ãã©ãªã¯ MVVM ã¢ãŒããã¯ãã£ãæ¡çšããŠãããéçºè ãã¢ããªã±ãŒã·ã§ã³ã« MVVM ãã¿ãŒã³ãå¹ççã«å®è£ ã§ããããã«ããããã®çµã¿èŸŒã¿ãµããŒããæäŸããŠããŸãã
AppMasterã®no-codeãã©ãããã©ãŒã ã¯ãMVVM ããã³ãã®ä»ã®ã¢ãŒããã¯ã㣠ãã¿ãŒã³ã®ãã¹ã ãã©ã¯ãã£ã¹ãã«ãã»ã«åããã¢ãã€ã«ãWebãããã³ããã¯ãšã³ã ã¢ããªã±ãŒã·ã§ã³ã«ã·ãŒã ã¬ã¹ã§è¿ éãªéçºãšã¯ã¹ããªãšã³ã¹ãæäŸããŸããããŒã¿ ã¢ããªã³ã°ãããžãã¹ ããžãã¯èšèšãUI äœæçšã®ããžã¥ã¢ã« ããŒã«ã䜿çšãããšã顧客㯠MVVM ååã«æºæ ããé«è² è·ããã³ãšã³ã¿ãŒãã©ã€ãº ãŠãŒã¹ã±ãŒã¹ã«å¯Ÿå¿ããããã«æ¡åŒµã§ããã¢ããªã±ãŒã·ã§ã³ãèšèšããã³æ§ç¯ã§ããŸãã AppMasterã䜿çšãããšãããã©ãŒãã³ã¹ãä¿å®æ§ãæ¡åŒµæ§ãç ç²ã«ããããšãªãããµãŒã㌠ããã¯ãšã³ããWeb ã¢ããªã±ãŒã·ã§ã³ãAndroid ããã³ iOS çšã®ãã€ãã£ã ã¢ãã€ã« ã¢ããªã±ãŒã·ã§ã³ãåããå æ¬çãªãœãããŠã§ã¢ ãœãªã¥ãŒã·ã§ã³ãçæããã³ãããã€ã§ããŸãã