ã€ã³ã¹ãã¬ãŒã·ã§ã³ã®æº
ãã®æçš¿ã¯ããžã¥ãã¢ããã°ã©ãåãã®ã¬ããŒãã«é¢ãã
Aras Prantskevichusã«ããæè¿ã®å
¬éã®çµæãšããŠ
çãŸããŸããã æ°ããECSã¢ãŒããã¯ãã£ã«é©å¿ããæ¹æ³ã«ã€ããŠèª¬æããŸãã Arasã¯éåžžã®ãã¿ãŒã³ïŒ
以äžã®èª¬æ ïŒã«åŸããŸãïŒã²ã©ãOOPã³ãŒãã®äŸã瀺ãããªã¬ãŒã·ã§ãã«ã¢ãã«ãåªãã代æ¿ãœãªã¥ãŒã·ã§ã³ã§ããããšã瀺ããŸãïŒ
ãã ã ããªã¬ãŒã·ã§ãã«ã¢ãã«ã§ã¯
ãªããECSããšåŒã³ãŸã ïŒã Arasãæ¹å€ããããšã¯æ±ºããŠãããŸãããç§ã¯åœŒã®äœåã®å€§ãã¡ã³ã§ããã圌ã®åªãããã¬ãŒã³ããŒã·ã§ã³ã称è³ããŠããŸãïŒ ã€ã³ã¿ãŒãããããã®ECSã«é¢ããä»ã®äœçŸãã®æçš¿ã®ä»£ããã«åœŒã®ãã¬ãŒã³ããŒã·ã§ã³ãéžãã ã®ã¯ã圌ãäœåãªåªåãããŠããã¬ãŒã³ããŒã·ã§ã³ãšäžŠè¡ããŠç 究ã®ããã«gitãªããžããªãå
¬éããããã§ãã ããŸããŸãªã¢ãŒããã¯ãã£ãœãªã¥ãŒã·ã§ã³ã®éžæã®äŸãšããŠäœ¿çšãããå°ããªã·ã³ãã«ãªãã²ãŒã ããå«ãŸããŠããŸãã ãã®å°ããªãããžã§ã¯ãã«ãããç¹å®ã®çŽ æã«é¢ããã³ã¡ã³ãã瀺ãããšãã§ããŸãããããããšããArasïŒ
Arasã®ã¹ã©ã€ãã¯ã
http ïŒ
//aras-p.info/texts/files/2018Academy-ECS-DoD.pdfã§å
¥æã§ã
ãŸã ãã³ãŒãã¯githubïŒ
https :
//github.com/aras-p/dod-playgroundã«ãããŸã ã
ãã®ã¬ããŒãããåŸãããECSã¢ãŒããã¯ãã£ãïŒãŸã ïŒïŒåæããã€ããã¯ãããŸããããæåãããäžæ£ãªOOPãã³ãŒãïŒè©°ã蟌ã¿ããªãã¯ã«äŒŒãŠããŸãïŒã«çŠç¹ãåœãŠãŸãã OODã®ååïŒãªããžã§ã¯ãæåèšèšããªããžã§ã¯ãæåèšèšïŒã®ãã¹ãŠã®éåãæ£ããä¿®æ£ãããå Žåãå®éã«ã©ã®ããã«èŠãããã瀺ããŸãã
ãã¿ãã¬ïŒãã¹ãŠã®OODéåãæé€ãããšãArasããECSãžã®å€æãšåæ§ã«ããã©ãŒãã³ã¹ãåäžããŸãããŸããECSããŒãžã§ã³ãããRAMãå°ãªããå¿
èŠãªã³ãŒãè¡ãå°ãªããªããŸããTL; DRïŒOOPãåžã蟌ãŸããŠECSãæ瞊ããããšçµè«ä»ããåã«ãäžæåæ¢ããŠOODã調ã¹ãŠïŒOOPãæ£ãã䜿çšããæ¹æ³ãç¥ãïŒããªã¬ãŒã·ã§ãã«ã¢ãã«ãç解ããïŒECSãæ£ããé©çšããæ¹æ³ãç¥ãïŒç§ã¯ãã®ã¢ãã«ãå¥ã®çšèªãšããŠååšããã«å€ãããšã¯æããªãããïŒ
ã¹ãã€ã©ãŒïŒããã¯åãªããªã¬ãŒã·ã§ãã«ã¢ãã«ã®ã¢ãããã¯ããŒãžã§ã³ã§ã ïŒããŸãããã©ãŒã©ã ã§ECSã«é¢ããå€ãã®è°è«ã«é·ãéåå ããŠããŸãã ECSãã¿ãŒã³ã宣äŒããã»ãŒ
ãã¹ãŠã®æçš¿ããã¬ãŒã³ããŒã·ã§ã³ããŸãã¯èšäºã¯ã次ã®æ§é ã«åŸããŸãã
- ã²ã©ãOOPã³ãŒãã®äŸã瀺ããŸãããã®å®è£
ã«ã¯ãç¶æ¿ã®éå°ãªäœ¿çšã«ããã²ã©ãæ¬ é¥ããããŸãïŒã€ãŸãããã®å®è£
ã¯OODã®å€ãã®ååã«éåããŠããŸãïŒã
- æ§æãç¶æ¿ãããåªãããœãªã¥ãŒã·ã§ã³ã§ããããšã瀺ãããïŒãããŠãOODãå®éã«åãã¬ãã¹ã³ãæäŸããããšã¯èšããŸã§ããããŸããïŒã
- ãªã¬ãŒã·ã§ãã«ã¢ãã«ãã²ãŒã ã«æé©ã§ããããšã瀺ããŸãïŒãã ãããECSããšåŒã³ãŸãïŒã
ïŒAïŒããã¯ãè©°ã蟌ã¿ãã®ããªãã¯ã§ã...ãœãããšãŠã©ãŒã ïŒæªãã³ãŒããšè¯ãã³ãŒãïŒãæ¯èŒããŸã...ãããŠãããã¯æå³ããã«è¡ãããæ°ããã¢ãŒããã¯ãã£ãè¯ãããšã瀺ãå¿
èŠããªãå Žåã§ãäžå
¬å¹³ã§ãã ãããŠãããã«éèŠãªããšïŒ
ïŒBïŒå¯äœçšããããŸã-ãã®ãããªã¢ãããŒãã¯ç¥èãæå¶ããèªè
ãåäžçŽã«ããã£ãŠè¡ãããç 究ã«äžæ³šæã«åæ©ä»ããŠããŸããŸãã ãªã¬ãŒã·ã§ãã«ã¢ãã«ã¯ã1960幎代ã«åããŠäœæãããŸããã 70幎代ãš80幎代ãéããŠããã®ã¢ãã«ã¯å€§å¹
ã«æ¹åãããŸããã åå¿è
ã«ã¯ã
ãã®ããŒã¿ãã©ã®ã¯ã©ã¹ã«å
¥ãããã§ããïŒ ããªã©ã®è³ªåããããã
ãŸã ããŸããããã«å¿çããŠãã
çµéšãç©ãã ãã§å
å¿ãç解ããã ã ããªã©ããããŸããªããšãããèšãã
ãŸã ...å匷ããäžè¬çãªã±ãŒã¹ã§ã¯æ£åŒãªçããæšæž¬ãããŸããã ããã¯ã
ããŒã¿ããŒã¹ã®æ£èŠåãšåŒã°ã
ãŸã ã æ¢åã®ç 究ãç Žæ£ããECSããŸã£ããæ°ããææ°ã®ãœãªã¥ãŒã·ã§ã³ãšåŒã¶ããšã§ããã®ç¥èãåå¿è
ããé ãããšãã§ããŸãã
ãªããžã§ã¯ãæåããã°ã©ãã³ã°ã®åºæ¬ã¯ããã以åã§ã¯ãªãã«ããŠããããªãåã«èšå®ãããŸããïŒ
ãã®ã¹ã¿ã€ã«ã¯ã1950幎代ã®ç 究ã§æ¢ç©¶ããå§ããŸãã ïŒïŒ ãããããªããžã§ã¯ãæåãæµè¡ããå£ã³ãã§åºãŸããããã«æ¯é
çãªããã°ã©ãã³ã°ãã©ãã€ã ã«ãªã£ãã®ã¯ã1990幎代ã®ããšã§ãã JavaãïŒ
æšæºåããŒãžã§ã³ ïŒC ++ãå«ãå€ãã®æ°ããOOèšèªã®äººæ°ãççºçã«é«ãŸã£ãŠããŸãã ããããããã¯èªå€§å®£äŒã«ãããã®ã ã£ããããå±¥æŽæžã«æžãããã«èª°ã
ããã®æåãªæŠå¿µ
ãç¥ã
å¿
èŠããããŸããããå®éã«ã¯ã»ãã®å°æ°ããå
¥ã£ãŠããŸããã§ããã ãããã®æ°ããèšèªã¯ããªããžã§ã¯ãæåã®å€ãã®æ©èœããããŒã¯ãŒãã
class ã
virtual ã
extends ã
implementsãäœæããŸããããã®ããããªããžã§ã¯ãæåã2ã€ã®ç¬ç«ãããšã³ãã£ãã£ã«åå²ãããç¬èªã®ç掻ãéã£ãŠããŸãã
ãããã®ãªããžã§ã¯ãæåã®èšèªæ©èœã®äœ¿çšãã
OOP ããšåŒã³ããªããžã§ã¯ãæåã®èšèš/ã¢ãŒããã¯ãã£æè¡ã®äœ¿çšãã
OOD ããšåŒã³ãŸãã ãã¹ãŠãããã«OOPãåãäžããŸããã æè²æ©é¢ã«ã¯ãæ°ããOOPããã°ã©ããçŒãOOã³ãŒã¹ããããŸãããOODã®ç¥èã¯é
ããŠããŸãã
OOPã®èšèªæ©èœã䜿çšããŠããããOODèšèšã®ååã«åŸã£ãŠããªã
ã³ãŒãã¯ãOOã³ãŒãã§ã¯
ãªããš
èããŠããŸã ã OOPã«å¯Ÿããã»ãšãã©ã®æ¹å€ã§ã¯ãããšãã°ã¬ããã³ãŒãã䜿çšããŠããŸãããããã¯å®éã«ã¯OOã³ãŒãã§ã¯ãããŸããã
OOPã³ãŒãã¯éåžžã«è©å€ãæªããç¹ã«OOPã³ãŒãã®ã»ãšãã©ã¯OODã®ååã«åŸã£ãŠããªãããããçã®ãOOã³ãŒãã§ã¯ãããŸããã
èæ¯
åè¿°ã®ããã«ã1990幎代ã¯ãOOã®æµè¡ãã®ããŒã¯ã«ãªãããã®æç¹ã§ãäžè¯OOPããããããææªã§ããã ãã®æç¹ã§OOPãåŠãã å ŽåããOOPã®4ã€ã®æ±ãã«ã€ããŠç¥ã£ãŠããå¯èœæ§ãé«ãã§ãããã
- æœè±¡å
- ã«ãã»ã«å
- å€å
- ç¶æ¿
ç§ã¯ãããã4ã€ã®æ±ã§ã¯ãªããã4ã€ã®OOPããŒã«ããšåŒã¶ããšã奜ã¿ãŸãã ãããã¯ãåé¡ã解決ããããã«äœ¿çš
ã§ããããŒã«
ã§ã ã ãã ããããŒã«ãã©ã®ããã«æ©èœããããç¥ãã ãã§ã¯ååã§ã¯ãããŸããããã€äœ¿çšããããç¥ãå¿
èŠããããŸããæåž«ã«ãšã£ãŠãæ°ããããŒã«ã人ã
ã«æããããšã¯ç¡è²¬ä»»ã§ãã 2000幎代åæã«ã¯ããããã®ããŒã«ã®ç©æ¥µçãªèª€çšãã€ãŸãOODæèã®äžçš®ã®ã第2ã®æ³¢ãã«å¯ŸããæµæããããŸããã ãã®çµæã
SOLIDããŒã¢ããã¯ãåºçŸããŸãããããã«ãããã¢ãŒããã¯ãã£ã®é·æãè¿
éã«è©äŸ¡ã§ããŸãã ãã®ç¥æµã¯å®éã«ã¯90幎代ã«åºãŸã£ããããŸã 5ã€ã®åºæ¬ååãšããŠä¿®æ£ã§ããããã«ããã¯ãŒã«ãªé åèªããŸã åãåã£ãŠããªãããšã«æ³šæãã¹ãã§ã...
- å¯äžã®è²¬ä»»ã®åå ïŒ S責任ã®ååïŒã åã¯ã©ã¹ã«ã¯ãå€æŽã®çç±ã1ã€ã ãå«ããå¿
èŠããããŸãã ã¯ã©ã¹ãAãã«2ã€ã®è²¬ä»»ãããå Žåãã¯ã©ã¹ãBãããã³ãCããäœæããŠãããããåå¥ã«åŠçãããBãããã³ãCããããAããäœæããå¿
èŠããããŸãã
- éæŸæ§/ééæ§ã®åå ïŒ Oãã³/ééæ§ååïŒã ãœãããŠã§ã¢ã¯æéãšãšãã«å€åããŸãïŒ ã€ãŸãããã®ãµããŒãã¯éèŠã§ã ïŒã å®è£
ïŒ ã€ãŸããç¹å®ã®ã¯ã©ã¹ ïŒ ã§æãå€æŽãããå¯èœæ§ãé«ãéšåãé
眮ããå€æŽãããå¯èœæ§ãäœãéšåïŒ ããšãã°ãæœè±¡åºæ¬ã¯ã©ã¹ ïŒã«åºã¥ããŠã€ã³ã¿ãŒãã§ã€ã¹ãäœæããŠãã ããã
- ããŒãã©ã»ãªã¹ã³ãã®ä»£çšåç ïŒ Lã€ã¹ã³ã代çšåçïŒã ã€ã³ã¿ãŒãã§ãŒã¹ã®åå®è£
ã¯ããã®ã€ã³ã¿ãŒãã§ãŒã¹ã®èŠä»¶ã100ïŒ
æºããå¿
èŠããããŸãã ã€ã³ã¿ãŒãã§ã€ã¹ã§åäœããã¢ã«ãŽãªãºã ã¯ãã©ã®å®è£
ã§ãåäœããã¯ãã§ãã
- ã€ã³ã¿ãŒãã§ãŒã¹ã®åé¢ã®åçïŒ ã€ã³ã¿ãŒãã§ã€ã¹åé¢ã®åçïŒã ããšãã°ãã³ãŒãã®åéšåãã³ãŒãããŒã¹ã®æå°éããèªèãããŠãäžèŠãªäŸåé¢ä¿ãåé¿ããããã«ãã€ã³ã¿ãŒãã§ã€ã¹ãã§ããã ãå°ããããŸãã ãã®ãã³ãã¯ãC ++ã«ã圹ç«ã¡ãŸããC++ã§ã¯ãåŸããªããšã³ã³ãã€ã«æéãèšå€§ã«ãªããŸãã
- äŸåé¢ä¿ã®å転ã®åçïŒäŸåæ§å転ã®åçïŒã çŽæ¥éä¿¡ããïŒããã³çžäºã«äŸåããïŒ2ã€ã®ç¹å®ã®å®è£
ã®ä»£ããã«ãéåžžããããã®éä¿¡ã€ã³ã¿ãŒãã§ã€ã¹ã3çªç®ã®ã¯ã©ã¹ãšããŠåœ¢åŒåãããããã®éã®ã€ã³ã¿ãŒãã§ã€ã¹ãšããŠäœ¿çšããããšã§åé¢ã§ããŸãã ãããã®éã§äœ¿çšãããã¡ãœããã®åŒã³åºããå®çŸ©ããæœè±¡åºæ¬ã¯ã©ã¹ããŸãã¯ãããã®éã§è»¢éãããããŒã¿ãå®çŸ©ããPODæ§é ã§ãããããŸãã
- å¥ã®ååã¯é åèªSOLIDã«ã¯å«ãŸããŠããŸããããããã¯éåžžã«éèŠã§ãããšç¢ºä¿¡ããŠããŸãã ãç¶æ¿ãããæ§æãåªå
ããã ïŒè€ååå©çšã®ååïŒã æ§æã¯ããã©ã«ãã§æ£ããéžæã§ã ã 絶察ã«å¿
èŠãªå Žåã«ã¯ãç¶æ¿ãæ®ãå¿
èŠããããŸãã
ãããã£ãŠãSOLID-CïŒ++ïŒãååŸããŸã

