ä»æ¥ã¯ããœãããŠã§ã¢ã®èšèšãšéçºã®åéã§ã®ç§ã®çµéšãšã¢ã€ãã¢ãå ±æããåèŠãææããã ãªã¢ã¯ãã£ã ãã§ã¯ãªãäžçã®SOAãœãªã¥ãŒã·ã§ã³ã®çŸç¶ãæããã«ããããšæããŸãã ããå°ãªãã³ãŒãã®æžãæ¹ãäžæºã®å°ãªã顧客ãçœé«ªããããŠããå€ãã®å©çãåŸãæ¹æ³ã«ã€ããŠã å¯äœçšã®ãªãå®å šã«å®è¡å¯èœãªãœãªã¥ãŒã·ã§ã³ãå®è£ ãã誰ããŸã ãããè¡ã£ãŠããªãçç±ã
![](https://habrastorage.org/files/b2b/335/689/b2b335689af844b69d60e41ff4ffb305.png)
ïŒàžïž¡ '-'ïž ïŒàžãããŠããæšæ¶ã ããŸãèªç±ã§ã¯ãªããããŸãæéãäžã
ç§ã¯ãã¹ãŠãç°¡æœãã€æ確ã«è¿°ã¹ãããšããŸãããåŸè ã¯éåžžç§ã«ãšã£ãŠãã ããªãããšã«ãªããŸãã
æšå®ã³ã³ãã³ã
0ã¯ããã« 0.1ãµãŒãã¹æåã¢ãŒããã¯ãã£ãšã¯äœã§ããïŒ 0.2æ¢åã®ãœãªã¥ãŒã·ã§ã³ã®é·æãšçæã¯äœã§ããïŒ 0.3çŸä»£åžå Žã®èŠä»¶ã¯äœã§ããïŒ 0.4ãŸã 誰ããããããŠããªãã®ã¯ãªãã§ããïŒ 1ãµãŒãã¹ 1.1ãã¡ã€ã³ãšãªã¬ãŒã·ã§ãã«ã¢ãã« 1.2ã³ã³ã»ã³ãµã¹ã¿ã¹ã¯ã®è§£æ±º 1.3ã¹ã±ãŒãªã³ã°ãšã·ã£ãŒãã£ã³ã° 1.4èéå®³æ§ 1.5ãã®ã³ã°ãšã¢ãã¿ãªã³ã° 1.6æ€çŽ¢ãšç»é² 1.7 AAA 2ãã¥ãŒ 2.1ãã€ããŒã¡ãã£ã¢ã®çš®é¡ãšè¶³å Ž 2.2 CQRS-ESãã¹ãŠã®ãã® 2.3ãã¿ãŒãã³ã° 2.4ãããã³ã«ãšã²ãŒããŠã§ã€ 2.5ã«ãŠã³ã¿ãŒãã¬ããŒããçµ±èš 3.ãµããŒã 3.1ããã¥ã¡ã³ã 3.2äžäœäºææ§ 3.3ç§»è¡ 3.4æ£ç¢ºã 3.5ãœãªã¥ãŒã·ã§ã³ã®ã©ã€ããµã€ã¯ã«
ã¯ããã«
æ°å¹Žåãããã¯ãšã³ãããã³ããã³ããšã³ãã®ãœãªã¥ãŒã·ã§ã³ïŒWebããã¹ã¯ããããã¢ãã€ã«ïŒãå®è£ ããããã®ããŒã«ãäžè¶³ããŠãããšããåé¡ã«åºäŒããŸããã ãã®æ以æ¥ãããããã®æ¶²äœãæµããŠããã®ã§ãç§ã¯å€ãã®æ¢åã®ã¢ãããŒãã«ç²Ÿéããä»ãããå°ãã ãè¯ãããšãããæ¹æ³ãèããŸããã çŸåšã®åžå Žã®ç¶æ³ãç 究ããçµæãæ¢åã®ãœãªã¥ãŒã·ã§ã³ã§ã¯ã¢ããªã±ãŒã·ã§ã³ãå®å šã«å¶åŸ¡ããããšã¯ã§ããããããžã§ã¯ãã¢ãŒããã¯ãã£å šäœã®ããäžéšã«éããªããããŒã§ããããšãããããŸããã 圌ãã®ç®æšã¯ãã¯ã©ã€ã¢ã³ããå°é家ã®é¢å¿ãç¶æããããšã§ãããããã¯ãªãã£ã¹ã®ã³ã¹ãã«ãã©ã¹ã®åœ±é¿ãäžããŸãããŸãã¯ãµããŒããã©ãã°-ã¹ã¿ããã®ãµããŒããšãã¬ãŒãã³ã°ãã¹ã ãŒãºã«ããå¿ èŠãããOASISä»æ§ã®ããŸããŸãªå€ç°äœãæã€å€å±€ãã©ãŒã§ãã åŸè ã®æãé¡èãªäŸã¯ã WSO2ã¹ã¿ãã¯ã§ãã ç§ã¯ããããåžå Žã§æãå®å šãªSOAãœãªã¥ãŒã·ã§ã³ã§ãããšèããŠããŸãã ãã®ãããªãã®ãã¢ãžã£ã€ã«ã®æ¹æ³è«ãšæ¯èŒããããšã¯å°é£ã§ãããªããªããããã¯ãã¹ãŠãçããŠãã人ã ã®ããŒãºã§ã¯ãªããçŽãšããžãã¹ããã»ã¹ãäžå¿ã«å±éããããã§ãïŒ ã¢ãžã£ã€ã«ãããã§ã¹ãã®æåã®æ®µèœïŒã ãããã®èšäºã§ã¯ãSOAèšèšã®ããžã§ã³ãçŸä»£ã®åžå ŽãšRADã®èŠä»¶ã«é©å¿ãããæ¹æ³ãããã³ãã®ãããªã¢ãããŒãã®äž»ãªå©ç¹ã«ã€ããŠèª¬æããŸãã
ããŸããŸãªãžã§ããæ©ã®ãã¬ã³ãã«ã€ããŠè°è«ããã®ã¯éåžžã«æµè¡ããŠããŸãã
- ã¬ã¹ãã³ã·ã
- èé害æ§
- ã¹ã±ãŒã©ãã«
- 管çãããã€ãã³ãïŒã¡ãã»ãŒãžïŒãããŒ
![](https://habrastorage.org/files/00d/27d/be3/00d27dbe306b4798a7d49ba79a91cac8.png)
åçã¯ãžã§ãããããã§ã¹ããã
å®éã«ã¯ãããã¯ãã¹ãŠæè³å®¶ã®æ³šæãåŒãããã®ç¶ç¶çãªããŒã±ãã£ã³ã°ã®ããã§ãããäžè¬ã«ãéçºè ã¯æ¢è£œã®ãœãªã¥ãŒã·ã§ã³ãŸãã¯ãªãã§ãã®ãåå¿æ§ãããã¹ãŠç¬èªã«å®è£ ããå¿ èŠããããããã»ãšãã©ã®ãœãªã¥ãŒã·ã§ã³ã¯å®çšçãªäŸ¡å€ãè¡šããªãããšãå€æããŸããæ¢åã®èŠä»¶ã®ãã¹ããã©ã¯ãã£ã¹ã å®å šãªAAAã§ãããã©ãã«ãèŠã€ãããŸããã
ãã1ã€ã¯SOAã§ããSOAã䜿çšãããšãããã«åäœããŸãããã©ã®ããã«åäœããã¯ãã§ãã
åãã³ããŒã¯ãã§ã¹ãšè©©äººãåããç¬èªã®SOAãåããŠããããªãŒãã³ãœãŒã¹ãœãªã¥ãŒã·ã§ã³ã§ã¯ãã¹ãŠãããŸããããŸãããåŸã§è©³ãã説æããŸããããäºãã«åéã§ã¯ãããŸããã ããã¯ããã«æ代é ãã«ãªããã©ããããããæ°ããã³ãã¥ããã£ã¯ãŸã£ãã圢æãããããããžã§ã¯ãã¯ææè ã®åªåã«ãã£ãŠã®ã¿éçºãããŸãã ãããSOAã§ãããä»»æã®ãµãŒãã¹ããããžã§ã¯ãå šäœã§å°ãªããšã100500å䜿çšã§ããå Žåã䜿çšå¯èœãªãµãŒãã¹ãšãã¡ã€ã³ã®æšæºåããããªããžããªããªãã®ã¯ãªãã§ããïŒ æ¢åã®ãœãªã¥ãŒã·ã§ã³ã®ææè ã¯ããã«åçŽã«èå³ããããŸãããçµå±ããµããŒããããéã浪費ããå¿ èŠããããŸãã
æšå¹Žããã€ã¯ããµãŒãã¹ã¯è°è«ããã®ãç¹ã«æ¥œããã§ãã ããã¯ããªãæããªååã§ãããããã€ãã®ãããã³ã«ã®æ·±ãã«ãã»ã«åãæ瀺ããŠãããããããã€ã¯ããã§ã¯ãããŸããã ãããã£ãŠãåäžã®ãµãŒããŒãŸãã¯ä»®æ³ãã·ã³å ã§ããã€ã¯ããµãŒãã¹ããå®è¡ããã«ã¯ãé 延ãå¢ãããŠããã¥ãŒã ãæ¡å€§ããã ãã§ãã äžè¬ã«ãå€å žçãªSOAã§ã¯ããµãŒãã¹ãåäžã®ã·ã¹ãã ããã»ã¹ã®äžéšã§ãããããããšãç°ãªããã·ã³äžã®ç¬èªã®ãã¥ãŒããã³ãããã³ã«ãåããå¥åã®ããã»ã¹ã»ãããšããŠèµ·åããå¿ èŠããããã©ããã«éãã¯ãããŸãããããã¯ãã¹ãŠããµãŒãã¹ãšãã®äŸåé¢ä¿ãç»é²ããã ãã®åé¡ã§ãã ããã§ãç§ã¯ããã€ã¯ããµãŒãã¹ãããŸããããŒã±ãã£ã³ã°çç¥ã«ãããªãããšãèããŸã-ããå€ãã®ãéãåŸãããã«æçœãªå€ãã¢ã€ãã¢ããåèãããè©Šã¿ã
ãããããŸãããMVCã®äœãåé¡ãªã®ã§ããããïŒã-ããªãã¯ããããããã«ã€ããŠèããã§ããã...ããããããã¯åçŽãªã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹çšã§ãããããªã«ããªããæã«è² ããªããããå¹³å¡ãªCRUDã§ã倧éã®ã³ããŒããŒã¹ãã§ãã MVCã¯ãµããžã§ã¯ãé åãé©åã«å¶åŸ¡ãããç¶æ ã®ä¿åãšã³ãŒãã®è€è£œãä¿é²ããããžãã¯ïŒã³ãã³ããšãªã¯ãšã¹ãã®åé¢ïŒã®åœ¹å²ãååã«åå²ãããã¢ãã«ã®éæ£èŠåãæšå¥šããŸãã èªè»¢è»ã¯å¥ã®åé¡ã§ãïŒ ADR ãããããçš®é¡ã®ECB ã ã¯ãªãŒã³ã¢ãŒããã¯ãã£ãåããEBI ãããã³å è§åœ¢ã¢ãŒããã¯ãã£ããŒãã®ãã®ä»ã®ããªãšãŒã·ã§ã³-ãã¡ãããåã ã®æ¬ é¥ããªãããã§ã¯ãªãããã¡ããã誰ãããã®ãããªããšãå®è£ ããçµéšãšã¹ãã«ãæã£ãŠããããã§ã¯ãããŸãããã圌ãã¯MVCã«åºæã®ããªãã®æ°ã®åé¡ã解決ããŸããã ãã®ãã¹ãŠã¯ãã»ãšãã©ã®å ŽåãPHPã®å°é家ã«ãã£ãŠéå»3幎éã«ããã£ãŠäœæããããã®ã§ãããããã«å¿ããŠäœããã®åœ¢ã§ãã®ãã©ãããã©ãŒã ã®æ©èœãåæ ããŠããŸãã PHPãæ¬åœã«å«ããªããã§ã¯ãããŸããããPythonãšRubyã®ããŒãã«ãããææ°ã®ããªãšãŒã·ã§ã³ã¯ãçŸä»£ã®åžå Žã®èŠä»¶ãå®å šã«ã¯æºãããŠããŸããã
ãŽãŒã«ãã³ãã³ããŒã«ã«ãã®ä¿¡å¥è ã®ææ ãå·ã€ããããšã¯ã§ãããšç解ããŠããŸããããªããã¹ãŠãããã»ã©æ¥œèŠ³çã§ã¯ãªãã®ããæããã«ãªãããã®ããŒãã§ç§ãæãã€ããããšã瀺ããŸãã
FluxããããŸãããããããŸãå¥ã®ããŒã±ãã£ã³ã°çã§ãã
äžè¬ã®äººã ã®ãã©ãã¯ã¹ã¯ãããè€éãªé åèªCQRS-ESã«éããŸãããFacebookããããåçŽåãããã£ãããã§ããããããããš
ãã¹ãŠã®ããªã¢ã¯ãã£ããã®åºç€ã§ãããããªã¢ã¯ãã£ããã¢ããªã±ãŒã·ã§ã³ã®å®è£ ã«æãé©ããŠããã®ã¯CQRS - ESãã¿ãŒã³ã§ãããçŽç²ãªåœ¢ã§ã¯åœ¹ã«ç«ããªãã®ã§ãã CQRS-ESã®äœ¿çšäžã®åé¡ãšå©ç¹ã¯ãSOAèšèšã®ã³ã³ããã¹ãã§æãããé瀺ããããšæããŸãã
çŸä»£ã®SOAããããŠå®éã«æ¢åã®ãã¹ãŠã®ã¢ãŒããã¯ãã£ã®äž»ãªåé¡ã¯ããã¡ã€ã³ãšãã¡ã€ã³ã¢ãã«ã®å®çŸ©ã®ããªã貧匱ãªæœè±¡åã§ãã åæããããã£ã¹ã¯ãªãŒãFSMã¹ããŒããã·ã³ã®èŠ³ç¹ãããã®åé¡ãæ€èšããã¢ããªã±ãŒã·ã§ã³ã®ææ°ã®èŠä»¶ãèæ ®ããŠããã¡ã€ã³ã®æ±ºå®ãïŒåé·æ§ãªãã§ïŒã§ããã ãæ£ç¢ºã«ç€ºããŸãã
ãšãŽã¡ã³ã¹ãèšã£ãããã«ïŒ
åé¡ã¯ããããã®ãã¬ãŒã ã¯ãŒã¯ãããŒã¿ããŒã¹ããã¥ãŒãªã©ããšã³ãžãã¢ãéåžžã«åŒãä»ãããã®ãã¹ãŠã§ã¯ãªããäž»é¡é åã®èšè¿°ãšã¢ããªã³ã°ïŒãã¡ã€ã³ã®äœæïŒã«å°é£ãåžžã«é ãããŠããããšã§ã¯ãããŸãããã¢ããªã±ãŒã·ã§ã³ã¢ãŒããã¯ãã£ã«é¢ããã¢ã€ãã¢ãæ¥ã«å€ãããããã§ã¯ãããŸããããã80ïŒ ãæŸèæã磚ãäžãããã象çã象çŒçŽ°å·¥ã§æ§æãããŠãããããäºç®ãèš±ãããããããããå¿ èŠã§ãããããŠãããïŒåœŒãã¯ç§ãã¡ã«ãéãæã£ãŠãããã¯ããŸããããŸã-ãªãæ°ããããšãåŠã¶ã®ã§ããïŒ
ãªãç§ã¯ããã«ã€ããŠæããŸãã
Killjoys S01E06
![](https://habrastorage.org/files/b57/531/5a8/b575315a8de444dfb47ebca46deb6e40.png)
Killjoys S01E06
ãããããŸãããèªæžã«ããããããŠããŸããããªãã®èãã¯äœã§ããïŒã
æåŸã«ãããã¯ãšã³ããšããã³ããšã³ãã®éçºã©ã€ããµã€ã¯ã«ã¯æ¬¡ã®ããã«ãªããŸãã
![](https://habrastorage.org/files/eee/ac9/993/eeeac999346143dcba4bb1932ed8ee53.png)
æ®ã£ãŠããã®ã¯ãã·ã¹ãã ã«ãµãŒãã¹ãšãã¡ã€ã³ãè¿œå ããããšã«ãããèšèšïŒãªãã·ã§ã³ïŒãšæ¬ èœããŠããæ©èœã®å®è£ ã§ãã
ç¬èªã®Pocket FirebaseãææããŠãããã®ããã«ããã¹ãŠã®å€æŽãšç§»è¡ãããŒã¿ããŒã¹ã«èªåçã«è¿œå ããã ãã§ãªããã¢ãã€ã«ããã¹ã¯ããããããã³Webã¢ããªã±ãŒã·ã§ã³ã®ã¹ãã£ãã©ãŒã«ãã£ã³ã°ãçæããŸãããã¹ãŠã®ãã¥ãŒããã³ãã¬ãŒããæ€èšŒãããã·ã¥éç¥ãšéåæUIã䜿çšããAPIã®ã¯ã©ã€ã¢ã³ãã
çŸä»£ã®æ©èœã®ã»ãšãã©ã¯éåžžã«ã¹ãã¬ãªã¿ã€ãåãããŠããããããããžã§ã¯ãããšã«ãã¹ãŠããŒãããæžãçŽãããšã¯æå³ããããŸããã 人ã ããã¹ããã©ã¯ãã£ã¹ãå ±æããå質管çãšçžäºäœçšãæšæºåã§ãããã©ãããã©ãŒã ãå¿ èŠã§ãã ãããã£ãŠã補åã®å質ãšãã®ã¡ã³ããŒã®è³æ Œãæ¹åããããã«æé»çã«åæ©ä»ãããããŠãŒã¶ãŒã³ãã¥ããã£ãååŸããããã«ãããé«ãã¬ãã«ãå®çžŸãããã³æŒ«ç»ã®çµ±èšã§ã²ãŒããã£ã±ãŒã·ã§ã³ãè¿œå ããããšãã§ããŸã...ãŸãããã¡ã³ã¿ãžãŒã®äœå°ãããããšãç解ããŠããŸãã
ãã®ãããªãœãªã¥ãŒã·ã§ã³ãéçºãããšãã2ã€ã®åé¡ã®ããç¶æ³ã®çºçãé²ãå¿ èŠããããŸããããã¯ããå§å¡äŒã«ããéçºããšãä»æ§ã«ããéçºãã§ãããå®éã«J2EEã¹ã¿ãã¯ã®æãããè¥å€§åã«ã€ãªãããŸããã
çŸåšãéçºè ã®äœæ¥ãèªååããããšã«èå³ããã人ã¯ã»ãšãã©ããŸããããæ¢åã®ã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒãã®ã»ãšãã©ã¯ãåçããã°ã©ãã³ã°ã«ãã£ãŠèªåçã«çæãŸãã¯æœè±¡åã§ããŸãã
ã¯ã...éåžžã«ç°¡æœãã€ç°¡æœã«èšãã°ãããŒã¿ããŒã¹ã¹ããŒã ã«ããã°ããæ°ã«å ¥ãã®Angular'e / React'e / Ember'eãªã©ã®ããã³ãçšã®RESTãšã³ããã€ã³ããã¯ã©ã€ã¢ã³ãAPIããã³ãã¬ãŒããããã«çæã§ããŸãã ææ°ã®ãã©ãŠã¶ãã¬ãŒã ã¯ãŒã¯ã®ã¢ãããŒããå®éã«æ¶åããããã§ã¯ãããŸããããããã«ã€ããŠã¯åŸã§è©³ãã説æããŸãã ãŠãŒã¶ãŒã°ã«ãŒããšãã®æš©å©ãç»é²ããæ¢åã®èšèšãåŒãåºãããšã¯æ®ã£ãŠããŸãã ãããç¥ç§äž»çŸ©ã ãšæããªãã Tastypieã¯ã¢ãã«ããRESTãšã³ããã€ã³ããçæããæ¹æ³ããã§ã«ç¥ã£ãŠããŸãããååãªæ©èœããªããããã©ãŒãã³ã¹ãæªãããã«Pythonã§ãããªãå¹³å¡ã§ãããäŸãšããŠäœ¿çšã§ããŸãã
ãµãŒãã¹æåã¢ãŒããã¯ãã£ãšã¯äœã§ããïŒ
ããã¯ã¢ã€ãã¢ã§ãã ããã¯ãã¢ããªã±ãŒã·ã§ã³ã亀æå¯èœãªããã©ãã¯ããã¯ã¹ãã§æ§æãããã¹ãã§ãããšããäºå®ã«ãããŸã-æšæºåããããããã³ã«ãšã€ã³ã¿ãŒãã§ãŒã¹ã«åŸã£ãŠäºãã«éä¿¡ãããµãŒãã¹ã
ããã€ãã®éèŠãªæ¡ä»¶ããµãŒãã¹ããããŸãã
- ããããæ¡ä»¶ã§å®è¡ãããªã³ããã³ãã§ã¹ã±ãŒãªã³ã°ããå¿ èŠããããŸã
- çŽäº€ïŒççµåïŒã§ãã©ãŒã«ããã¬ã©ã³ãã§ãªããã°ãªããŸãã
- åå©çšå¯èœã§ãªããã°ãªããªã
- ç¶æ ãä¿åããªã
- ã§ããã ãæœè±¡çã§ããã¹ã
- å¯äœçšãªãã«ãåæã«è€æ°ã®ããžãã¹ããã»ã¹ã§äœ¿çšã§ããå¿ èŠããããŸãã
- ããªã³ã¶ãã©ã€ãã§åçã«ç»é²ããã³å®è£ ã§ããå¿ èŠããããŸã
ååãšããŠãæåã®3ã€ã®æ¡ä»¶ã¯å€ããå°ãªããæ確ã§ãªããã°ãªããŸããã ãµãŒãã¹ã¯äºãã«ç¬ç«ããŠãããå ±éã®ãªãœãŒã¹ãå ±æãããããŒã«ã«ãã·ã³ãšãªã¢ãŒããã·ã³ã®äž¡æ¹ã®ããã»ã¹éã§ç§»è¡ã§ããŸãã ãããã¯è€æ°ã®ãããžã§ã¯ãã§åå©çšããã³åæã«äœ¿çšã§ããŸãã
ç¶æ ã«é¢ããŠã¯ããã¹ãŠãåçŽã§ãããµãŒããŒã¯ãŠãŒã¶ãŒã»ãã·ã§ã³ã«é¢ããããŒã¿ãä¿åããå¿ èŠã¯ãããŸãããããã¯ãå®è¡äžã®ãµãŒãã¹ã®ã€ã³ã¹ã¿ã³ã¹ïŒéåžžã¯ç¹å®ã®æéã«æå°ã®è² è·ïŒã§èŠæ±ãåŠçã§ããããã«ããããã§ãã ããã¯ããŠãŒã¶ãŒãªã¯ãšã¹ãã«æå·åãããã塩挬ããã»ãã·ã§ã³æ å ±ãåã蟌ãããšã§å®è¡ãããŸãã åãªã¯ãšã¹ãã§ãã®ãã€ããŒããéä¿¡ããªãããã«ãéåžžããŠãŒã¶ãŒã»ãã·ã§ã³ã®çæç»é²çšã«å¥ã®ãµãŒãã¹ãäœæããäžæçã«ãããããã£ãã·ã¥ããŸãã ãŠãŒã¶ãŒã»ãã·ã§ã³ãä¿åããããã®ã°ããŒãã«ãµãŒãã¹ãäœæãããšã ã³ã³ã»ã³ãµã¹åé¡ã解決ããå¿ èŠããããããã«ããã¯ããçºçããŸããããã¯ããªã¯ãšã¹ãã®åŠçé床
æœè±¡åã«ããããã¹ãŠãéåžžã«ã¿ã€ãã«ãªããŸããç¹å®ã®ãã¡ã€ã³ïŒåºæ¬ã¹ããŒã ãšããžãã¯ïŒã¯ãäŸåãããµãŒãã¹ãšãã¡ã€ã³ã®ç¹å®ã®ããŒãºã«å¿ããŠåçã«æ¡åŒµå¯èœã§ãªããã°ãªããŸããã ã¢ã«ãŠã³ãã£ã³ã°ãµãŒãã¹ããããããŸããŸãªãµãŒãã¹ãç»é²ãããŠãããšããŸããäžéšã§ã¯ãæéã®æ¯æããåŸæãã®ã¿ã§ããå Žåãšãåæããå¿ èŠãªå ŽåããããŸãã ãããã®ã³ã³ããŒãã³ãã®ããžãã¯å šäœã絶ããå€åããŠãããããããã«ããã«ããŸããŸãªå²åŒããã³ç¯çŽã·ã¹ãã ãè¿œå ããæ°ãæéå質ã®é çã®çš®ã«ãªããŸãã ããã§ã¯ããªã¬ãŒã·ã§ãã«ã¢ãã«ã®æ£èŠåã倧ããªåœ¹å²ãæãããŸããé·ãéã 6ã€ã®æ£èŠåœ¢ããã£ãããšã«æ³šæããŠãã ããã ãµããžã§ã¯ãé åã®é©åãªæœè±¡åãšè©³çŽ°åã«ãããæ°ããããžãã¯ãå°å ¥ããããæ¢åã®ããžãã¯ãå€æŽãããããè€éãã軜æžãããŸããã次ã®ããŒãã§ã¯ããã«è©³ãã説æããŸãã
ããã€ãã®ãéšäžããšããããŒãžã£ãŒãéã§ãµãŒãã¹ãžã®ã¢ã¯ã»ã¹ãå ±æããå¯èœæ§ã¯ãæ¥ç¶æ§ã®æªããå ±æç¶æ ã®æ¬ åŠã®èŠä»¶ã«åºã¥ããŠããŸãã ãã¹ãŠã¯ããã«ãã¹ã¬ããããã°ã©ãã³ã°ãã競åãç¶æ ãé²ãæ¹æ³ãšåãã§ãã ãŸãããã¡ã€ã³æ¡åŒµã®å Žåã«ãèšåããå¿ èŠããããŸããæ¡åŒµãã¡ã€ã³ãè€æ°ã®ãµãŒãã¹ãšå ±æããå Žåãäºææ§ã®åé¡ããããŸãã äžè¬ã«ã倧ãŸãã«èšã£ãŠããããµãŒãã¹ã1ã€ã®æ°ã®ãã£ãŒã«ããšç¶æ ïŒåæã®å€ïŒãæã€ãã¬ãŒããå¿ èŠãšããå¥ã®ãµãŒãã¹ãå®å šã«ç°ãªããã®ãæã€å Žåãããã³ãã®ãã¬ãŒããå ±æãããšãã«åé¡ãçºçããªãããã«ãåéãäœããæ¹æ³ããŸãã¯ä»ã®ãªãœãŒã¹ã
ä»ã®ãã¹ãŠã®äººã®äœæ¥ãããã³ãšã©ãŒçºçæã®åäœãæ åœããå€ãã®ã·ã¹ãã ãã«ãŒãããµãŒãã¹ããããŸãã ãããã®1ã€ã¯ã
ãã®ã¡ã¢ã§ãSOAã®ç®çãšèŠä»¶ã®ã¬ãã¥ãŒãå®äºããããšãã§ãããšæããŸãã
å¿ èŠã«å¿ããŠãããã«äœãä»ã®ãã®ãè¿œå ããŸãã
ããã¯ããµãŒãã¹æåã¢ãŒããã¯ãã£ã®æ§é ãäžè¬çã«ã©ã®ããã«è¡šçŸãããã瀺ããå³ã§ãã
![](https://habrastorage.org/files/b02/792/bf2/b02792bf2ae44715b113dd294863935b.png)
ã«ãŒããµãŒãã¹ã®ç®çãèŠãŠã¿ãŸãããã
- ã¬ãžã¹ãã©-äžèšã®ããã«ãç»é²ãšãµãŒãã¹ã®éå§/åæ¢ã«åŸäºããŠããŸãã ãŸããæ¥ç¶çšã®ãããã³ã«ã®ã¢ãã¬ã¹ãšèª¬æãä¿åããæŽæ°åŸã«ãµãŒãã¹ã®æ£ããåäœã確èªããäœæ¥ãåæ¢ããããšãªãã以åã®äœæ¥ããŒãžã§ã³ã«èªåçã«ããŒã«ããã¯ã§ããŸãã
- ãªãœãŒã¹ãããŒãžã£ã¯æãéèŠãªãµãŒãã¹ã®1ã€ã§ãããæ¢åã®ãªãœãŒã¹ã®äœ¿çšã調æŽããŸãããµãŒãã¹ãžã®ç©çãªãœãŒã¹ã®å²ãåœãŠãè² è·ã®åæ£ã®ããã®ç£èŠãè¡ããŸãã OpenStackã®ãããªããããžã§ãã³ã°ããã³DevOpsãœãªã¥ãŒã·ã§ã³ã«åºã¥ããŠå®è£ ã§ããŸãã ãªãœãŒã¹ãããŒãžã£ã¯ã SOIãšåŒã°ããããšããããããŸãã
- ã¢ãŒããã¹ã-ã€ãã³ããèšé²ããçµ±èšãåéããã¬ããŒããæºåãããµãŒãã¹ã
- Courier-ã¡ãã»ãŒãžã®é ä¿¡ãšã«ãŒãã£ã³ã°ã«åŸäºããŸãã
- ç£èŠè -æ¢åã®ãã¹ãŠã®ãµãŒãã¹ã®ããã©ãŒãã³ã¹ãç£èŠãããªã³ããã³ãã§åèµ·åããäžèŠªåãªãŠãŒã¶ãŒããããã¯ããŸãã
- AAA-ãããã¯3ã€ã®ãµãŒãã¹ãæ
åœããŸã
- èªèšŒ-ãŠãŒã¶ãŒã®èº«å
ã®ç¢ºèªã
ãããã¯ããã°ã€ã³/ãã¹ã¯ãŒããçäœèªèšŒãOAuthããã°ã€ã³çšã®SMSã¡ãã»ãŒãžã®éä¿¡ãªã©ã§ãã - æ¿èªïŒæ¿èªïŒ-ãŠãŒã¶ãŒæš©å©ã®åé¢ã
éåžžããããã¯ç°ãªãã¢ã¯ã·ã§ã³ãå©çšå¯èœãªç°ãªãååã®ã°ã«ãŒãã§ãã - äŒèš-æ¯æãµãŒãã¹ãåœåº§é éã®å±¥æŽãå²åŒããã³è²¯èã·ã¹ãã ãä»ããããŸããŸãªãµãŒãã¹ã®è³Œå ¥/販売ã å€ãã®å Žåãä¿ç®¡äžã®ããŸããŸãªååããããã®äºçŽããã³å©çšå¯èœæ§ãäŒèšåŠçããããã®æ¹æ³ãå®è£ ããŠããŸãã
- èªèšŒ-ãŠãŒã¶ãŒã®èº«å
ã®ç¢ºèªã
ãããã®åãµãŒãã¹ã«ã¯ç¬èªã®èšèšïŒãœãããŠã§ã¢ïŒæ©èœãããã以äžã®èšäºã§ãã¹ãŠã®è©³çŽ°ã説æããããšããŸããäœãèŠéããªãããšãæã¿ãŸãã
ãã¹ãŠã®ãããžã§ã¯ãã«ã¯å°ãªããšãRegistrar ã Archivist ã Resource Manager ãããã³AAAãå«ãŸããŠããå¿ èŠããããŸãããããããããè¯ãååãæãä»ãããšãã§ããŸãã æåŸã®2ã€ã¯ãæ¡åŒµå¯èœãã¡ã€ã³ã®å®è£ ã®è€éãã«é¢é£ããããã€ãã®çç±ã§èŠèœãšãããŠããŸãïŒhi cocaine ïŒã
æ¢åã®ãœãªã¥ãŒã·ã§ã³ã®é·æãšçæã¯äœã§ããïŒ
çŸåšãæ¬æ ŒçãªSOAã¯ãããŸãããã©ããã§äœããæ¬ ããŠããŸãã
ãã€ããŒã¡ãã£ã¢ã¿ã€ãã«ããã³ãŒãçæã«ã€ããŠã¯ãäžè¬ã«æŽå²ã¯éãã§ãã
ç§ãåãã
ãã¡ãããJ2EEã¹ã¿ãã¯ã®å Žåãã²ã©ãåé·æ§ã芳å¯ãããWSOãJBossãé«è² è·ã«ã¯é©ããŠããŸããã ãŸããäžè¬ã«ãã匱ããã€ã³ãã£ã³ã°ã 㯠ãææ°ã®ããåãããj2ee EJBãã³ã«ã¯ããŸãé©ããŠããŸãã ã
ç§ã¯å人çã«ãCocaineãšBluemixã¯éšåçã«ã®ã¿SOAãœãªã¥ãŒã·ã§ã³ã«é¢é£ããŠããŸããDIYã«æºã¡ãæ¢åã®ãµãŒããŒã®çžäºäœçšãå®è£ ããã³æšæºåããæ¢è£œã®ã·ã¹ãã ã¯ãããŸããã ã³ã«ã€ã³ã®å Žåã ãã±ãŒã¿ãŒããããŸãããããªãåæ©çãªãã®ã§ãããå°ãªããšãäœããããã°ããã®ã§ãã Bluemixã§ã¯ãé©åãªSOIãå®è£ ã§ããŸãããå°ããã¬ã€ããå¿ èŠããããŸãã SOIã®èŠ³ç¹ããèŠããšãAmazonã®ãµãŒãã¹ã¯æãæè»ã§ãã
ãã¹ãŠã®ãã³ããŒã¯ãPaaSã«ã®ã¿ã€ã³ãã©ã¹ãã©ã¯ãã£ãå±éããããšãææ¡ããŠããŸããããã¯ãOracleããã³ãã®Integration Cloud Serviceã®å Žåã«ç¹ã«é¡èã§ãã SOAãœãªã¥ãŒã·ã§ã³ã®ã»ãšãã©ã®ãŠãŒã¶ãŒã¯ãã¹ãŠã®ãµãŒããŒãåãããŒã¿ã»ã³ã¿ãŒå ã«ããå¿ èŠããããéä¿¡ã®é 延ã¯æå°éã§ããããšãç解ããå¿ èŠããããŸã-å€ãã®å ŽåãCDNããã®ä»ã®åæ£ãžã£ã³ã¯ãèªåã§æŽçããå¿ èŠããããè¿œå ã®ãã³ããŒããã¯ã€ã³ã¯ããŒã¿ã»ã³ã¿ãŒãéžæãããšãã«æãçžãã ãã§ãã ãã§ã«ãAmazonãšAzureã¯èœã¡ãŸãã-çé¢ç®ã§è²¬ä»»ã®ãã顧客ã¯èªåã§ãªã¹ã¯ã管çããæ¹ãè¯ãã§ãããæ®éã®äººã«ãšã£ãŠã¯ååã§ãããã圌ãã¯åãå§ãã
BPEL / BPMNã¯å¥ã®ãããã¯ã§ãïŒåœŒãã¯ç§æžã®ããžãã¹ããã»ã¹ãèšè¿°ããããã®èšèªãæžã蟌ãããšããŸããããæšæºã§ã¯æäŸãããŠããªãå€ãã®åŽé¢ã®ç解ã§ããªããã®ãåŸãŸãããèšèªä»æ§èªäœãç·šéããã«å®è£ ããããšã¯ã»ãšãã©äžå¯èœã§ã ãããè¡ãã«ã¯ãOASISã«é£çµ¡ããã³ã³ãœãŒã·ã¢ã ã«åå ããRFCãçºè¡ããå¿ èŠããããŸã...ãŸããã¿ã¹ã¯ã®è§£æ±ºçãšçŽæ¥é¢ä¿ããããšã¯ãããŸãããã蚱容ã§ããæéæ å ã§çŸä»£ã®åžå Žã®èŠä»¶ã«é©å¿ã§ããªãå€é¢çãªã¢ããªã·ãã¯æšæºã®ååšã«å¯Ÿããæéã®ã¿ã§ãã 奜ããªèšèªã§ããã¹ãŠãæã§åããæžãã®ãç°¡åã§ãã æéç¶æ ãã·ã³ïŒFSMïŒã®èŠ³ç¹ããèãããšãããžãã¹ããã»ã¹ã®èª¬æãå€§å¹ ã«ç°¡ç¥åã§ããŸãã
æ¢åã®ãœãªã¥ãŒã·ã§ã³ã®äž»ãªå©ç¹ã¯ãèèã§äœ¿çšããã®ã«ååãªãã³ããŒããã®ä¿èšŒã§ãã ã»ã¯ã¿ãŒããã³éšåçã«å€åœã®ç¶æ ã§ã èªåè»æ¥ç-ãã®ãããªå³ããåžå ŽèŠä»¶ã¯ãªãããææ°ã®ãã¡ãã·ã§ã³ãã¬ã³ããã«åŸãå¿ èŠããããŸããã ãã®ãããæ°ãããããžã§ã¯ãã®å®è£ ãããã«ã¯ã¹ã¿ãŒãã¢ãããšããèšèãæããããããã®ãœãªã¥ãŒã·ã§ã³ãšãã©ãããã©ãŒã ã¯é©åã§ã¯ãããŸããã
ãŸããæ¬æ ŒçãªSOAãšããŠãå€ãè¯ãSAPãæ€èšããããšãã§ããŸãã
ãããããµããŒãããªã·ãŒãã³ã¹ããç¶ç¶çãªé³è åãããã©ãŒãã³ã¹ã®äœäžãã»ãã¥ãªãã£ã«å¯Ÿããå¹³å¡ãªæ 床ãèãããšããã®è§£æ±ºçãæ€èšããããšãããããŸããã
![](https://habrastorage.org/files/313/b39/827/313b39827df144cba25a1a223e905a45.png)
çŸä»£åžå Žã®èŠä»¶ã¯äœã§ããïŒ
åºæ¬çã«ã圌ãã¯ïŒ
- ã¢ããªã±ãŒã·ã§ã³ã¯éåžžã«å€§ããªè² è·ãµãŒãžã«èããããšãã§ããŸã
- ã³ã³ãã³ãã¯ãªã¢ã«ã¿ã€ã ã§æŽæ°ãããããŸããŸãªããã€ã¹ã§äœ¿çšãããŸãã
- é·æçãªãµããŒããæ°ã«ããå¿ èŠã¯ãããŸãã
- é »ç¹ã«æ°ããæ©åšãè³Œå ¥ããå¿ èŠã¯ãããŸããã§ãã
- BusFactorã¯30ïŒ ãè¶ ããŠããŸãã
ååãšããŠããã®å Žåã®SOAã¯ã»ãŒçæ³çãªãœãªã¥ãŒã·ã§ã³ã§ãããé ããæ©ããã人æ°ã®ããMVCãã¬ãŒã ã¯ãŒã¯ããéçºãéå§ããããŸããŸãªã¡ãã»ãŒãžãšã¿ã¹ã¯ãã¥ãŒãè¿œå ããããã»ã¹ééä¿¡ãå®è£ ããéçºè ã¯CQRS-ESã§ãã€ã¯ããSOAã«ã¹ã©ã€ãããŸã ' , .
, , . « » â . SOA «» « » - , «».
?
é£ããããã§ã
ããããã¹ãŠå ¥åããã«ã¯ãDDDããã³ãšã³ã¿ãŒãã©ã€ãºã¢ããªã±ãŒã·ã§ã³ãã³ãã¬ãŒãã«é¢ããæžç±ãæ°åèªãã ãã§ã¯ååã§ã¯ãããŸããããã¹ãŠãå®è·µããããããã®ãã³ããåããå¿ èŠããããŸãã »ã»ãšãã©ã®æ¢åã®OpenSourceãããžã§ã¯ãã§ã¯å®è£ ãããŠããªããããç¬èªã®åºç€ãšããããšã¯ã§ããŸããã
SOA IPC , Discovery (). « » Symfony2 Meteor.js â , , - scaffolding, . - Gearmand / Beanstalk / RabbitMQ etc - - SOA. , , AMQP â OASIS'a . protobuf'a, .
App Data over Avian Carriers with Quality of Service
XMPP , BOSH « ejabberd! erlang! !». - , 20% . IP UNIX - IP , .
Scaling /dev/null
" , Go ". «And we've never had another colossal clusterf**k since». , : 100% â . C#/Java . â bytecode enhancing . , DataNucleus - Hibernate . â , , , â , -, . Rust'e â , Go ( «duck typing»).
, , .
, MV--- ?
ç§ã察åŠããªããã°ãªããªãã£ããããžã§ã¯ãã®80ïŒ ã«ã¯ãéåžžã®æ£èŠåããããªã¬ãŒã·ã§ãã«ã¢ãã«ããããŸãããæåã®ã¹ãããã¯ãã¢ãã«ã6çªç®ã®ãã©ãŒã ãŸã§æ£èŠåããã¿ãã¬ãããšåã«ååãä»ããããã®èªã¿åãå¯èœãªã«ãŒã«ãåãå ¥ããããšã§ãã
ãªããªã
- ã»ãšãã©ã®ãªã¯ãšã¹ããé«éåã§ããŸã
- åé·æ§ãé²ããããŒã¹ã®ãµã€ãºãåæžãã
- ãœãªã¥ãŒã·ã§ã³ã®ãµããŒããšããã¥ã¡ã³ããç°¡çŽ åããŸãã
- æ¢åã®CRUDããžãã¯ã®å®è£ ãç°¡çŽ å
è€éã§å€§èŠæš¡ãªã¯ãšãªã®å Žåãå®äœåãããè¡šçŸã䜿çšãã䟡å€ããããŸããããã«ããããããã¡ã€ã©ã®æéãå°ãç¯çŽã§ããŸããã¢ãã«ã®éæ£èŠåã«ã€ããŠèããåã«ãäžæçãªè¡šçŸã«äžéçµæãä¿åããããšãèããŠãã ããã
æ£èŠåãããããŒã¿ããŒã¹ã䜿çšãããšãCRUDã«å¯ŸããŠãã®ãããªã«ãŒã¿ãŒãçºè¡ã§ããŸãã
GET /plural($tableName) // GET /plural($tableName)/page/$pageNumber // GET /plural($tableName)/page/$pageNumber/size/$pageSize // GET /plural($tableName)/where/$fieldName/$value // GET /$tableName/$id // $id GET /$tableName/$id/plural($referencedTableName) // $id POST /$tableName/$id // ID PUT /$tableName // PUT /$tableName/$id/$referencedTableName/$referenced_id // ManyToMany DELETE /$tableName/$id // $id DELETE /$tableName/$id/$referencedTableName/$referenced_id // ManyToMany
æãç³ãŸããããŒã®å Žåã$ id1_id2_id3ïŒä»»æïŒã®ãããªãã®ãèããããšãã§ããŸããããšãã°ãã¢ã«ãã¡ãããé ã§ããŒåãååŸããŸãã ãã¡ãããæåã«ããŒã¿ããŒã¹ã¹ããŒããèªã¿åããããã䜿çšããŠã«ãŒã¿ãŒãæ€èšŒããå¿ èŠããããŸããããããªããšããã©ã€ã³ãSQLã€ã³ãžã§ã¯ã·ã§ã³ã倧éã«çºçããŸãã
ããŠããã¹ãããã¹ãããããã¡ã€ãªã³ã°ããã¹ãå®è¡æéã®ççž®ããªãã¡ã¯ã¿ãªã³ã°ãå床ãã¹ããè¡ããŸãã
åè¿°ã®TastyPieã¯åãåçã§åäœããŸãã
OKãJSããã³ããšã³ãã¯ã©ãã§ããïŒ
JSããã³ããšã³ãã§ã¯ãç§ã¯ãŸã äœãã©ãã§ç解ããŠããªãã®ã§ããã
äžæ¹ã§ãããããçš®é¡ã®æšæºãããªããã»ããµããã¹ãããã»ããµãéåžžã«å€ããããŸãããäžæ¹ã§ããããã¯éçºããŸã£ããåçŽåããŸããã æ¢åã®ãœãªã¥ãŒã·ã§ã³ã®ã»ãšãã©ã¯ããã³ãã¬ãŒããè€è£œããŠãã©ãŠã¶ã«è»¢éããå¿ èŠããããŸãããã®åŸãæã§EventSourcingãæŽçããJSã§ã¢ãã«ãéšåçã«è€è£œããæ€èšŒãå®è¡ããå¿ èŠããããŸãã
å€ãã®å Žåãæ¢åã®ããŒã«ã®éçºãå€éšãã芳å¯ãããšãé ãã«è¡ãã»ã©é£ãããªããå®éã®åé¡ã®è§£æ±ºã«ãŸããŸãéäžããŠããªããšããå°è±¡ãåããŸãã åæã«ãæ¢åã®ãã¹ãŠã®ããã³ããšã³ããããžã§ã¯ãã¯éåžžã«å€ãã®æè³ãéããŠãããæ°åäžã®U. Dmurdish e-cuã«ã€ããŠè©±ããèªåèªèº«ã«æ³šç®ãéããããšããŠããŸãã
ãããŸã§ã®ãšãããããŒãã«ãå圢ãã¬ã³ãã©ãŒã䜿çšããŠReact.jsãåæ¢ããŠããŸãããããªãæ°åãæªããªããŸãã ããã§ã®åé¡ã¯ãéåžžã®UXã®å Žåã¯ãµãŒããŒãšã¯ã©ã€ã¢ã³ãã®äž¡æ¹ã§ã¬ã³ããªã³ã°ããå¿ èŠãããã prerender.ioã®ãããªããŸããŸãªWebãããã®ãµãã²ãŒãã«ã¯æ£åžžãªããã©ãŒãã³ã¹ããªãããšã§ãã
ç§ã¯ãæè¿ã®JSããã³ããšã³ããä»ã®ç°å¢ã§ç¹ã«ã¬ã³ããªã³ã°ãããªããšããçç±ã ãã§ãnode.jsãã¹ã«ã«ããããªãçç±ãæ¬åœã«ç解ããŠããªã人ã®1人ã§ãã ããã§ã¯ãååãšããŠãjsonã§htmlãè¿œãæãããšã劚ãããã®ã¯ãããŸãããWebãœã±ãããšãã³ã°ããŒãªã³ã°ãä»ããŠããªã³ã¯ãã¯ãªãã¯ãããšãã«ããã³ãã¬ãŒããšå€æŽãããŒãžã«è»¢éããŸãã 次ã«ãããããããçŸåšã®DOMããªãŒã«é©çšããŸããããŒãžäžã®ã«ãŒãã£ã³ã°ãã¢ãã«ãæ°ã«ããå¿ èŠã¯ãããŸããããã©ãŒã ãæ€èšŒããããã®ã«ãŒã«ã¯ãdata- *å±æ§ãšæ£èŠè¡šçŸã§èšè¿°ã§ããŸãã ã³ã¬ã¯ã·ã§ã³ãšãã³ãã¬ãŒãã®ãã¹ãŠã®å€æŽã¯ãµãŒããŒåŽã§æ¢ã«è¿œè·¡ãããã¬ã³ããªã³ã°ãããããããéä¿¡ã§ãããããVirtualDOMã¯ããã«å¿ èŠãããŸããã
ãŸããäžè¬çã«ã¯ãããªãã¿ã®jinja / twig'ahãä»ã®ctppã§ãã³ãã¬ãŒããäœæããããŒãžããšã«1ã€ã®JSãšã³ã¬ã¯ã·ã§ã³ã管çããããã®å°çšã³ã³ãããŒã©ãŒãè¿œå ããŸããã 確ãã«ããã®ãããªããšã¯ãEventSourcingãå©çšå¯èœãªå Žåã«ã®ã¿ïŒããã·ã¥éç¥ã§ïŒå®å šã«æ©èœããŸãã ãããã£ãŠããã©ãŠã¶ã®åŽããã¢ãã«ãšãã¥ãŒãè€è£œããå¿ èŠã¯ãããŸããããããã¯éåžžã«å€§ããªäœæ¥ã§ãã ã¢ã€ãã¢ãæ確ã§ããããšãé¡ã£ãŠããŸãã
ãã³ãã¬ãŒããšã³ãžã³ããHTMLããŒãžãåæ§ã®JSONãšããŠè»¢éã§ããŸã
{ "action": "append|remove|replace", "selector": "#HaveANiceDay", "tagName": { // optional "attrs": [ { "name": "value" }, "name", ], "content": { {"otherTagName": { ... }}, }, }, }
ãã®æ¹æ³ã§ãã©ãŠã¶ããŒã¹ã®ãã³ãã¬ãŒãããã³ã³ã¬ã¯ã·ã§ã³ç®¡çãå®è¡ããææ°ã®MVCãã¬ãŒã ã¯ãŒã¯ã®äžéšãšããŠãJSããã³ããšã³ãçšã®æ¢åã®ããŒã«ãç¥ããŸããã ã³ã¬ã¯ã·ã§ã³ç®¡çãšESã¯ãã§ã«Meteor.jsã«ãããŸãããäŸå€ã§ããå¯èœæ§ãé«ããYandexã¯ã©ããã«äŒŒããããªãã®ãæã£ãŠããŸãã...
ããã£ã ããã¯çŽ¹ä»ã«ã¯ååã§ãã
ç§ã¯ãããããŸãã«ãéå±ã§ã¯ãªãããšãé¡ã£ãŠããŸããç§ã¯äœãæ°ããããšã話ããããªãèªèº«ã®ããã«èããããã«ä¿ãããšãã§ããŸããã
楜ããæéããéãããã ããã
å¿ èŠã«å¿ããŠãããã«äœããè¿œå ãããšã©ãŒãä¿®æ£ããŠæ確ã«ããŸãã
ãã¹ãŠã®ã³ã¡ã³ãã¯ååŸã«éä¿¡ãããŸãããã³ã¡ã³ããæ£ããããªãã§ãã ããã