äŸåé¢ä¿ã®æ¿å ¥ (DI) ã¯ãææ°ã®ãœãããŠã§ã¢ ã¢ãŒããã¯ãã£ãšèšèšãã¿ãŒã³ã®ç¹åŸŽã§ãããã³ã³ããŒãã³ãã®åé¢ãä¿é²ããã¢ããªã±ãŒã·ã§ã³ã®ä¿å®æ§ããã¹ãå®¹ææ§ãããã³ã¢ãžã¥ãŒã«æ§ã匷åããŸãããœãããŠã§ã¢ ãšã³ãžãã¢ãªã³ã°ã®æèã§ã¯ãäŸåé¢ä¿ãšã¯ããœãããŠã§ã¢ ã³ã³ããŒãã³ããŸãã¯ã¢ãžã¥ãŒã«ãããã®æå³ãããæ©èœãæããããã«å¥ã®ã³ãŒãã«äŸåããããšãæããŸãããããã£ãŠãäŸåé¢ä¿ã®æ³šå ¥ã¯ãã³ã³ããŒãã³ãã«äŸåé¢ä¿ãç¬èªã«äœæãŸãã¯æ€åºãããã®ã§ã¯ãªãããœãããŠã§ã¢ ã³ã³ããŒãã³ãã®äŸåé¢ä¿ããœãããŠã§ã¢ ã³ã³ããŒãã³ãã«æäŸããææ³ã§ãããã®ã¢ãããŒãã¯ãå¶åŸ¡ã®å転 (IoC) ãã¿ãŒã³ã®äžæ žååã«æºæ ããŠãããäŸåé¢ä¿ç®¡çã®è²¬ä»»ã DI ã³ã³ãããŒãŸãã¯äŸåé¢ä¿æ³šå ¥ãã¬ãŒã ã¯ãŒã¯ãšåŒã°ããå€éšãšã³ãã£ãã£ã«å§è²ããŸãã
ãã®å€éšãšã³ãã£ãã£ã¯åºæ¬çã«ããœãããŠã§ã¢ ã³ã³ããŒãã³ããšãã®äŸåé¢ä¿ã®éã®ä»²ä»è ãšããŠæ©èœãããããéçºè ã¯äŸåé¢ä¿ç®¡çã®è€éããæœè±¡åããªããã³ã³ããŒãã³ãã®ã³ã¢æ©èœã«éäžã§ããããã«ãªããŸããäŸåé¢ä¿æ³šå ¥ã®äœ¿çšã¯ãã¢ããªã·ã㯠ã¢ããªã±ãŒã·ã§ã³ãã忣ãã€ã¯ããµãŒãã¹ ãšã³ã·ã¹ãã ã«è³ããŸã§ãããŸããŸãªã¢ãŒããã¯ãã£ããã³èšèšãã¿ãŒã³ãæã€å¹ åºããœãããŠã§ã¢ ã¢ããªã±ãŒã·ã§ã³ã§æå©ã§ããããšã蚌æãããŠããŸãã
å®éã®äŸåé¢ä¿æ³šå ¥ã®äž»ãªäŸã¯ã AppMasterno-codeãã©ãããã©ãŒã ã§ããããã«ããããŠãŒã¶ãŒã¯ããŒã¿ ã¢ãã«ãããžãã¹ ããã»ã¹ãAPI ãèŠèŠçã«èšèšããããšã§ãæŽç·Žãããããã¯ãšã³ããWebãããã³ã¢ãã€ã« ã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãã AppMasterãã©ãããã©ãŒã ã¯ãäŸåé¢ä¿æ³šå ¥ã¡ã«ããºã ãæ¡çšããŠãçæãããã¢ããªã±ãŒã·ã§ã³ã®ããŸããŸãªã³ã³ããŒãã³ãéã®çžäºäŸåé¢ä¿ã管çããŸãããã®ã¢ãããŒãã¯ãæŽæ°ããããã«ãŒããªã³ããšèšèšä»æ§ã«åºã¥ããŠã¢ããªã±ãŒã·ã§ã³ããŒãããäžè²«ããŠåçæããããšã§ãéçºãªãŒã ã¿ã€ã ãççž®ããã¢ããªã±ãŒã·ã§ã³ã®å°å ¥ãåçåããå šäœçãªå¹çãé«ããæè¡çè² åµãæé€ããŸãã
äŸåé¢ä¿ã®æ³šå ¥ã¯ãã³ã³ã¹ãã©ã¯ã¿ãŒã®æ³šå ¥ãã»ãã¿ãŒã®æ³šå ¥ãã€ã³ã¿ãŒãã§ã€ã¹ã®æ³šå ¥ãªã©ãããŸããŸãªæ¹æ³ã§å®è£ ã§ããŸããããããã®ã¢ãããŒãã«ã¯é·æãšçæããããŸããããããã®å ±éç¹ã¯ãã¢ããªã±ãŒã·ã§ã³å ã§æžå¿µäºé ãæç¢ºã«åé¢ããŠãããšããç®æšã§ãããã®æç¢ºãªåé¢ã«ãããè€éãªãœãããŠã§ã¢ ã·ã¹ãã ã§ã®åå©çšæ§ãã¢ãžã¥ãŒã«æ§ãããã³ãã¹ãã®å®¹æããä¿é²ãããŸãã
ããšãã°ãã³ã³ã¹ãã©ã¯ã¿ãŒã®æ³šå ¥ã«ã¯ãäŸåé¢ä¿ãäŸåã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãŒãä»ããŠæž¡ãããšãå«ãŸããããããªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹åããã»ã¹äžã«äŸåé¢ä¿ã確å®ã«æ³šå ¥ãããŸãããã®ã¡ãœããã¯ããªããžã§ã¯ããæå³ããæ©èœã®å®è¡ãéå§ããåã«ãåžžã«å¿ èŠãªäŸåé¢ä¿ãååŸããããšãä¿èšŒããŸãããã®ã¢ãããŒãã¯ãJavaãC#ãKotlin ãªã©ã®èšèªã§ç¹ã«äººæ°ãããããªããžã§ã¯ãæåãã©ãã€ã ãšåŒ·åãªåæå®ã·ã¹ãã ã«ãããéçºè ã¯äŸåé¢ä¿ã®ã€ã³ã¹ã¿ã³ã¹åãšãªããžã§ã¯ãã®ã©ã€ããµã€ã¯ã«ããã詳现ã«å¶åŸ¡ã§ããŸãã
äžæ¹ãã»ãã¿ãŒæ³šå ¥ã«ã¯ãã»ãã¿ãŒ ã¡ãœãããŸãã¯ããããã£ãä»ããäŸåé¢ä¿ã®æ³šå ¥ãå«ãŸããŸãããã®ã¢ãããŒãã«ããããªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹ååŸã§ãäŸåé¢ä¿ã倿Žã§ããããã«ãªãããªããžã§ã¯ãã®æè»æ§ãšé©å¿æ§ãåäžããŸãããã ãããªããžã§ã¯ãã®ã©ã€ããµã€ã¯ã«äžã«æœåšçãªå¯äœçšãäžäžèŽãçºçãããªã¹ã¯ã¯ãæ éã«ç®¡çãã軜æžããå¿ èŠããããŸãã Setter ã€ã³ãžã§ã¯ã·ã§ã³ã¯äžè¬ã«ãå®è¡æã«ã³ã³ããŒãã³ãããªãã·ã§ã³ã§æ¡åŒµãŸãã¯å€æŽã§ãããã¬ãŒã ã¯ãŒã¯ ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ãŸãã¯å€§èŠæš¡ã·ã¹ãã ã«å°å ¥ãããŸãã
ã€ã³ã¿ãŒãã§ã€ã¹ã®æ³šå ¥ã¯ãããã»ã©äžè¬çã§ã¯ãããŸããããäŸåé¢ä¿ãæ³šå ¥ããããã®å¥ã®ã€ã³ã¿ãŒãã§ã€ã¹ã®äœ¿çšã䌎ããäŸåé¢ä¿ã¯äŸåã¯ã©ã¹ã«ãã£ãŠå®è£ ãããŸãããã®ã¢ãããŒãã«ãããäŸåã¯ã©ã¹ãšãã®äŸåé¢ä¿ã®éã®å³å¯ãªå¥çŽã®ç¢ºç«ã容æã«ãªãããªããžã§ã¯ãã®äŸåé¢ä¿ã®ããæç€ºçãªè¡šçŸãä¿é²ãããŸãããã ããäžéšã®éçºç°å¢ã§ã¯ãè€éããšåé·æ§ã®å¢å€§ãæ¬ ç¹ãšã¿ãªãããå ŽåããããŸãã
Spring (Java)ã.NET Core (C#)ãAngular (TypeScript) ãªã©ã®å€ãã®äžè¬çãªãœãããŠã§ã¢ ãã¬ãŒã ã¯ãŒã¯ã«ã¯ãäŸåé¢ä¿æ³šå ¥ãµããŒããçµã¿èŸŒãŸããŠãããããéçºè 㯠DI ãã¢ããªã±ãŒã·ã§ã³ã«ç°¡åã«çµ±åã§ããŸãããããã®ãã¬ãŒã ã¯ãŒã¯ã¯ãäŸåé¢ä¿ã®ã€ã³ã¹ã¿ã³ã¹åã管çãç Žæ£ãèªåçã«åŠçãã DI ã³ã³ãããŒãŸãã¯äŸåé¢ä¿æ³šå ¥ãã¬ãŒã ã¯ãŒã¯ãæäŸããŸããããã«ãããäŸåé¢ä¿ç®¡çããã»ã¹å šäœãç°¡çŽ åãããçµåãã³ãŒãã®åé·æ§ã®å¯èœæ§ã軜æžãããŸãã
èŠçŽãããšãäŸåé¢ä¿ã®æ³šå ¥ã¯ãœãããŠã§ã¢ ãšã³ãžãã¢ãªã³ã°ã«ããã匷åãªã¢ãŒããã¯ãã£ããã³èšèšãã¿ãŒã³ã§ãããã³ã³ããŒãã³ãã®åé¢ãå¯èœã«ããä¿å®æ§ãšãã¹ãå®¹ææ§ã匷åããã¢ãžã¥ãŒã«åã¢ããªã±ãŒã·ã§ã³æ§é ã匷å¶ããŸããäŸåé¢ä¿æ³šå ¥ã¯ãæžå¿µäºé ã®æç¢ºãªåé¢ãä¿é²ããããšã§ãè€éãªäŸåé¢ä¿ç®¡çãç°¡çŽ åããæé©ãªãœãããŠã§ã¢ã®æè»æ§ãšé©å¿æ§ã確ä¿ããããšã§éçºè ã«å©çããããããŸãã AppMasterãã©ãããã©ãŒã ã¯ãæè¡çè² åµãæå°éã«æããªãããå®å šã«æ©èœãä¿å®å¯èœãªã¢ããªã±ãŒã·ã§ã³ãçæããããšã«ãããäŸåé¢ä¿æ³šå ¥ã®æå¹æ§ãå®èšŒããŸããããã¯ãæ¥éã«é²åãããœãããŠã§ã¢ç°å¢ã§éå¶ãããŠããäŒæ¥ãäŒæ¥ã«ãšã£ãŠäžå¯æ¬ ã§ãã