ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [도서 리뷰] RxJava 프로그래밍
    [Review]/Book 2017.11.28 01:42

    한빛미디어 "나는 리뷰어다" 2017.10월 이벤트(라고 하지만, 11월 초에 받았으므로 11월 이벤트와 다름없는)에 당첨되어 리뷰하게 된, 이번 책은 바로, "(리액티브 프로그래밍 기초부터 RxAndroid까지 한 번에) RxJava 프로그래밍"이다.


    samsung | SM-G930S | Normal program | Pattern | 1/50sec | F/1.7 | 0.00 EV | 4.2mm | ISO-100 | Flash did not fire | 2017:11:28 00:54:54



    RxJava의 아이콘으로 사용되는 둥그런 물고기 모양의 그림과 어울리게 보라색 같은 핑크색 표지가 반긴다.


    상당히 어려운 RxJava임에도 불구하고 쉽게 풀어냈다는 의지를 표지에 담은듯한 느낌이 든다. 나역시 몇달전부터 표지만으로도 흥미를 끌었던 책이기 때문에 상당히 기대함으로 보기 시작하였다.



    samsung | SM-G930S | Normal program | Pattern | 1/60sec | F/1.7 | 0.00 EV | 4.2mm | ISO-100 | Flash did not fire | 2017:11:28 00:55:07


    RxJava 프로그래밍은 2017년 9월 4일 초판1쇄 발행이다. 나름 따끈따끈한 책이며, 그래서 RxJava 2를 도입하여 설명하였고, Android Studio 3.0을 기초로 설명하였다. 물론 이당시에는 정식 릴리즈가 배포된 상태가 아니기 때문에 Canary 8 기준이다. 이렇게 Beta도 아닌 버전으로 작업하기 위해서는 상당히 어려웠겠지만, 그만큼 최신 환경에서 작업할 독자를 배려한 것이라고 생각이 든다.



    samsung | SM-G930S | Normal program | Pattern | 1/60sec | F/1.7 | 0.00 EV | 4.2mm | ISO-80 | Flash did not fire | 2017:11:28 00:55:18


    도입하는 말에서도 눈에 띈 것은, 자바 개발자는 함수형 프로그래밍과 거리가 먼 사람들인데, 이 책에서는 대세가 함수형 사고방식과 리액티브 프로그래밍이라고 말한다. 사실 그렇다. 모던 언어가 범람하는 이 때에 아무리 Legacy 시스템의 근간이 되는 자바라고 할찌라도 이러한 대세를 거스르긴 어려울 것이다. 이것은 하나의 개발 사고방식이기 때문에, 단순히 언어의 특성을 아는 것과는 다르다. 사용법을 익혔다고 해도, 그 원리를 올바로 이해하지 못하면 의도와 다르게 개발할 수 있기 때문이다.


    그리고 이전에 접했던 것은 모두 RxJava 1.x를 기초로 했던 책들이지만, 이 책은 최초로 RxJava 2.x를 기반으로 한 책이라는 것을 강조하였다. 사실 RxJava 1.x와 2.x는 이름은 같지만 너무도 다른 버전이다. 쉽게 컨버팅할 수가 없다. 애초에 이해가 어렵기 때문이다. 이러한 것을 저자가 잘 알고 그러한 관점에서 배려하고 책을 지었다는 것으로 강조하고 있다.



    samsung | SM-G930S | Normal program | Pattern | 1/60sec | F/1.7 | 0.00 EV | 4.2mm | ISO-80 | Flash did not fire | 2017:11:28 00:55:28


    RxJava가 특성상 Lambda를 이용하는 것이 매우 일반적이기 때문에, 이것을 이용한 Java 8의 환경에서 작성했다는 것. 그리고 요즘 각광받는 gradle을 이용하여 빌드하였다는 것을 강조하였다. 물론 기존 시스템에 익숙한 이클립스 사용자를 위해 Java 프로젝트는 이클립스로 진행하도록 하였다. IntelliJ도 이클립스 못지 않게 인기가 많지만, Android Studio가 나온다는 것만으로도 위안을 삼아야 될 것 같다.



    이 책의 주 목차를 정리하면 다음과 같다.


    CHAPTER 1. 리액티브 프로그래밍 소개

    CHAPTER 2. Observable 처음 만들기

    CHAPTER 3. 리액티브 연산자 입문

    CHAPTER 4. 리액티브 연산자의 활용

    CHAPTER 5. 스케줄러

    CHAPTER 6. 안드로이드의 RxJava 활용

    CHAPTER 7. 디버깅과 예외 처리

    CHAPTER 8. 테스팅과 Flowable



    목차를 보면 느낌이 오는 것이, 길게 나열하지 않고 필요한 것이 이것이니 이것을 보는것이 좋겠다고 정리한 흔적이 보인다.



    samsung | SM-G930S | Normal program | Pattern | 1/60sec | F/1.7 | 0.00 EV | 4.2mm | ISO-64 | Flash did not fire | 2017:11:28 00:56:00


    일단, 기존에 RxJava를 접했던 사람들은 크게 문제가 없겠지만, RxJava가 무엇인지 이름조차 처음들어본 사람, 혹은 들어는 봤지만 하나도 모르는 사람을 위해 RxJava에 대한 간단한 히스토리와 큰 맥락에서의 필요성을 이야기 하고 있다. 크게 보면 RxJava로 처리할 경우 자바를 함수형 프로그래밍과 같은 구조로 사용할 수 있다는 것이다. 이것이 무조건 장점은 아니겠지만, 네트워크나 주변 I/O를 활용하는것이 이젠 일반화가 된 이 시대에는 뗄레야 뗄 수 없는 구조가 된 것이다.



    samsung | SM-G930S | Normal program | Pattern | 1/60sec | F/1.7 | 0.00 EV | 4.2mm | ISO-80 | Flash did not fire | 2017:11:28 00:56:21


    RxJava에서는 "마블 다이어그램"이라는것이 있다. 한번쯤 홈페이지를 방문한 사람이라면 처음보지는 않았을 것이다. 마블 다이어그램은 수없이 봤지만, 이것의 의미가 무엇인지, 읽는 방법도 설명해주는 항목을 기재하였다.



    samsung | SM-G930S | Normal program | Pattern | 1/60sec | F/1.7 | 0.00 EV | 4.2mm | ISO-80 | Flash did not fire | 2017:11:28 00:57:08


    그것도 아주 상세히 다뤘다. 이것을 보기 전까지는 각 도형들이 내려올 때 뒤집혀서 내려왔다는 것을 간과했었는데, 자세히보니 이것도 의미가 있는 것이었다. 이것은 flip함수에 대한 내용이기 때문이다.

    이렇듯 저자는 직접 자신이 겪었던 불편함과 궁금증을 차곡차곡 모아, 사람들의 간지러운 부분을 긁어주는 역할을 하려고 노력한 것이 엿보인다. 



    samsung | SM-G930S | Normal program | Pattern | 1/60sec | F/1.7 | 0.00 EV | 4.2mm | ISO-80 | Flash did not fire | 2017:11:28 00:57:45


    이 밖에도 안드로이드를 위한 챕터도 별도로 존재한다. RxJava만 예제로 들기에는 안드로이드에서도 RxJava를 많이 도입하는 추세이기 때문에 많은 아쉬움이 남지 않도록 배려하였다.



    samsung | SM-G930S | Normal program | Pattern | 1/60sec | F/1.7 | 0.00 EV | 4.2mm | ISO-100 | Flash did not fire | 2017:11:28 00:57:56


    이 책의 맨 뒷편에는 "국내 자바 개발자에게 맞는 RxJava 2기반의 프로그래밍 노하우를 알려준다"는 표현을 적어놓았다.


    이 말은 이 책에 대해 잘 설명한 내용이라고 생각한다. 이 책은 RxJava에 대해 교과서적인 내용을 담기도 하였지만, 그것보다는 저자의 노하우를 적었다는 느낌을 더 많이 받았기 때문이다. 그렇기 때문에 다른 책보다도 더 실무적인 부분에 도움이 되는 책이라고 생각이 든다.



    마지막으로 장점과 단점을 꼽아보면 다음과 같다.


    먼저 장점으로는


    - 저자의 실제적인 노하우가 엿보인다.

    - 물을 떠다주는 것이 아닌, 물을 떠먹는 방법을 알려준다.(실제 Reference 문서를 읽을 수 있는 능력을 길러준다.)

    - 각 개념에 대해서는 필요하다면 직접 그림을 그려서 설명한 부분이 많이 있다.

    - RxJava 2 및 Android Studio 3.0 기반을 도입한 것처럼 최대한 최신 기술 기준으로 기술하였다. 특히 RxJava 2로써는 최초의 책이다.



    단점으로 생각되는 부분은


    - 책의 구성이 조금은 산만하여 챕터별 핵심이 잘 와닿지 않는다.

    - 하고싶은 이야기의 나열식으로 되어있어, 구성이 깔끔하게 된 느낌을 받지는 못했다.

    - RxJava 1.x에서 2.x로 도입하려는 사용자를 위해 챕터를 별도로 할당하거나, 비교표를 풍부하게 삽입되었으면 하는 아쉬움이 있다.(간간히 나오기는 하지만 부족해보인다.)



    이 책을 평가해보면 다음과 같다.


    가격: 9 / 10

    내용: 9 / 10

    디자인: 8 / 10

    구성: 6 / 10



    저자: 유동환, 박정준

    대상자: 자바 중급 이상의 개발자, 리액티브 및 함수형 프로그래밍에 대해 알고자 하는 개발자, RxJava 2.x가 궁금한 개발자, 새로 프로젝트를 설계하는 개발자 등

    가격: 25,000원

    전체 페이지: 327페이지



    이 리뷰는 "한빛미디어"를 통해 도서를 제공받아 작성하였습니다.


    댓글 0

Designed by Tistory.