以äžã§ã¯ããããã®ååãåç
§ããããããé åèªãšåŒã³ãŸã-SRPãOCPãLSPãISPãDIPãCRP ...
ããã«ããã€ãã®ã¡ã¢ïŒ
- OODã§ã¯ã ã€ã³ã¿ãŒãã§ã€ã¹ãšå®è£
ã®æŠå¿µãç¹å®ã®OOPããŒã¯ãŒãã«çµã³ä»ããããšã¯ã§ããŸããã C ++ã§ã¯ã æœè±¡åºåºã¯ã©ã¹ãšä»®æ³é¢æ°ã䜿çšããŠã€ã³ã¿ãŒãã§ã€ã¹ãäœæãã å®è£
ããããã®åºåºã¯ã©ã¹ããç¶æ¿ããããšããããããŸãããããã¯ã€ã³ã¿ãŒãã§ã€ã¹ã®ååãå®è£
ããç¹å®ã®æ¹æ³ã®1ã€ã«ãããŸããã C ++ã§ã¯ã PIMPL ã äžéæãã€ã³ã¿ãŒ ã ããã¯ã¿ã€ãã³ã° ãtypedefãªã©ã䜿çšããããšãã§ããŸããOODæ§é ãäœæããŠãCã«å®è£
ã§ããŸãããã®èšèªã«ã¯ãOOPèšèªããŒã¯ãŒãã¯ãŸã£ãããããŸããã ãããã£ãŠã ã€ã³ã¿ãŒãã§ã€ã¹ã«ã€ããŠè©±ããšããå¿
ãããä»®æ³æ©èœãæå³ããããã§ã¯ãããŸããã å®è£
ãé ãåçã«ã€ããŠè©±ããŠããã®ã§ãã ã€ã³ã¿ãŒãã§ãŒã¹ã¯ ããªã¢ãŒãã£ãã¯ã§ããå ŽåããããŸãããå€ãã®å Žåããã§ã¯ãããŸããïŒ å€æ
æ§ãæ£ãã䜿çšãããããšã¯ã»ãšãã©ãããŸããããã€ã³ã¿ãŒãã§ã€ã¹ã¯ãã¹ãŠã®ãœãããŠã§ã¢ã®åºæ¬æŠå¿µã§ãã
- äžèšã§æããã«ããããã«ãããã¯ã©ã¹ããå¥ã®ã¯ã©ã¹ã«éä¿¡ããããã®ããŒã¿ãåã«æ ŒçŽããPODæ§é ãäœæããå Žåããã®æ§é ã¯ã€ã³ã¿ãŒãã§ã€ã¹ãšããŠäœ¿çšãããŸã -ããã¯ããŒã¿ã®æ£åŒãªèª¬æã§ã ã
- ãããªãã¯éšåãšãã©ã€ããŒãéšåãæã€1ã€ã®å¥åã®ã¯ã©ã¹ãäœæããã ãã§ããå
±ééšåã«ãããã®ã¯ãã¹ãŠã€ã³ã¿ãŒãã§ãŒã¹ã§ããããã©ã€ããŒãéšåã«ãããã®ã¯ãã¹ãŠå®è£
ã§ãã
- ç¶æ¿ã«ã¯ãå®éã«ã¯ïŒå°ãªããšãïŒ2ã€ã®ã¿ã€ãããããŸããã€ã³ã¿ãŒãã§ã€ã¹ã®ç¶æ¿ãšå®è£
ã®ç¶æ¿ã§ãã
- C ++ã§ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ã®ç¶æ¿ã«ã¯ãçŽç²ä»®æ³é¢æ°ãPIMPLãæ¡ä»¶ä»ãtypedefãå«ãæœè±¡åºæ¬ã¯ã©ã¹ãå«ãŸããŸãã Javaã§ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ã®ç¶æ¿ã¯implementsããŒã¯ãŒãã§è¡šãããŸãã
- C ++ã§ã¯ãåºæ¬ã¯ã©ã¹ã«çŽç²ãªä»®æ³é¢æ°ä»¥å€ã®ãã®ãå«ãŸãããã³ã«ãå®è£
ã®ç¶æ¿ãçºçããŸãã Javaã§ã¯ãå®è£
ã®ç¶æ¿ã¯extendsããŒã¯ãŒãã䜿çšããŠè¡šãããŸãã
- OODã«ã¯ã€ã³ã¿ãŒãã§ã€ã¹ãç¶æ¿ããããã®å€ãã®ã«ãŒã«ããããŸãããéåžžãå®è£
ã®ç¶æ¿ã¯ãäžå£ã³ãŒãããšèŠãªã䟡å€ããããŸã ã
ãããŠæåŸã«ãã²ã©ãOOPãã¬ãŒãã³ã°ã®äŸãšããããå®éã®ç掻ã§æªãã³ãŒãïŒããã³OOPã®æªãè©å€ïŒã«ã©ã®ããã«ã€ãªãããã瀺ãå¿
èŠããããŸãã
- éå±€/ç¶æ¿ãæãããããšããããªãã¯åæ§ã®ã¿ã¹ã¯ãäžãããããããããŸããïŒ åŠçãšã¹ã¿ããã®ãã£ã¬ã¯ããªãå«ã倧åŠã®ã¢ããªã±ãŒã·ã§ã³ããããšä»®å®ããŸãã åºæ¬ã¯ã©ã¹PersonãäœæããŠãããPersonããç¶æ¿ããã¯ã©ã¹Studentãšã¯ã©ã¹Staffãäœæã§ããŸãã
ããããããããã ããã§ç§ã¯ããªããæ¢ããŸãã LSPååã®æé»ã®å«æã¯ã ã¯ã©ã¹éå±€ãšããããåŠçããã¢ã«ãŽãªãºã ãå
±ççã§ãããšããããšã§ãã ãããã¯ããã°ã©ã å
šäœã®ååã§ãã OOPã¯æç¶ãåããã°ã©ãã³ã°ã®æ¡åŒµã§ãããäž»ã«ãããã®æé ã«é¢é£ä»ããããŠããŸãã åŠçãšã¹ã¿ããã§åäœããã¢ã«ãŽãªãºã ã®çš®é¡ïŒ ããã³ããªã¢ãŒãã£ãºã ã«ããç°¡çŽ åãããã¢ã«ãŽãªãºã ïŒãããããªãå Žåãã¯ã©ã¹éå±€ã®æ§é ã®äœæãéå§ããããšã¯å®å
šã«ç¡è²¬ä»»ã§ãã æåã«ãã¢ã«ãŽãªãºã ãšããŒã¿ãç¥ãå¿
èŠããããŸãã - éå±€/ç¶æ¿ãæãããããšããããããåæ§ã®ã¿ã¹ã¯ãäžããããã§ãããïŒ å³åœ¢ã®ã¯ã©ã¹ããããšããŸãããã ãµãã¯ã©ã¹ãšããŠæ£æ¹åœ¢ãšé·æ¹åœ¢ããããŸãã æ£æ¹åœ¢ã¯é·æ¹åœ¢ããé·æ¹åœ¢ã¯æ£æ¹åœ¢ãïŒ
ããã¯å®éã«ã¯ãå®è£
ã®ç¶æ¿ãšã€ã³ã¿ãŒãã§ã€ã¹ã®ç¶æ¿ã®éãã瀺ãè¯ãäŸã§ãã
TL; DR-OOPã¯ã©ã¹ã¯ç¶æ¿ãã©ã®ãããªãã®ããæããŠãããŸããã æ¬ èœããŠããOODã¯ã©ã¹ã¯ã99ïŒ
ã®æé䜿çšããªãããã«æ瀺ããŠããã¯ãã§ãïŒ
ãšã³ãã£ãã£/ã³ã³ããŒãã³ãã®æŠå¿µ
åææ¡ä»¶ãåŠçããã®ã§ãArasãå§ãŸã£ãå Žæããããããå
žåçãªOOPãã®åºçºç¹ã«ç§»ããŸãããã
ããããæå§ãã«ãã1ã€è¿œå ããŸããArasã¯ãã®ã³ãŒãããåŸæ¥ã®OOPããšåŒãã§ããŸããããã«å察ããããšæããŸãã ãã®ã³ãŒãã¯ãå®éã®OOPã®å
žåçãªäŸã§ãããäžèšã®äŸã®ããã«ãOOã®ããããçš®é¡ã®åºæ¬ååã«éåããŠãããããåŸæ¥ã®ã³ãŒããšã¯èŠãªãããŸããã
圌ãECSã«åããŠæ§é ã
äœãçŽãåã«ãæåã®ã³ãããããå§ããŸãã
ãWindowsã§åã³åäœãããã3529f232510c95f53112bbfff87df6bbc6aa1fae
ã¯ããããã«100è¡ã®ã³ãŒããç解ããã®ã¯é£ããã®ã§ãå°ããã€å§ããŸãããã90幎代ã®ã²ãŒã ã§ã¯ãã³ãŒãã®åå©çšã®åé¡ããã¹ãŠè§£æ±ºããããã«ç¶æ¿ã䜿çšããããšãäžè¬çã§ããã ãšã³ãã£ãã£ãæ¡åŒµå¯èœãªãã£ã©ã¯ã¿ãŒãæ¡åŒµå¯èœãªãã¬ãŒã€ãŒãã¢ã³ã¹ã¿ãŒãªã©ããããŸãã...ããã¯ãåè¿°ã®å®è£
ã®ç¶æ¿ã§ãïŒ
ããã§ãŒã¯ã®ããã³ãŒãã ïŒãããããå§ããã®ãæ£ããããã§ãããçµæãšããŠæè»æ§ã®ãªãã³ãŒãããŒã¹ã OODã«ã¯ãäžèšã®ãç¶æ¿ã«å¯Ÿããæ§æãã®ååãããããã§ãã ãã®ããã2000幎代ã«ã¯ããç¶æ¿ã«å¯Ÿããæ§æãã®ååãäžè¬çã«ãªããã²ãŒã éçºè
ã¯åæ§ã®ã³ãŒããèšè¿°ãå§ããŸããã
ãã®ã³ãŒãã¯äœãããŸããïŒ ãããªã

