hji7***
2021-07-24

이 책은 책리뷰를 위해 출판사에서 받아서 읽은 책입니다. 하지만 ("리액트"책이기 때문에, ) 출판사 리뷰가 아니더라도 꼭 구해서 봤을 겁니다. ( 이 책을 포함해서 리액트 책을 12권 읽었습니다. ) 이렇게 리액트에 대해 관심을 갖는건 리액트라는 라이브러리가 발전하는 방향성에 상당히 공감하고 있기 때문 아닐까 싶습니다.
2010년쯤 이었던 것 같습니다. 자바스크립트로 UX를 개발하는 프로젝트를 하고 있었는데요. 제가 사용하는 환경은 시스템 리소스가 많이 떨어져서 브라우저 올리기도 버거운 환경이었습니다. 그래서 동적으로 DOM 객체를 붙이는 일이 만만치 않았습니다. 분명 DOM API를 사용하는 것이 더 빠르다고 알고 있었는데, 어떤 상황에서는 innerHTML를 사용하는 것이 더 빠르더군요. DOM API를 여러번 쓰는 것보다는 innerHTML한번으로 해결하는 것이 더 빨랐기 때문입니다. DOM영역도 자바스크립트 엔진 측에서 보면 외부 메모리 공간이기 때문인데요. API를 통해 데이터가 넘어가는건, 용량보다 횟수에 비례해서 속도가 늦어지기 마련입니다. 그래서 만약 자바스크립트 영역에 DOM을 미러링 하는 개념을 만든다면, 그리고 업데이트 주기를 최소화 시킨다면 DOM API를 여러번 호출하는 것보다 훨씬 빠르고 유연한 라이브러리를 만들 수 있겠다 싶었습니다.
물론, 그럴 만한 시간은 없었습니다. 그 프로젝트 자체가 다른 팀에서 5개월 가량 붙잡고 있다가 진행하지 못하고 넘긴 프로젝트였고, 우리팀에서도 저혼자 겨우 일을 처리하고 있었기 때문입니다.
그후 2013년쯤 앵귤라라는 라이브러리를 사용하면서, 데이터 바인딩이라는 개념에 크게 놀랐던 기억이 있습니다. 물론 앵귤라는 2.0으로 올라가면서 하위호화성을 배제했기 때문에 큰 깨달음을 선사했습니다. "한놈만 믿지 마라" 이거죠.
그리고 리액트라는 라이브러리가 있는것을 알게 되었습니다. 역시 다른일을 하고 있었기 때문에 진지하게 공부할 수 없었지만, 그 컨셉이 특히 virtualDOM이라는 컨셉이 정말 맘에 들었습니다. 예전에 해보고 싶었던 개념을 누군가 더 멋진 방법으로 구현해 낸것 같아서 상당히 부럽고 감사하기도 했습니다.
그후 리액트가 컴포넌트 방식으로 구현되어 있는 것을 보고 약간 실망하게 되었습니다. 당시 저는 자바스크립트를 사용하면서 자바스크립트가 객체지향이 아니라 함수형 프로그래밍 쪽에 가까운 언어라고 생각했는데요. 리액트를 만드는 사람들이라면, 당연히 함수형 프로그래밍으로 구현했을 꺼라 믿고 있었거든요.
2016년 부터 리액트에 대한 책이 출판되었다는 이야기를 들으면 열심히 구해서 읽었습니다. 한동안 컴포넌트 형으로 점점더 발전해 나가는것 같더니, 2019년 초에 리액트 훅이 발표됩니다. 그후 함수형 프로그래밍 방식으로 리액트가 진화해 오는 것을 지켜볼 수 있었습니다.
그렇습니다. 저는 꽤 오랜시간동안 Virtual DOM을 함수형 프로그래밍으로 개발할 수 있는 환경을 동경하고 있었습니다. 하지만 그걸 가장 잘해줄것 같은 React가 컴포넌트 방식으로 구현되어 있었기 때문에 상당히 실망하고 있었던 거죠. 그러나 리액트 훅이 나오면서 상황은 완전히 변했습니다.
그리고 이 책은 제가 읽었던 어떤 리액트 책보다 리액트 훅에 대해서 다이나믹하고 정확하게 설명하고 있는 책입니다. 물론 이 책의 저자들도 전편( 저는 이 책의 1판도 2018년에 읽었습니다. )에서는 컴포넌트 기반으로 설명했지만, 2판에 들어오면서 설명하는 내용을 모두 함수형 프로그래밍 방식으로 전환했습니다. 책이 서술하는 구조는 비슷합니다. 앞쪽에서는 자바스크립트를 설명하고 중간에서 거의 끝까지는 리액트를 설명한다음 리액트의 응용을 설명하는 구조 입니다.
2018년 9월 17일에 1판을 읽으면서 정리했던 내용을 찾아보니, 1편에서도 자바스크립트를 설명하는 과정에서 함수형 프로그래밍을 강조했었더군요. 이 책의 저자들은 1판을 쓸때 부터 함수형 프로그래밍 방식으로 자바스크립트를 대하고 있었던것 같습니다. 그래서, 이 책의 저자들의 책을 읽을 때마다 공감을 하게 되는것 아닌가 싶네요. (저자들은 GraphQL 책도 쓴게 있습니다. )
아직도 리액트를 컴포넌트 기반으로 작업하는 개발자들이 많은 것으로 알고 있습니다. (제가 다니는 회사에서도 여전히 컴포넌트 기반을 선호하시는 분들이 많더군요. ) 하지만, 그건 개발자 자신에게 그리 좋은 선택은 아닌것 같습니다. 어차피 코딩은 사고 방식에서 오는 겁니다. 컴포넌트 기반 사고 방식을 가질것인지 아니만 함수형 프로그래밍 사고방식을 가질 것인지에 대한 문제입니다. "결정론적 사고"라고 하죠. 수학적 함수 모델을 기초로 코딩을 하는 겁니다. 이런 코딩은 TDD를 도입하기도 수월하고 버그도 확실히 많이 줄일 수 있습니다. 게다가 십수년 후에 우리가 계속 코딩을 하고 있다면, 함수형 프로그래밍이 주류를 이루고 있을 것이니 지금부터 열심히 연습해야 하지 않을까 싶은데요. 따라서. 함수형 프로그래밍 관점에서 리액트를 설명하고 있는 이 책은 리액트 개발자들에게 필독서가 아닐까 싶습니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."