얼마전에 Android 앱 개발에 참여하게 되면서, RxJava 를 접하게 되었습니다.

처음에는 __비동기작업을 처리하기 위한 수단__으로 사용을 하였습니다. RxJava 를 이용한 비동기처리는 쉽고 간단하였으며 retrolambda 와 함께 사용하면 코드도 무척 깔끔하게 만들 수 있었습니다.

하지만 그것이 끝은 아니었습니다. 비동기처리는 RxJava 가 가져온 이득의 일부일 뿐이었습니다.

지금은 전 RxJava 를 사용하여 __data-flow 에 기반한 프로그래밍__을 하고 있고, __mvvm 형태로 개발__을 진행하여 좀 더 단위테스트에 적합합 구조로 프로젝트를 만들어가고 있습니다. 그리고 RxJava 를 통해 __함수형 프로그래밍__에 대해 많은 관심을 갖게 되었습니다.

RxJava 를 Android 개발 전반에 활용하려면 학습코스트도 높습니다만, 단순히 비동기처리를 위해서 도입한다고 하면 아주 어렵지는 않을것입니다.

RxJava 를 접한지는 오래되진 않았지만, RxJava 로 인해 프로그래밍에 대한 시야가 매우 달라지게 되었고 관심사도 달라졌습니다. 또 RxJava 에 대한 경험을 공유하고 다른분들의 의견과 이해를 공유할 수 있으면 좋겠다는 생각을 하게 되어, 이번 포스팅을 작성하게 되었습니다.

Android 개발에 대한 경험이 많지 않은 관계로, 포스팅 내용이 많이 빈약할수도 또 오류가 있을수도 있습니다. 그런 부분이 보인다면 언제라도 따끔하게 지적 부탁드리겠습니다.

RxJava 는 결코 쉽지 않습니다! 학습비용도 높고 특히나 control-flow 형태의 프로그래밍이 익숙한 사람들이라면 더더욱 생소하고 어렵고 접근하기 어렵습니다. 하지만 조금만 노력을 한다면 Android의 비동기처리를 쉽게 처리할 수 있는 방법을 아실 수 있고, 거기서 좀 더 노력한다면 새로운 패러다임을 사용한 프로그래밍 세계에 입문하실 수 있을것입니다.

감사합니다.

구성

RxJava with Android 는 이 포스팅을 포함하여 총 5개의 포스팅으로 구성해보았습니다.

RxJava with Android - 0 - 시작에 앞서는 지금 보시는 포스팅입니다.

RxJava with Android - 1 - RxJava 사용해보기에서는 RxJava 가 어떤 도구인지 기본적인 활용방법은 무엇인지 이야기하겠습니다.

RxJava with Android - 2 - RxJava 로 Android 비동기처리에서는 RxJava 를 사용하여 Android 에서 비동기처리를 어떻게 하는지, 주의해야 할 점은 무엇이 있는지에 대해서 이야기하도록 하겠습니다. Android 개발에 있어서 비동기처리는 무척 성가신 작업이고, RxJava 가 가져다 주는 이득은 매우 크다고 생각합니다. 또한 상당수 개발자들이 RxJava-RxAndroid 를 사용하는 주 목적은 이런 비동기처리입니다. 따라서 비동기처리의 RxJava 에 관심있으신 분이라면 이 포스팅까지만 읽으셔도 괜찮습니다.

RxJava with Android - 3 - MVVM 형태로 개발하기에서는 MVVM 형태로 코드를 작성하는 방법에 대해서 이야기하겠습니다. 이미 Robobinding 과 같은 프레임워크를 통해서 Android 에서도 MVVM 형태의 개발이 가능합니다. 여기서는 Robobinding 을 사용하는 것은 아니구요. RxJava 를 이용해서 MVVM 형태로 layer 를 나누고 개발하는 과정을 공유하도록 하겠습니다.

RxJava with Android - 4 - dataflow 프로그래밍에서는 RxJava 를 통해 data-flow 에 기반한 프로그래밍에 대한 경험을 공유하겠습니다. 여기선 조금 생소한 모습의 코드가 많이 보일 수 있습니다. 그렇지만 저는 이런 형태의 코드를 작성하게 되면서 data 의 흐름에 대해 좀 더 명확하게 정의할 수 있었고, 이런 부분들이 이후에 기능추가, 요구사항을 반영하기에 적합한 구조로 변경되었다고 생각하고 있습니다.