lovin***
2018-04-29

리액트는 2015년에 공개된 리액트 네이티브의 웹 개발 프레임워크가 등장하면서 리액트는 웹뿐만 아니라 iOS 및 Android 개발에서도 사용할 수 있는 프레임워크로 자리를 잡고 있습니다.
리액트는 함수형 프로그래밍을 기반으로 하는 개발 방식으로 많이 사용하는 객체형 프로그래밍 기법과는 사용하는 방식에서 차이가 있기 때문에 적응하는 데에는 시간이 좀 걸립니다. 오래 개발을 하신 분들은 순차형 프로그래밍에서 자바와 같은 객체지향형 프로그래밍으로 전환과 비슷한 패러다임의 변화를 느끼실 수 있습니다. (제가 그랬고 아직도 함수형 프래그래밍은 익숙하지 않습니다. ^^;)
그래서 리액트에 대한 개념을 좀 더 잡기 위해서 한빛미디어의 Learning React(러닝 리액트)를 한번 읽어보기로 했습니다. 그런데 결론적으로 이야기하자면 자바스크립트 및 ECMAScript에 대해서 잘 안다면 쉽게 이해할 수 있겠지만, 그렇지 않다면 좀 더 많은 수고를 들여야 합니다. 만약 자신이 자바스크립트에 익숙하다면 리액트에 대해서 잘 알 수 있을 것 같지만, 그렇지 않다면 자신에게 익숙한 프로그래밍 언어로 설명하는 리액트를 설명하는 책을 선택하는 것이 좋을 것 같습니다. ^^; 그렇다고 해도 이 책에서는 이 책의 내용을 이해할 수 있도록 ECMAScript에 대한 기본적인 문법을 설명하고 있기 때문에 그렇게 좌절을 할 필요는 없을 것 같습니다. ^^; 이해를 위해서 조금의 시간을 더 투자해야 하겠지만은요. (저는 자바스크립트가 익숙하지 않은 앱 개발자다 보니 이해하는데 시간이 좀 더 걸렸습니다.)
기본적으로 리액트라는 개념이 자바스크립트에서 시작되었기 때문에 자바스크립트로 설명하는 것은 어찌 보면 당연할 수 있습니다.
리액트를 이해하기 위해서 함수형 프로그래밍에 대해서 잘 알아야 합니다. 그러기 위해서 3장에서 순수 함수며 고차 함수 등에 대해서 점진적으로 설명하고 있어서 어렵지 않게 이해할 수 있을 것 같습니다. 그리고 리액트의 기본 개념을 기본 스크립트로 설명하고 이를 JSX로 다시 구현해서 설명하고 플랙스와 리덕스를 통해서 또 설명해서 기본 리액트의 개념을 이해하고 이를 쉽게 구현할 수 있는 라이브러리들로 어떻게 구현할 수 있는지 설명을 하기 때문에 기초부터 실무에서 사용하는 정도까지 이해할 수 있습니다. 또 책을 읽고 구현을 하면서 좋았던 것은 ColorList라는 특정 색들을 추가해서 점수를 매기는 기본 프로젝트를 기본 개념에서 리덕스를 활용해서 지속적으로 설명하기 때문에 앞서 설명했듯이 변경사항을 쉽게 파악해 볼 수 있었습니다. 좀 더 이해를 쉽게 하려면 https://github.com/enshahar/learning-react-kor 에 공유된 소스를 챕터별로 비교해서 변경사항을 찾아보면 이해할 수 있습니다.
물론 함수형 프로그래밍이 함수의 함수의 함수를 반환하는 함수를 말로 설명을 하고 있다 보니 한글로 적혀있더라도 글자 하나하나를 꼼꼼히 이해해야 합니다. ^^ 코드 하나하나를 이런 식으로 잘 설명을 했습니다. 그러니 내용이 참 많아져서 지루할 수도 있는데요. 정말 꼼꼼히 읽으면 저자가 세세한 부분까지 얼마나 열심히 설명을 하려고 했는지를 알 수 있습니다.
끝으로 책은 리액트에 대한 기본 설명을 하고 이를 자바스크립트를 통해서 자바스크립트에서는 어떻게 잘 사용하고 있는지를 서술하고 있는데요. 다른 플랫폼에서 이를 적용해서 이해하려면 두 플랫폼에 대해서 잘 알아야 하기 때문에 쉽지만은 않습니다. 하지만, 기본 개념만은 iOS든 Android든 비슷하고 실제 사용하는 코드들을 봐도 비슷한 것을 알 수 있습니다. 저도 아직은 리액트에 대해서 익숙하지는 않지만, 계속해서 프로그램을 해서 함수형 프로그래밍과 리액트에 대해서 익숙해지면 플랫폼별로 적용하는 것은 어렵지 않게 할 수 있을 것 같습니다.