èŠããã«ã
ãã®ã³ãŒãã¯ãèšèªã®æ¢åã®æ©èœãåå®è£
ããŸã-æ§æã¯ãèšèªã®æ©èœãšããŠã§ã¯ãªããå®è¡æã©ã€ãã©ãªãšããŠã§ãã ã³ãŒããå®éã«C ++ãšãã®ã¡ã¿èšèªãå®è¡ããä»®æ³ãã·ã³ïŒVMïŒã®äžã«æ°ããã¡ã¿èšèªãäœæãããã®ããã«æ³åã§ããŸãã Arasãã¢ã²ãŒã ã§ã¯ããã®ã³ãŒãã¯å¿
èŠãããŸããïŒ
ããã«å®å
šã«åé€ããŸãïŒ ïŒãããŠãã²ãŒã ã®ããã©ãŒãã³ã¹ãçŽ10åäœäžãããã ãã§ãã
ãããã圌ã¯å®éã«äœãããŠããŸããïŒ ããã¯ã
E ntity /
C omponent systemãïŒ
äœããã®çç±ã§ã E ntity / C omponent systemããšåŒã°ããããšããããŸã ïŒã®æŠå¿µã§ãããã
E ntity
C omponent
S ystem "ïŒ" entity-component-system "ïŒïŒ
æãããªçç±ã«ããããEntity C omponent S ystem systemsããšåŒã°ããããšã¯ãããŸãã ãïŒãECãã®ããã€ãã®ååã圢åŒåã
ãŸã ã
- ã²ãŒã ã¯ãããšã³ãã£ãã£ãïŒããšã³ãã£ãã£ãïŒïŒ ãã®äŸã§ã¯ GameObjects ãšåŒã°ãã ïŒã®æ©èœãæããªãããšããæ§ç¯ãããŸãããã®æ©èœã¯ãã³ã³ããŒãã³ããïŒãã³ã³ããŒãã³ããïŒã§æ§æãããŸãã
- GameObjects ã¯ããµãŒãã¹ãã±ãŒã¿ãŒããã¿ãŒã³ãå®è£
ããŸã -åã³ã³ããŒãã³ãã¯ã¿ã€ãããšã«ç
§äŒãããŸãã
- ã³ã³ããŒãã³ãã¯ãã©ã®GameObjectãå±ããŠããããç¥ã£ãŠããŸã-芪GameObjectãç
§äŒããããšã§ãåãã¬ãã«ã«ããã³ã³ããŒãã³ããèŠã€ããããšãã§ããŸãã
- ã³ã³ããžã·ã§ã³ã®æ·±ãã¯1ã¬ãã«ã®ã¿ã§ãïŒ ã³ã³ããŒãã³ãã«ç¬èªã®åã³ã³ããŒãã³ããå«ããããšã¯ã§ããŸãããGameObjectã«ã¯åGameObjectsãå«ããããšã¯ã§ããŸãã ïŒã
- GameObjectã¯ãåã¿ã€ãã®ã³ã³ããŒãã³ãã1ã€ã ãæã€ããšãã§ããŸãïŒ äžéšã®ãã¬ãŒã ã¯ãŒã¯ã§ã¯ããã¯å¿
é èŠä»¶ã§ãããä»ã®ã³ã³ããŒãã³ãã§ã¯ããã§ã¯ãããŸãã ïŒã
- åã³ã³ããŒãã³ãã¯ïŒããããïŒæéã®çµéãšãšãã«äžç¹å®ã®æ¹æ³ã§å€åãããããã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯ãä»®æ³ç¡å¹æŽæ°ããå«ãŸããŸãã
- GameObjectã¯ããã¹ãŠã®GameObjectïŒããã³ãã¹ãŠã®ã³ã³ããŒãã³ãïŒã§ã¯ãšãªãå®è¡ã§ããã·ãŒã³ã«å±ããŸãã
åæ§ã®æŠå¿µã¯2000幎代ã«éåžžã«äººæ°ãããããã®å¶éã«ãããããããåœæãä»æ¥ãç¡æ°ã®ã²ãŒã ãäœæããã®ã«ååãªæè»æ§ãããããšãå€æããŸããã
ãã ããããã¯å¿
é ã§ã¯ãããŸããã ããªãã®ããã°ã©ãã³ã°èšèªã¯ãèšèªã®æ©èœãšããŠãã§ã«æ§æããµããŒãããŠããŸã-è¥å€§åããæŠå¿µã«ã¢ã¯ã»ã¹ããå¿
èŠã¯ãããŸãã...ãªããããã®æŠå¿µãååšããã®ã§ããïŒ æ£çŽã«èšããšã
å®è¡æã«åçãªæ§æãå®è¡ã§ããŸã ã ã³ãŒãã§GameObjectã¿ã€ããããŒãå®çŸ©ãã代ããã«ãããŒã¿ãã¡ã€ã«ããããããããŒãã§ããŸãã ã²ãŒã /ã¬ãã«ãã¶ã€ããŒãç¬èªã®ã¿ã€ãã®ãªããžã§ã¯ããäœæã§ããã®ã§ãããã¯éåžžã«äŸ¿å©ã§ã...ããããã»ãšãã©ã®ã²ãŒã ãããžã§ã¯ãã§ã¯ããã¶ã€ããŒã¯éåžžã«å°ãªããæåéãããã°ã©ããŒå
šäœãããã®ã§ãããã¯éèŠãªæ©äŒã§ãããšäž»åŒµããŸãã ããã«æªãããšã«ãããã¯å®è¡æã«ã³ã³ããžã·ã§ã³ãå®è£
ã§ããå¯äžã®æ¹æ³ã§ã¯ãããŸããïŒ ããšãã°ãUnityã¯ãã¹ã¯ãªããèšèªããšããŠCïŒã䜿çšããä»ã®å€ãã®ã²ãŒã ã¯ãã®ä»£æ¿æ段ã䜿çšããŸããããšãã°ãLua-ãã¶ã€ããŒã«ãšã£ãŠäŸ¿å©ãªããŒã«ã¯ããã®ãããªè¥å€§åããæŠå¿µãå¿
èŠãšããã«æ°ããã²ãŒã ãªããžã§ã¯ããå®çŸ©ããããã®CïŒ/ Luaã³ãŒããçæã§ããŸãïŒ æ¬¡ã®æçš¿ã§ãã®ãæ©èœããå床远å ããããã©ãŒãã³ã¹ã10åäœäžããªãããã«ããŸã...
OODã«åŸã£ãŠãã®ã³ãŒããè©äŸ¡ããŠã¿ãŸãããã
- GameObject :: GetComponentã¯dynamic_castã䜿çšããŸãã ã»ãšãã©ã®äººã¯ãdynamic_castã¯ããã§ãŒã¯ã®ããã³ãŒããã§ãããã©ããã«ãã°ãããããšã瀺ã倧ããªãã³ãã ãšèšãã§ãããã ç§ã¯ãããèšãã§ããã-ããã¯ããªããLSPã«éåãã蚌æ ã§ã-ããªãã¯ããŒã¹ã€ã³ã¿ãŒãã§ã€ã¹ã§åäœããäœããã®çš®é¡ã®ã¢ã«ãŽãªãºã ãæã£ãŠããŸãããç°ãªãå®è£
ã®è©³çŽ°ãç¥ãå¿
èŠããããŸãã ãã®ç¹å®ã®çç±ã«ãããã³ãŒãã®èããããŸãã
- GameObjectã¯ãããµãŒãã¹ãã±ãŒã¿ãŒããã³ãã¬ãŒããå®è£
ããŠãããšæ³åããã°ãååãšããŠæªãã¯ãããŸããããOODã®èŠ³ç¹ããæ¹å€ãããå
ã«é²ããšããã®ãã³ãã¬ãŒãã¯ãããžã§ã¯ãã®éšåéã®æé»çãªæ¥ç¶ãäœæããïŒ ãŠã£ãããã£ã¢ãžã®ãªã³ã¯ãªãã§ç§ã¯ã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ã®ç¥èãæã£ãŠããŸã ïŒãæé»ã®ã³ãã¥ãã±ãŒã·ã§ã³ãã£ãã«ã¯ã¢ã³ããã¿ãŒã³ã§ãããæ瀺çãªã³ãã¥ãã±ãŒã·ã§ã³ãã£ãã«ã奜ãã¯ãã§ãã åãè°è«ã¯ãã²ãŒã ã§æã
䜿çšãããè¥å€§åãããã€ãã³ãã®ã³ã³ã»ãããã«ãåœãŠã¯ãŸããŸã...
- ã€ã³ã¿ãŒãã§ãŒã¹ïŒ ä»®æ³ãã€ãã®æŽæ°ïŒæéïŒ ïŒãåºããããããã³ã³ããŒãã³ããSRPã«éåããŠãããšè¿°ã¹ãããšæããŸãã ã²ãŒã éçºã§ã®ãä»®æ³ç¡å¹ã¢ããããŒããã®äœ¿çšã¯ããããšããã«ãããŸãããã¢ã³ããã¿ãŒã³ã§ãããšãèšããŸãã åªãããœãããŠã§ã¢ã¯ãå¶åŸ¡ãããŒãšããŒã¿ãããŒã«ã€ããŠç°¡åã«èããããšãã§ããã¯ãã§ãã ã²ãŒã ãã¬ã€ã³ãŒãã®åèŠçŽ ã ãä»®æ³ãã€ãã¢ããããŒããã³ãŒã«ã®èåŸã«é
眮ãããšãå¶åŸ¡ã¹ããªãŒã ãšããŒã¿ã¹ããªãŒã ãå®å
šã«é£èªåãããŸãã ç§èŠã é·è·é¢ å¹æãšãåŒã°ããç®ã«èŠããªãå¯äœçšã¯ ããã°ã®æãäžè¬çãªåå ã®äžéšã§ããããä»®æ³ãã€ãæŽæ°ãã¯ã»ãšãã©ãã¹ãŠãç®ã«èŠããªãå¯äœçšã§ããããšãä¿èšŒããŸãã
- Componentã¯ã©ã¹ã®ç®çã¯æ§æãæå¹ã«ããããšã§ããã CRPã®éåã§ããç¶æ¿ãéããŠãããè¡ããŸãã
- ãã®äŸã®å¯äžã®è¯ãé¢ã¯ãSRPãšISPã®ååã«æºæ ããããã«ã²ãŒã ã³ãŒããéå°ã§ããããšã§ããããã¯ãã³ãŒãã®åå©çšã«æé©ãªãã»ãšãã©è²¬ä»»ã®ãªãå€ãã®åçŽãªã³ã³ããŒãã³ãã«åå²ãããŸãã
ãããã圌ã¯DIPã®ç¶æãããŸãåŸæã§ã¯ãããŸãããå€ãã®ã³ã³ããŒãã³ãã¯ãäºãã®çŽæ¥çãªç¥èãæã£ãŠããŸãã
ãããã£ãŠãäžèšã®ãã¹ãŠã®ã³ãŒãã¯å®éã«åé€ã§ããŸãã ãã®æ§é å
šäœã GameObjectïŒä»ã®ãã¬ãŒã ã¯ãŒã¯ã§ã¯ãšã³ãã£ãã£ãšãåŒã°ããŸãïŒãåé€ããã³ã³ããŒãã³ããåé€ããFindOfTypeãåé€ããŸãã ããã¯ãOODã®ååã«éåããã²ãŒã ã®é床ãèããäœäžããã圹ã«ç«ããªãVMã®äžéšã§ãã
ãã¬ãŒã ã¯ãŒã¯ãªãã®æ§æïŒã€ãŸããããã°ã©ãã³ã°èšèªèªäœã®æ©èœã䜿çšïŒ
ã³ã³ããžã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ãåé€ããComponentåºæ¬ã¯ã©ã¹ããªãå ŽåãGameObjectsã¯ã©ã®ããã«ã³ã³ããžã·ã§ã³ã䜿çšããã³ã³ããŒãã³ãã§æ§æãããŸããïŒ ã¿ã€ãã«ã瀺ãããã«ããã®è¥å€§åããVMãäœæãããã®äžã«å¥åŠãªã¡ã¿èšèªã§GameObjectsãäœæãã代ããã«ãã²ãŒã ããã°ã©ããŒã§ããããããæåéãç§ãã¡ã®ä»äºã§ãããããC ++ã§ããããäœæããŸããã
ãšã³ãã£ãã£/ã³ã³ããŒãã³ããã¬ãŒã ã¯ãŒã¯ãåé€ããã³ãããã¯æ¬¡ã®ãšããã§ãïŒ
https :
//github.com/hodgman/dod-playground/commit/f42290d0217d700dea2ed002f2f3b1dc45e8c27cãœãŒã¹ã³ãŒãã®å
ã®ããŒãžã§ã³ã¯æ¬¡ã®ãšããã§ãïŒ
https :
//github.com/hodgman/dod-playground/blob/3529f232510c95f53112bbfff87df6bbc6aa1fae/source/game.cppãœãŒã¹ã³ãŒãã®ä¿®æ£çã¯æ¬¡ã®ãšããã§ã
ãhttps ïŒ
//github.com/hodgman/dod-playground/blob/f42290d0217d700dea2ed002f2f3b1dc45e8c27c/source/game.cppå€æŽç¹ã«ã€ããŠç°¡åã«èª¬æããŸãã
- åã³ã³ããŒãã³ãã¿ã€ããããïŒpublic Componentããåé€ããŸããã
- åã¿ã€ãã®ã³ã³ããŒãã³ãã«ã³ã³ã¹ãã©ã¯ã¿ãŒãè¿œå ããŸããã
- OODã¯äž»ã«ã¯ã©ã¹ã®ç¶æ
ãã«ãã»ã«åããããšãç®çãšããŠããŸããããããã®ã¯ã©ã¹ã¯éåžžã«å°ãã/ã·ã³ãã«ãªã®ã§ãé ãå¿
èŠã¯ãããŸãããã€ã³ã¿ãŒãã§ã€ã¹ã¯ããŒã¿ã®èª¬æã§ãã ãã ããã«ãã»ã«åãäž»ãªæ±ã§ããäž»ãªçç±ã®1ã€ã¯ã ã¯ã©ã¹ã®äžå€åŒã®äžå®ã®çå®ãä¿èšŒã§ããããšã§ã...ãŸãã¯äžå€åŒãå£ããŠããå Žåã¯ãã«ãã»ã«åãããå®è£
ã³ãŒãã調ã¹ãŠãšã©ãŒãèŠã€ããã ãã§ãã ãã®ã³ãŒãäŸã§ã¯ãã³ã³ã¹ãã©ã¯ã¿ãŒãè¿œå ããŠåçŽãªäžå€åŒãå®è£
ãã䟡å€ããããŸãããã¹ãŠã®å€ãåæåããå¿
èŠããããŸãã
- ããŸãã«ãäžè¬çãªãæŽæ°ãã¡ãœããã®ååãå€æŽããŠããããã®ååãå®éã®åäœãåæ ããããã«ããŸããMoveComponentã®UpdatePositionãšãAvoidComponentã®ResolveCollisionsã§ãã
- ãã³ãã¬ãŒã/ãã¬ããã«äŒŒãããŒãã³ãŒãããã3ã€ã®ã³ãŒããããã¯ïŒç¹å®ã®ã¿ã€ãã®ã³ã³ããŒãã³ããå«ãGameObjectãäœæããã³ãŒãïŒãåé€ãã3ã€ã®C ++ã¯ã©ã¹ã«çœ®ãæããŸããã
- ã¢ã³ããã¿ãŒã³ãä»®æ³ãã€ãã¢ããããŒãããåé€ããŸããã
- ããµãŒãã¹ãã±ãŒã¿ãŒããã³ãã¬ãŒããä»ããŠçžäºã«æ€çŽ¢ããã³ã³ããŒãã³ãã®ä»£ããã«ãã²ãŒã ã¯æ§ç¯äžã«ã³ã³ããŒãã³ããæ瀺çã«çµã³ä»ããŸãã
ãªããžã§ã¯ã
ãããã£ãŠããã®ãä»®æ³ãã·ã³ãã³ãŒãã®ä»£ããã«ïŒ
ããã§éåžžã®C ++ã³ãŒããã§ããŸããã
struct RegularObject { PositionComponent pos; SpriteComponent sprite; MoveComponent move; AvoidComponent avoid; RegularObject(const WorldBoundsComponent& bounds) : move(0.5f, 0.7f)
ã¢ã«ãŽãªãºã
å¥ã®å€§ããªå€æŽãã¢ã«ãŽãªãºã ã«å ããããŸããã æåã«ãã€ã³ã¿ãŒãã§ã€ã¹ãšã¢ã«ãŽãªãºã ã¯å
±çããŠæ©èœããäºãã®æ§é ã«åœ±é¿ãäžããã¹ãã ãšèšã£ãã®ãèŠããŠããŸããïŒ ãã®ãããã¢ã³ããã¿ãŒã³ã
ä»®æ³ãã€ãã¢ããããŒã ããããã§æµã«ãªããŸããã åæã³ãŒãã«ã¯ãããã ãã§æ§æãããã¡ã€ã³ã«ãŒãã¢ã«ãŽãªãºã ãå«ãŸããŠããŸãã
ããªãã¯ãããçŸããã·ã³ãã«ã§ããããšã«å察ããããšãã§ããŸãããç§èŠã¯ããã¯éåžžã«ãéåžžã«æªãã§ãã ããã«ãããã²ãŒã å
ã®
å¶åŸ¡ ãããŒãš
ããŒã¿ãããŒã®äž¡æ¹ãå®å
šã«é£èªåãããŸãã ãœãããŠã§ã¢ãç解ã§ããããã«ãããå ŽåããµããŒããããå Žåãæ°ãããã®ãè¿œå ããæé©åããè€æ°ã®ããã»ããµã³ã¢ã§å¹ççã«å®è¡ãããå Žåã¯ãå¶åŸ¡ãããŒãšããŒã¿ãããŒã®äž¡æ¹ãç解ããå¿
èŠããããŸãã ãããã£ãŠããä»®æ³ç¡å¹æŽæ°ããå®è¡ããå¿
èŠããããŸãã
代ããã«ãããæ瀺çãªã¡ã€ã³ã«ãŒããäœæããŸãããããã«ãããå¶åŸ¡ãããŒã®ç解ã倧å¹
ã«ç°¡çŽ åãã
ãŸã ïŒãã®äžã®
ããŒã¿ãããŒã¯äŸç¶ãšããŠé£èªåãããŠããŸããã次ã®ã³ãããã§ä¿®æ£ããŸã ïŒã
ãã®ã¹ã¿ã€ã«ã®æ¬ ç¹ã¯ãã²ãŒã ã«è¿œå ããã
æ°ããã¿ã€ãã®ãªããžã§ã¯ãããšã«ãã¡ã€ã³ã«ãŒãã«è€æ°ã®è¡ãè¿œå ããå¿
èŠãããããšã§ãã ãã®ã·ãªãŒãºã®åŸç¶ã®æçš¿ã§ããã«æ»ããŸãã
æ§èœ
å€æ°ã®å€§ããªOODéåããããæ§é ãéžæãããšãã«ããã€ãã®æªã決å®ãäžãããæé©åã®æ©äŒããããããããŸããããããã«ã€ããŠã¯ã·ãªãŒãºã®æ¬¡ã®æçš¿ã§èª¬æããŸãã ãã ãããã®æ®µéã§ã¯ãã§ã«ããä¿®æ£OODããå«ãããŒãžã§ã³ããã¬ãŒã³ããŒã·ã§ã³ã®æåŸããæçµçãªãECSãã³ãŒããšã»ãŒå®å
šã«äžèŽãŸãã¯åã£ãŠããããšãæããã§ã...ãããŠãç§ãã¡ãããããšã¯ãæªãæ¬äŒŒOOPã³ãŒããååŸãããããååã«æºæ ãããããšã ãã§ããOOPïŒããã³100è¡ã®ã³ãŒããåé€ïŒïŒ
次ã®ã¹ããã
ããã§ã¯ãæ®ãã®OODåé¡ã®è§£æ±ºãäžå€ãªããžã§ã¯ãïŒ
é¢æ°åã¹ã¿ã€ã«ã§ã®ããã°ã©ãã³ã° ïŒãããã³ããŒã¿ãããŒãã¡ãã»ãŒãžã®åãæž¡ããOODã³ãŒããžã®DODããžãã¯ã®é©çšã«é¢ããè°è«ã«ããããå©ç¹ãªã©ãããåºç¯ãªåé¡ãæ€èšããŸããé¢é£ããç¥æµãOODã³ãŒãã«é©çšãããããã®ã¯ã©ã¹ã®ããšã³ãã£ãã£ããåé€ããã¯ãªãŒã³ãªã³ã³ããŒãã³ãã®ã¿ã䜿çšããã³ã³ããŒãã³ãã®æ¥ç¶ã«ç°ãªãã¹ã¿ã€ã«ã䜿çšããŸãïŒãã€ã³ã¿ãŒãš çŸå®ã®äžçããïŒã³ã³ããã®ã³ã³ããŒãã³ããéã¶ã®è²¬ä»»ã¯ãECS-æ¹èšçã¯ãããè¯ãæé©åã ãã§ãªãããããªãæé©åã®ããã«ã¯ã
ãã®ãããªãã«ãã¹ã¬ãã/ SIMDïŒãšããŠå ±åã¢ã©ã¹
ïŒã«èšèŒãããŠããŸãã
ã é åºã¯å¿
ãããããã§ã¯ãªããããããç§ã¯äžèšã®ãã¹ãŠãèæ
®ããããšã¯ãããŸãã...
å ç®
èšäºãžã®ãªã³ã¯ã¯ã²ãŒã éçºè
ã®ãµãŒã¯ã«ãè¶
ããŠåºãã£ãŠãããããã
ECS ããè¿œå ããŸãïŒ
ãã®ãŠã£ãããã£ã¢ã®èšäºã¯æªãã§ãããECãšECSã®æŠå¿µãçµã¿åãããŠãããããã¯åãã§ã¯ãããŸãã... ïŒ-ããã¯ã³ãã¥ããã£å
ã§åŸªç°ããåœã®ãã³ãã¬ãŒãã§ãã²ãŒã éçºè
ã å®éãããã¯ããšã³ãã£ãã£ãã圢ã®ãªããªããžã§ã¯ããæå®ããåãªãIDã§ããããã³ã³ããŒãã³ãããIDãåç
§ããç¹å®ã®ããŒãã«ã®è¡ã§ããããã·ã¹ãã ããã³ã³ããŒãã³ããå€æŽã§ããæç¶ãåã³ãŒãã§ãããªã¬ãŒã·ã§ãã«ã¢ãã«ã®ããŒãžã§ã³ã§ãã ãã®ããã³ãã¬ãŒããã¯ãç¶æ¿ã®éå°äœ¿çšã®åé¡ã«å¯Ÿãã解決çãšããŠåžžã«äœçœ®ä»ããããŠããŸããããç¶æ¿ã®éå°äœ¿çšãå®éã«OOPã®æšå¥šäºé
ã«éåããããšã¯èšåãããŠããŸããã ãããã£ãŠãç§ã®inãã ããã¯ããœãããŠã§ã¢ãèšè¿°ãããå¯äžã®çã®æ¹æ³ãã§ã¯ãããŸããã ãã®æçš¿ã¯ã人ã
ãå®éã«æ¢åã®èšèšååã«ã€ããŠåŠã¶ããšã確å®ã«ããããã«èšèšãããŠããŸãã