MVCããã³MVVMãã¿ãŒã³
ãã®èšäºã§ã¯ãMVCããã³MVVMãã¿ãŒã³ãã©ã®ããã«æ©èœãããã«ã€ããŠã¯è©³ãã説æããŸãããä»åŸå¿ èŠãšãªãèŠç¹ã®ã¿ããäŒãããŸãã
MVCãšMVVMã®äž»ãªéãã¯ãæåã®ã³ã³ãããŒã©ãŒããã¥ãŒãšã¢ãã«ã®äž¡æ¹ãèªèããŠããå Žåããã¥ãŒãã¢ãã«ã«ã€ããŠèªèã§ããããšãèš±å¯ãããŠããããšã§ãã
MVVMãã¿ãŒã³ã§ã¯ãã¬ã€ã€ãŒéã®é¢ä¿ã匱ããªããŸããViewã¯ViewModelãšViewModelã®ã¿ã®ã¢ãã«ã®ã¿ãèªèããŸãããã¥ãŒã¯ãDataContexåç §ãä»ããŠViewModelããããŒã¿ãåãåããŸãã
MVVMãã¿ãŒã³ã¯ãCïŒã§ã®WPFéçºçšã«èšèšãããŠããŸãããããã圌ã®ã¢ã€ãã¢ã¯ABAPã«ãé©çšã§ããŸãã
ABAPã§ã®MVCã®åé¡
MVCãå®è£ ããå ŽåãååãšããŠãModelã¯ã©ã¹ã¯ã°ããŒãã«å®çŸ©ã«åã蟌ãŸããViewã¯ã©ã¹ãšControllerã¯ã©ã¹ã¯ããŒã«ã«å®çŸ©ã«åã蟌ãŸããŸããããŒã«ã«ã¯ã©ã¹ã®äœ¿çšã¯ãGUIèŠçŽ ãšå¯Ÿè©±ããå¿ èŠãããããã§ããéèŠãªã®ã¯ãABAPã¯ã©ã¹ã§æ¬æ ŒçãªGUIãæ§ç¯ããããšã¯äžå¯èœã§ãããšããããšã§ããViewã¯ã©ã¹ã§ã¯ãGUIã圢æããããã®æ©èœïŒCL_SALV_TABLEãREUSE_ALV_GRID_DISPLAYãªã©ïŒã䜿çšã§ããŸãããããã ãã§ã¯äžååã§ããæå®€ã§GUIã¹ããŒã¿ã¹ãããããŒãç»é¢ãPBOãPAIãäœæããããšã¯ã§ããŸããã
ããŒã«ã«ãã¥ãŒãšã³ã³ãããŒã©ãŒã«ã¯ãããã€ãã®æ¬ ç¹ããããŸãã
- ãã¥ãŒãšã³ã³ãããŒã©ãŒã¯ãéžæç»é¢ã®ãã¹ãŠã®ã°ããŒãã«å€æ°ãšãã©ã¡ãŒã¿ãŒã«ã¢ã¯ã»ã¹ã§ããŸãã
- PBO PAI Controller View ( ALV) View ( ALV). View, Controller, View Controller. , .. , Low Coupling.
MVVM ABAP MVA
ABAPã§MVVMãå©çšããã¬ã€ã€ãŒãããç¬ç«ãããããšæããæ¬¡ã®éçºãã¿ãŒã³ãèªåã§å®çŸ©ããŸããã
MVVMãçŽç²ãªåœ¢åŒã§ABAPã«å®è£ ããããšã¯äžå¯èœã§ãããããViewModelã䜿çšããããšã¯å®å šã«ã¯æ£ãããããŸããããããã£ãŠãViewModelãšControllerã®ä»£ããã«Applicationã䜿çšããŸãã
è«çåé¢ã®ååã¯ãMVVMã®ååã«äŒŒãŠããŸãããã¥ãŒã¯ãŠãŒã¶ãŒã³ãã³ããã¢ããªã±ãŒã·ã§ã³ã«æž¡ããã¢ããªã±ãŒã·ã§ã³ã¯ã¢ãã«ã«äœçšããŸãããã£ãŒãããã¯ã¯ãããŸããã
ABAPã¢ããªã±ãŒã·ã§ã³ã®æ©èœã¯ããŠãŒã¶ãŒã®æäœåŸã«ã®ã¿ãã¥ãŒãæŽæ°ã§ããããšã§ããäžéšã®éåæããã»ã¹ã§ã¢ãã«ã倿Žãããå Žåã§ãããã¥ãŒã®æŽæ°ãéå§ããããšã¯ã§ããŸããããã®æ©èœã䜿çšãããšãã¢ãã«ãšãã¥ãŒã®é¢ä¿ã匱ãããã¥ãŒãæŽæ°ããæ©èœããã¥ãŒèªäœã«å§ä»»ã§ããŸããèšãæããã°ãã¢ã€ãã¢èªäœãããã€æŽæ°ãããããã€æŽæ°ããªãããæ±ºå®ããå¿ èŠããããŸãã
MVAã³ã³ã»ãã
MVAã®å®è£ ã¯ããªããžã§ã¯ãæåã®ã¢ãããŒãã«åºã¥ããŠãããã¢ãŒããã¯ãã£ã®åã¬ã€ã€ãŒã«1ã€ä»¥äžã®ã¯ã©ã¹ãå®è£ ãããŸããåã¬ã€ã€ãŒã«ã¯ããã€ãã®ããããã£ããããŸãã
ãã¥ãŒïŒãã¥ãŒããã³IViewïŒïŒ
- MVAã¯ãIViewãã¥ãŒã®æœè±¡åã§æ©èœããŸãããã¹ãŠã®Viewã¯ã©ã¹ã«ã¯ãIViewå®è£ ãå«ãŸããŠããå¿ èŠããããŸãã
- IViewã«ã¯ãã¢ãã«ãšã®å¯Ÿè©±ãå¿ èŠãªã€ãã³ããå«ãŸããŠããŸã
- IViewã«ã¯ãã³ã³ããã¹ãïŒãŠãŒã¶ãŒã«è¡šç€ºããå¿ èŠãããã¢ãã«ããŒã¿ãžã®ãªã³ã¯ïŒãå«ãŸããŠããŸã
- ãã¥ãŒã«ã¯ãã¢ãã«ãšã®å¯Ÿè©±ãå¿ èŠãšããªãããžãã¹ããžãã¯ãå«ããããšãã§ããŸããããšãã°ãALVããã«ãŠã³ã¿ãŒããŒãã£ã«ãŒããžã®ãã©ãŒã«ãå®è£ ããå Žåããã®ããžãã¯ã¯ãã¥ãŒã«é©çšãããŸãã
- Viewã«ã¯ãViewã¯ã©ã¹ã«é¢é£ä»ããããŠãã颿°ã®ã°ã«ãŒãã«GUIèŠçŽ ãå«ãŸããŠããŸãã
å¿çšïŒ
- ãã¥ãŒãšã¢ãã«ã®ãã€ã³ãã£ã³ã°ãšããŠæ©èœããã¢ããªã±ãŒã·ã§ã³ãžã®ãšã³ããªãã€ã³ãã§ãã
- èµ·ååºæºïŒã¢ããªã±ãŒã·ã§ã³ãèµ·åãããã©ã¡ãŒã¿ãŒã決å®ããäžé£ã®ãã©ã¡ãŒã¿ãŒïŒããããŸãããããã¯éåžžãéžæç»é¢ã®ãã©ã¡ãŒã¿ãŒã§ãã
- ã¢ããªã±ãŒã·ã§ã³åºæºã¯ãã¢ãã«ãšãã¬ãŒã³ããŒã·ã§ã³ã®åºæºã§æ§æãããŸããããšãã°ãéžæç»é¢ã§æçš¿æ¥ãå ¥åããPDFãŸãã¯ALVã¬ããŒãåºåãã©ã°ãæå®ããå¿ èŠãããå Žåãæçš¿æ¥ã¯ã¢ãã«åºæºãåç §ããPDFããã³ALVãã©ã°ã¯è¡šç€ºåºæºãåç §ããŸãã
- èµ·ååºæºã¯ã¢ããªã±ãŒã·ã§ã³èšèšè ã«æž¡ãããŸããã¢ããªã±ãŒã·ã§ã³ã¯ãã¢ãã«ãšãã¥ãŒãäœæãããã¥ãŒã€ãã³ãããµãã¹ã¯ã©ã€ããããã¥ãŒã³ã³ããã¹ããã¢ãã«ã«ãã€ã³ãããŸãã
ã¢ãã«ïŒ
- ãã¥ãŒã«å¿ èŠãªãããªãã¯å±æ§ãå«ãŸããŠããŸãã
- ã¢ãã«ã®èšç®åºæºãšåæåæ¹æ³ãå«ãŸããŠããŸãã
MVAã®å®è£
ãããªã¢ã«ãããŒã¬ããŒãã®äŸã䜿çšããŠãMVAã®å®è£ ã«ã€ããŠèããŠã¿ãŸããããããŒã¿æŽæ°ãã¿ã³ã¯ãã¢ãã«ãšã®å¯Ÿè©±ãšããŠäœ¿çšãããŸãã
ã¯ã©ã¹å³ã¯æ¬¡ã®ããã«ãªããŸãã
ã¢ãã«ãã¢ãã«èšèšè ã¯ãããŒã¿éžæåºæºãå ¥åãšããŠåãåããŸãããã®ã¯ã©ã¹ã«ã¯ãããŒã¿ãåæåããã³æŽæ°ããããã®ã¡ãœãããšã衚瀺ããããŒã¿ãå«ã屿§ããããŸãã
IViewããã¥ãŒã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯ãã³ã³ããã¹ãã®èšå®ããã¥ãŒãã€ãã³ãã®è¡šç€ºãããã³ã³ã³ããã¹ãã¿ã€ãã®å®çŸ©ã®ããã®ã¡ãœãããå«ãŸããŠããŸãã
IViewã«ã¯ã³ã³ããã¹ãæ§é ã®èª¬æãå«ãŸããŠãããæ§é ãã£ãŒã«ãã¯åç §ãã¥ãŒã§ããå¿ èŠããã
ãŸãããã¥ãŒã¯IViewã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããŸããããã«ããã¹ãŠã®ãŠãŒã¶ãŒã€ãã³ãã¯Viewã¯ã©ã¹ã«ãã£ãŠç»é²ãããã¢ããªã±ãŒã·ã§ã³ã§åŠçããå¿ èŠãããã€ãã³ãã®ã¿ãçºçãããŸããã€ãã³ããã©ã¡ãŒã¿ã§ã¯ããã¥ãŒããå¿ èŠãªãã¹ãŠã®ããŒã¿ïŒããšãã°ã匷調衚瀺ãããALVè¡ïŒãæž¡ãå¿ èŠããããŸãã
ALVãã¥ãŒã§ã®Viewã¯ã©ã¹ã®
å®è£ ãã®å®è£ ã§ã¯ãGUIã¹ããŒã¿ã¹ãå®çŸ©ããå¿ èŠããããŸãããã®ããã«ãFMãäœæããCL_SALV_TABLEã€ã³ã¹ã¿ã³ã¹
ã«æ¥ç¶ããŸãããã¹ãŠã®UIã€ãã³ãããã¥ãŒã«ãã£ãŠåä¿¡ããïŒãã®å Žåã¯ON_USER_COMMANDãä»ããŠïŒãå¿ èŠã«å¿ããŠããã¥ãŒãã¢ããªã±ãŒã·ã§ã³ã®RAISEEVENTãäœæããããšãéèŠã§ãããã®ã¢ãããŒãã«ããããã¥ãŒãšã¢ããªã±ãŒã·ã§ã³ãããç¬ç«ããŸãã
å¿çšãã¢ããªã±ãŒã·ã§ã³ãã¶ã€ãã¯ãã¢ããªã±ãŒã·ã§ã³åºæºïŒéžæç»é¢ãã©ã¡ãŒã¿ïŒãå ¥åãšããŠåãåããã¢ãã«ãšãã¥ãŒãã€ã³ã¹ã¿ã³ã¹åãããã¥ãŒã€ãã³ãããµãã¹ã¯ã©ã€ããããã¥ãŒã³ã³ããã¹ããã¢ãã«ã«ãã€ã³ãããŸããã³ã³ã¹ãã©ã¯ã¿ãŒã¯ãã¢ããªã±ãŒã·ã§ã³ããã¥ãŒã«ã€ããŠç¥ã£ãŠããå¯äžã®å Žæã§ããã¢ããªã±ãŒã·ã§ã³ã«ã¯ãããã°ã©ã ãéå§ããRUNã¡ãœãããå«ãŸããŠããŸããã¢ããªã±ãŒã·ã§ã³ã®éå§ã¯ãäºåå®çŸ©ãããç»é¢ãã©ã¡ãŒã¿ãŒã䜿çšãããã©ã³ã¶ã¯ã·ã§ã³ã®éå§ãšæ¯èŒã§ããŸããããã«ãããSUBMITãªãã§ä»ã®ããã°ã©ã ãã䜿çšã§ããããã«ãªããŸãã
ã¢ããªã±ãŒã·ã§ã³ãèµ·åããŸããçŸåšãã¢ããªã±ãŒã·ã§ã³ãèµ·åããããã°ã©ã ãäœæããŠããŸãã
ããã§ãã¢ããªã±ãŒã·ã§ã³ã®æºåãæŽããŸãããçµæãèŠãããšãã§ããŸãã
ãã¥ãŒåŽã®ããžãã¹ããžãã¯ãã¢ãã«ãšã³ã³ãããŒã©ãŒãåŒã³åºãå¿ èŠã®ãªãã€ãã³ãã¯ããã¥ãŒèªäœã§åŠçã§ããŸãã
ããšãã°ãMATNRãããã«ã¯ãªãã¯ããŠMM03ãéãããå Žåããã®ããžãã¯ã®åŠçã¯ãã¥ãŒåŽã§å®è¡ã§ããŸãã
ãã®ããžãã¯ã¯ãèæ ®äºé ã«åºã¥ããŠãã¥ãŒã¬ãã«ã«ç§»åãããŸãã远å ããŒã¿ã®ããã«ã¢ãã«ãã¢ãã¬ã¹æå®ããå¿ èŠã¯ãããŸãããããžãã¯ã¯ALVã«ã®ã¿é©çšãããŸããExcelãŸãã¯PDFã®åœ¢åŒã§Viewãå®è£ ãããŠããå Žåããã®ã€ãã³ãã¯åŠçã§ããŸããã§ããã
åç §
ABAPãªããžã§ã¯ãã®èšèšãã¿ãŒã³
åå¿è åãã®ãã¿ãŒã³ïŒMVC vs MVP vs MVVM
ABAPã®ã¢ãŒããã¯ãã£ãã¿ãŒã³ïŒMVCãMVPãMVVMãMVA