ã¢ãã€ã« ã¢ããªéçºã®ã³ã³ããã¹ãã§ã¯ããªãã¶ãŒããã«ã¯ããŠãŒã¶ãŒ ã€ã³ã¿ãŒãã§ã€ã¹ (UI) ã§ãããã¢ã㪠ã¢ãŒããã¯ãã£å šäœã§ãããã³ã³ããŒãã³ãéã®å¹ççãªéä¿¡ãšåæãå¯èœã«ããäžã§éèŠãªåœ¹å²ãæãããŸããåºæ¬çã«ããªãã¶ãŒããã«ã¯ãæéã®çµéãšãšãã«ã€ãã³ããŸãã¯å€ãçºè¡ã§ãããªããžã§ã¯ãã§ãããäž»ã«éåææäœã®ç®¡çãšè€æ°ã®å€ã¹ããªãŒã ã®åŠçã«äœ¿çšãããŸãããããã®åŒ·åãªæ§é ã¯ãç¶æ 管çãšããŒã¿ ãããŒå¶åŸ¡ã®ããã®ä¿¡é Œã§ããã¡ã«ããºã ãæäŸããããšã§ãéçºè ããªã¢ã¯ãã£ãã§å¿çæ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããã®ã«åœ¹ç«ã¡ãæçµçã«ã¢ããªã®ä¿å®æ§ãšããã©ãŒãã³ã¹ãåäžãããŸãã
éåžžããªãã¶ãŒããã«ã¯ãModel-View-Controller (MVC)ãModel-View-ViewModel (MVVM)ããããã¯æè¿ã§ã¯æ³šç®ãéããŠããåæ¹åããŒã¿ ãã㌠ãã©ãã€ã ãªã©ã倿§ãªããŒã¿ ãããŒãšç¶æ 管çãã¿ãŒã³ãä¿é²ããäžã§éèŠãªåœ¹å²ãæãããŸãããã®ã·ã³ãã«ããšäºæž¬å¯èœæ§ã®ããã Observable ã¯ãç¹ã«ã¢ããªã® UI ã³ã³ããŒãã³ããã¢ããªã®ç¶æ ã®å€åãå€éšããŒã¿ã®æŽæ° (ãŠãŒã¶ãŒå ¥åããããã¯ãŒã¯ ãªã¯ãšã¹ãããµãŒãããŒãã£ã®çµ±åãªã©) ã«åå¿ããå¿ èŠãããå Žåã«ãè€éãªéåææäœãåŠçããããã®å¹ççãªãœãªã¥ãŒã·ã§ã³ãæäŸããŸããã¢ããªã®è€éããå¢ãã«ã€ããŠããªãã¶ãŒããã«ã¯å¢å ããã€ã³ã¿ã©ã¯ã·ã§ã³ ãã€ã³ããšäŸåé¢ä¿ã®ç®¡çã«åœ¹ç«ã¡ãé·æçã«ã¯ã¢ããªã®ã¹ã±ãŒã©ããªãã£ãšä¿å®æ§ãåäžããŸãã
Observable ã¯ãããŸããŸãªããã°ã©ãã³ã°èšèªã§ãAndroidãiOSãWeb ã¢ããªã±ãŒã·ã§ã³ãªã©ã®ããŸããŸãªãã©ãããã©ãŒã ã«ããã£ãŠå®è£ ã§ããŸããããšãã°ãKotlin ãšJetpack Compose䜿çšãã Android éçºã§ã¯ãLiveData ãš Flow ã¯ãå¹ççã§ã©ã€ããµã€ã¯ã«ãæèããæ¹æ³ã§ããŒã¿å€æŽãåŠçããããã«äžè¬çã«äœ¿çšããããäžè¬çãªç£èŠå¯èœãªæ§é ã§ããåæ§ã«ãiOS ã§ã® Swift ããã³SwiftUIéçºã§ã¯ãCombine ãã¬ãŒã ã¯ãŒã¯ã®åãæŽ»çšãããªãã¶ãŒããã«ã§éåæã€ãã³ããåŠçããããã®é«åºŠã§å®£èšçãã€ãªã¢ã¯ãã£ããªãœãªã¥ãŒã·ã§ã³ãæäŸããŸãã
Observable ã®äžå¿ã«ã¯ããœãããŠã§ã¢èšèšã§ç¢ºç«ããã Observer ãã¿ãŒã³ã®æ¡åŒµã§ãã Observable ãã¿ãŒã³ããããŸãããªãã¶ãŒããã«ã¯ãã€ãã³ããããŒã¿ãçæãããªããžã§ã¯ã (ãããã¥ãŒãµãŒ) ãšããããã®ã€ãã³ããããŒã¿ãæ¶è²»ããŠåå¿ãããªããžã§ã¯ã (ã³ã³ã·ã¥ãŒããŒ) ãåé¢ããŸãããã®åé¢ã«ãããåã³ã³ããŒãã³ããç¬ç«ããŠé²åããªãããã³ã³ããŒãã³ãéã«æè»ã§ã¹ã±ãŒã©ãã«ãªéä¿¡ã¡ã«ããºã ã確ç«ããããšãã§ããŸãã Observable ã¯ããããªãã·ã¥/ãµãã¹ã¯ã©ã€ã (pub-sub) ããã³ã€ãã¬ãŒã¿ãŒ ãã¿ãŒã³ã䜿çšããŠãè€æ°ã®ã³ã³ã·ã¥ãŒããŒããããã¥ãŒãµãŒããã®ã€ãã³ããŸãã¯ããŒã¿æŽæ°ããµãã¹ã¯ã©ã€ãããéç¥ãåä¿¡ããããã«å¿ããŠåŠçã§ããããã«ããŸãã
Observable ãã¿ãŒã³ã¯éåžžãObservableãObserverãSubscription ã® 3 ã€ã®äž»èŠãªãã¬ãŒã€ãŒã§æ§æãããŸãã Observable ã¯ããŒã¿ãŸãã¯ã€ãã³ãã®ãœãŒã¹ã衚ããŸãã Observer ã¯ãObservable ãå€ããšã©ãŒããŸãã¯å®äºä¿¡å·ãçºè¡ãããšãã«å®è¡ãããã³ãŒã«ããã¯é¢æ°ãå®çŸ©ãããªããžã§ã¯ãã§ãããµãã¹ã¯ãªãã·ã§ã³ã¯ãObservable ãšå¯Ÿå¿ãã Observer ã®éã«ç¢ºç«ãããæ¥ç¶ã§ããéçºè ã¯ãå¿ èŠã«å¿ããŠãªãã¶ãŒããŒããµãã¹ã¯ã©ã€ãããã³ãµãã¹ã¯ã©ã€ãè§£é€ããããšã§ãµãã¹ã¯ãªãã·ã§ã³ã管çããããŒã¿ ãããŒããã现ããå¶åŸ¡ããŠãã¡ã¢ãª ãªãŒã¯ãæãŸãããªãå¯äœçšã鲿¢ããŸãã
ã¢ãã€ã« ã¢ããªéçºããã»ã¹ã§ã¯ããµãŒããŒããã®ããŒã¿ã®ããŠã³ããŒããããŒã¿ããŒã¹ããã®ããŒã¿ã®ãã§ããããŠãŒã¶ãŒå ¥åã®åŠçãå€éš API ãšã®å¯Ÿè©±ãªã©ãè€éãªéåææäœãåŠçããããã«ãªãã¶ãŒããã«ãäžå¯æ¬ ã§ããããŒã¿ã®å€æŽã«ãªã¢ã«ã¿ã€ã ã§åå¿ããå¿ èŠã«å¿ã㊠UI ã³ã³ããŒãã³ããæŽæ°ããããšã§ãã¹ã ãŒãºã§å¿çæ§ã®é«ããŠãŒã¶ãŒ ãšã¯ã¹ããªãšã³ã¹ã確ä¿ããã®ã«åœ¹ç«ã¡ãŸããããã«ããªãã¶ãŒããã«ã¯è€æ°ã®ã³ã³ã·ã¥ãŒããŒéã§ç°¡åã«æ§æã倿ãå ±æã§ãããããè€éãªåæããŒã¿ ãããŒãç°¡çŽ åãããã¢ããªã±ãŒã·ã§ã³ ã³ãŒããããã¢ãžã¥ãŒã«åãããèªã¿ããããªããŸãã
ãªãã¶ãŒããã«ã®å¯èœæ§ã掻çšãã匷åãªæ¹æ³ã® 1 ã€ã¯ãAndroid ã® RxJava ã iOS ã® RxSwift ãªã©ã® Reactive Extensions (Rx) ã©ã€ãã©ãªãå®è£ ããããšã§ãããããã®ã©ã€ãã©ãªã¯ããªãã¶ãŒããã«ã®æäœãããã¹ã ãŒãºãã€å¹æçã«è¡ãããã®ãªãã¬ãŒã¿ãŒãã¹ã±ãžã¥ãŒã©ãŒããã®ä»ã®ããŒã«ã®è±å¯ãªã»ãããæäŸããŸãã Rx ã䜿çšãããšãéçºè ã¯ãç°ãªãã¹ã¬ãã ã³ã³ããã¹ããç°¡åã«åãæ¿ããè€æ°ã®ããŒã¿ ã¹ããªãŒã ãçµã¿åãããŠæäœããæ§æå¯èœãã€å®£èšçãªæ¹æ³ã§ãšã©ãŒãåŠçã§ããŸãã
AppMasterãã©ãããã©ãŒã ã§ã¯ããªãã¶ãŒããã«ã®äœ¿çšã¯ãéçºããã»ã¹ãåçåããã¢ããªãããå ç¢ã§å¿çæ§ã®é«ããã®ã«ããäžã§éèŠãªåœ¹å²ãæãããŸãã AppMasterãã¬ãŒã ã¯ãŒã¯ã®ãããªãµãŒããŒé§åãœãªã¥ãŒã·ã§ã³ãéããŠãªãã¶ãŒããã«ãšãªã¢ã¯ãã£ã ããã°ã©ãã³ã°æè¡ãçµ±åããããšã§ããã®ãã©ãããã©ãŒã ã¯ãApp Store ã Play Market ã«æ°ããããŒãžã§ã³ãéä¿¡ããããšãªããã¢ãã€ã« ã¢ããªã±ãŒã·ã§ã³ã® UIãããžãã¯ãAPI ããŒãã·ãŒã ã¬ã¹ã«æŽæ°ã§ããããã«ããŸãããã®ãã©ãããã©ãŒã ã«ãããéæè¡ãŠãŒã¶ãŒã§ããªãã¶ãŒããã«ã䜿çšããŠè€éã§ã¹ã±ãŒã©ãã«ãªãœãããŠã§ã¢ ãœãªã¥ãŒã·ã§ã³ãæ§ç¯ã§ããããã«ãªãããªãŒãã³ API ããã¥ã¡ã³ããšããŒã¿ããŒã¹ ã¹ããŒãç§»è¡ã¹ã¯ãªãããèªåçã«çæãããããããã¹ã³ãŒããè€éãããµã€ãºã®ã¢ãã€ã« ã¢ããªã±ãŒã·ã§ã³ã«å€çšéã§å°æ¥æ§ã®ããã¢ãŒããã¯ãã£ãæäŸãããŸãã ã