RxSwift Introduction
RxSwift에 대해 하나씩 이해해가면서 정리한 내용입니다.
ReactiveX가 어떻게 해서 생겨나고, 어떤 흐름을 통해 유행하게 됐는지 알아보는 내용으로 구성하였습니다.
Reactive Extensions
RxSwift에 대해서 알아보기 전 왜 이것이 유행이 됐고, 어떤 이유에서 사용해야 하는지 알아볼 필요가 있다고 생각했는데요.
MS에서 Reactive Extensions(줄여서 Rx)를 고안하고 만들었단 사실은 알고 있을 겁니다. 하지만 왜? 어떤 이유에서 이것을 고안했을지에 대해서 궁금해졌습니다.
인터넷에서 해당 내용에 대해 찾던 중 아래 읽어볼 만한 블로그를 만나게 됐습니다. 번역본이고 본인의 생각이 어느정도 들어갔지만 탄생배경에 대해서 깔끔하게 설명해주신 것 같았습니다.
블로그 내에 있는 탄생배경을 보면 아래와 같은데
Rx의 탄생 배경이 비동기 프로그래밍 문제를 해결하는데 있다. 비동기 프로그래밍은 어렵다. 비동기 코드가 많아지면 제어의 흐름이 복잡하게 얽혀 코드를 예측하기 어려워진다. 따라서 전통적인 절차적 프로그래밍으로는 이 문제를 풀기가 쉽지 않다.
이는 곧
사용자의 요구사항, 더 화려한 UI 인터렉션과 더 빠른 반응 속도를 요구하는 시대에 맞춰 프로그래밍을 하기 위해 고안돼었다고 할 수 있을 것 같습니다.
모든 내용에 대해 담기는 어려우므로 좀 더 정확한 탄생 배경 및 자세한 내용에 대해 알고 싶으시면 위의 블로그를 참고하시면 이해가 되실 수 있을 것 같습니다.
ReactiveX의 디자인 패턴
ReactiveX is a combination of the best ideas from the Observer pattern, the Iterator pattern, and functional programming
RxSwift를 접하기 전에 저 두 디자인 패턴에 대한 이해가 필요합니다. 위의 인용문에 써있듯이, 두 패턴을 기반으로 고안됐기 때문에 두 패턴을 이해하고 접근하면 훨씬 쉽게 이해가 되실 겁니다.
reactivex.io에서는 두 패턴에 대한 설명 및 두 패턴을 기반으로 어떻게 프로그래밍 하는지에 대해서 나와있으니 읽어보시면 될 것 같습니다.
RxSwift
Swift에서 반응형 프로그래밍(Reactive Programming)을 하기 위한 라이브러리.
RxSwift는 ReactiveX의 Swift버전입니다. 문법은 동일하고 어떻게 Swift내에서 활용할 수 있는지, 또 사용가능한지에 대해 기술하고 SDK형식으로 배포하고 있습니다.
- RxSwift
- RxCocoa
- RxTest
등을 Import하여 Rx형태로 프로젝트를 진행 할 수 있습니다.
또한 RxSwiftCommunity에 가시면
등 Rx관련 프로젝트나 유틸리티를 제작하고 있으므로 함께 참고하면 좋을 듯 합니다.