소규모 앱에서 구현하는 싱글 스토어의 강도를 말합니다.

전설



이 기사는 모바일 팩토리 Advent Calendar 2017 12일째 기사입니다.

11일째의 기사는 @아키히로_0228씨의 「 【Unity】Zenject에 배우는 Dependency Injection 」였습니다.

Unity를 예로 이번 기사를 게시하지만 Unity 요소는 얇습니다.

싱글 스토어란 무엇인가



지난 1년 만에 flux나 redux라는 말이 JS계 쿠마에서는 유행하고 있다.
자세한 내용은 다른 많은 기사에 맡길 것입니다.

flux(redux)를 Unity로 구현하는 경우



Unidux 라는 것이 있기 때문에, 이것을 사용하는 것이 좋을 것이다.

하지만 그런 대규모 아키텍처 중 앱에 필요하지 않습니다. .



그런 당신이라도 Store만은 구현해 두는 것을 추천하고 싶다



flux에서의 Store란 무엇인가?


  • API 캐시 대신 View 용 캐시
  • View는이 데이터를 bind하여 변경 사항을 감지합니다.
  • Store는 Dispatcher (Reducer)에 의해 업데이트됩니다


  • Store는 어떻게 구현되는가?



    Singleton!!

    앱 상태를 단일 스토어에서 관리하는 이점



    NPE의 위험이 감소


  • 싱글 톤이므로 데이터 라이프 사이클이 앱 라이프 사이클과 일치합니다
  • 이것은 앱이 실행되는 동안 항상 데이터가 있음을 의미합니다
  • 즉 NPE의 위험이 감소된다


  • 앱 규모가 커지면 Flux 아키텍처로 마이그레이션할 수 있습니다.


  • 다행히도 앱이 늘어나고 규모가 커지면 대규모 아키텍처로 마이그레이션 할 수있는 여지가있는 것은 매력적입니다.


    View의 상태를 재현할 수 있다


  • 예를 들어 Clash가 발생하면 크래시 보고서에 Store 정보를 올려 놓으면 View의 상태를 재현 할 수 있습니다.
  • 특정 단말에서 일어나는 문제 등도 검증이 용이해진다


  • Store만 구현하는 전략





    Store를 Model으로 취급 MVVM으로 구현


  • 다른 Scene이나 VM에의 이벤트 전파는, UniRx.Subject를 모은 AppEvents 싱글 톤 클래스를 준비해 거기를 경유시킨다
  • 데이터는 Entity로


  • flux화시에 필요한 대응


  • Store와 View의 바인딩은 flux화 후에도 사용할 수 있다
  • VM에서 직접 Store로 설정한 것을 Dispatcher에 던지고 Dispatcher가 Reducer로 분배합니다.
  • Reducer는 적절하게 각 Store에 데이터를 저장합니다
  • AppEvents를 Observe하고있는 다른 Scene은, Store의 상태를 Observe 하도록(듯이) 한다


  • 요약


  • 이번은 Unity를 예제로 했지만, 어느 언어로도 적용할 수 있다
  • flux 아키텍처를 생각한다면, 일단 Store만으로도 구현하는 것이 쉽습니다.

    다음은 @lycoris102의 "[Unity] BuildSetting의 Scene 정의를 잘하고 싶다"입니다. 좋게 되어 그렇게.
  • 좋은 웹페이지 즐겨찾기