/sample-rxswift-reactorkit-app

RxSwift ReactorKit RxFlow Sample App

Primary LanguageSwiftMIT LicenseMIT

RxSwift ReactorKit Sample App

  • 프로젝트 개발 설계 할때, 기본 구조에 참고 할만한(될만한) 샘플 앱을 만들어 보려 합니다.

상세 설명 (Description)

RxSwift 기반에 ReactorKit 아키텍쳐 라이브러리를 활용하여, iOS Sample App을 만들어보려합니다.

  • RxFlowDemo 소스를 많이 활용하여 이동처리 셈플 부분을 작성할 예정입니다. (적용 중)
  • RxReactorKit Examples 소스를 활용하여 화면 구성을 할 예정입니다. (적용 중)
  • 나머지 화면은 라이센스 사용 목록을 보여주는 정도로 할 예정입니다.
  • GitHubSearch 에서 네트워크 처리한 부분은 Drrrible 에서 네트워크 처리한 부분(Moya, MoyaSugar)을 참고한 방식으로 변경할 예정입니다.
    • MoyaSugar가 4.2 대응이 되어있지 않아 포크떠서 수정한 링크를 사용할 것입니다. 저처럼 Moya를 처음 사용한다면, MoyaSugar를 사용하면 처음에 조금 더 깔끔하게 사용할 수 있을 것이라 생각됩니다.
  • awesome-blogs-ios 소스도 참고하고 있습니다. 유용하다 판단되는 부분은 적극 활용하려고 합니다.

아키텍쳐 컨셉 (Architecture Concepts)

아키텍처 패턴 (Architecture Design Patterns)

샘플 앱은 ReactorKit을 사용합니다.

  • ReactorKit는 Flux와 반응형 프로그래밍의 조합입니다.
    사용자 Actions 및 View States는 관찰 가능한 스트림을 통해 각 계층으로 전달됩니다. 이러한 흐름은 단방향입니다.
    View는 Actions를 보낼 수 만 있고, reactor는 states만 emit 할 수 있습니다.

  • Action은 사용자 상호 작용을 나타내고 상태는 View State를 나타냅니다.
    Mutation은 action과 state 사이에서 브릿지 역활을 합니다.
    reactor는 mutate() 및 reduce()의 두 단계로 Action 스트림을 State 스트림으로 변환 단계를 거칩니다.

  • 상세한 내용은 https://github.com/ReactorKit/ReactorKit 에서 확인부탁드립니다.

     ReactorKit은 반응형 단방향 앱을 위한 프레임워크로,
     StyleShare와 Kakao를 비롯한 여러 기업에서 
     사용하고 있는 기술입니다.
    

컨셉 (Other concepts)

RxFlow 장점

  • 스토리보드를 유닛 단위로 쪼개서 UIViewController의 재사용성을 높임.
  • 네비게이션의 흐름(context)에 맞게 UIViewController를 다른 방식으로 보여줌.
  • 의존성 주입(Dependency Injection)을 쉽게 구현.
  • UIViewController에 있는 모든 네비게이션 매커니즘을 삭제.
  • 반응형 프로그래밍(Reactive Programming) 사용을 촉진.
  • 네비게이션에서 일어나는 대부분의 케이스를 처리하면서 선언형으로 표현.
  • 어플리케이션을 네비게이션의 논리적인 블록으로 나누어 처리.

요구사항 (Requirements)

옵션 (Optional)

  • SwiftLint
  • FLEX : For Debugging
  • firebase : 샘플 소스에는 미적용
  • crashlytics : 샘플 소스에는 미적용
  • (검토중) Fastlane

사용한 라이브러리 (Used Libraries)

시작하기 (Getting started)

Cocoapods 설정

  • 작성중

샘플 앱

구조

  • 작성중

주요 참조한 링크

Rx 구현 방식, 폴더 구조, 소스활용, ReactorKit 활용, Moya 네트워크 처리 방법 등등 여러가지로 참고 하였습니다.

  • Drrrible : ReactorKit을 사용하는 비공식 Dribbble iOS 응용 프로그램입니다.
  • awesome-blogs-ios : 어썸블로그 ・ 개발 블로그 모음 ・ 개발 잡덕들을 위한 본격 고퀄리티 개발 블로그 큐레이션 서비스 🕵️‍♀️ - iOS 버전.
  • ReactorKit Examples : ReactorKit 예제 소스
  • RxFlow Demo : RxFlow Demo 소스