RxSwift 에 대한 단상, 중간 보고, RxSwift 배우는 법. Ruin 공방 - 자재 창고



rxswift에 대한 이미지 검색결과


RxSwift 의 첫 인상은 그리 좋지 않았던 것으로 기억한다.

지금도 씁쓸한 맛이 나는 이 프레임워크는 "Rx 가 가장 쉬웠어요!" 라는 캐치프레이즈와 달리 배우기에 그리 쉽지 않은 것이 분명하다.

물론 이 커뮤가 주장하는 Learn Once, Write anywhere 에 대해, 지금에 와서는 이견이 없다.

이것이 정말로 Swift(를 비롯한 다른 언어들) 에 새로운 시각을 가져올 것이라는 점도 말이다.

강력한 FRP(Functional Reactive Programming) 속성으로 싸여진 이 마법 같은 프레임워크는 개발자가 꿈꿔왔던 완벽한 비동기 처리를 가능하게 해준다.

RxSwift 가 제공하는 선언적 문법은 정말 이게 되나? 싶을 정도로 간결했으며 그간 델리게이트를 사용해 비틀던 온갖 것들이 단지 몇 단계의 Chaining 만으로도 손쉽게 처리되었다.

아직 문법을 배우는 단계이고 본격적인 프로젝트는 시작도 못했지만 왜 RxSwift 를 그토록 밀어대는지 알 것도 같았다.


다만... 일견 완벽해 보이는 이 프레임워크의 유일한 단점은 접근성이라고 생각한다.

정말, 진심으로 배우기로 결심한 후 몇 주를 웹서핑으로 날린 결과는 어떻게 시작해야 할지 그 실마리도 못잡았다는 점이다.

모든 글과 강의가 RxSwift 를 언제, 어떻게 써야하는지 알려주지만 직접 사용할 정도의 지식을 얻기에는 큰 무리가 있었다.

누군가 말했듯, '들어갈 각이 안보이는' 상태인 것이다.

(이전에 React 를 처음 배울 때 이후 처음 느껴보는 감정이었다)

예제로 설명하는 코드들도 그리 다르지 않았다. 

기본조차 이해를 못하는데 실제 예제 코드는 더욱 많은 의문점만 낳을 뿐...

... 그렇게 한 번 절망한 이후 마지막으로 발견했던게 Raywenderlich 의 RxSwift 전자책이다.

몇 만원 상당의 요즘 보기 드문 비싼 책이었지만 마지막으로 배팅하는 심정으로 눈 딱 감고 질렀다.

그리고 절반 정도 본 결과 현재까지 매우 만족하고 있다.

어느 정도냐면, 정말 머리가 좋거나 도제식으로 직접 전수 받는게 아닌 이상, 이 책이 RxSwift 독학의 유일한 시작점이라 확신할 정도다.

(적어도 현재까지는 말이다)

약 25개의 챕터를 직접 연습할 수 있는 PlayGround example과 예제 프로젝트 프로그램을 같이 제공해 설명하는데 이게 또 기가 막히다.

단지 어떻게 하면 된다가 아닌, 이유와 그 배경까지 이해하기 쉽게 기술하고 있다는게 가장 큰 장점.

다만 당연하게도 영어로 쓰여 있는데... 뭐 읽는 속도가 좀 떨어지긴 해도 IT 업계라면 쓱 읽어내려 갈 수 있는 정도다.

어려운건 Rx 의 진입장벽이지 영어 그 자체는 아니니까.


일단 빠르게 챕터를 모두 끝내고 본격적으로 Rx 프로젝트를 시작해보고 싶은데 사실 지금까지 진척 속도가 그리 좋지는 않다.

아무리 설명이 잘되어 있다지만 중간중간 몇 시간을 보내는 어려운 파트가 분명히 존재한다.

Rx 에서 제공하는 Subject 와 Operator, Scheduler 등에 대한 적응과 기존 Swift 문법에 대한 미숙한 부분이 동시에 발목을 잡는다.

클로저가 이렇게 심오한건지도 처음 알았고, Swift의 스레드와 메모리 관리도 이제서야 어떤 방향인지 이해할 수 있었다.

(그간 만들던 앱과 프로젝트... 비슷했던 것들이 부끄러워지는 시점이다)

대충 배워서 쓰려고 했던 것에 대한 반작용이라 생각하고 이제부터라도 다시 공부 해보는 수 밖에.





[TreeCanvasView] 늦은 개발 완료 후기 Ruin 공방 - 개인 작품



기획부터 실제 배포까지 약 2달 정도의 시간이 걸린 것 같다.

중간에 쉬는 날이 좀 길어서 그렇지... 순수 작업일은 한 달이 좀 넘을까하는 수준.

하지만 막상 깃허브에 올려봐도 만족감보다는 허무함이 더 크다. 조금 더 잘 만들 수도 있었을텐데...

기본 코드 구조상 불안한 점도 적지 않고 애초에 좋은 코드가 아니라고 생각한다.

한 번에 한 가지 이상을 하는 함수들.

미련한 설계의 부산물을 어떻게든 극복하기 위한 여러 사이드 이펙트.

UI 와 데이터의 결합도 끝내 합쳐지지 못하고 각각인 채로, 그리 견고하지 않다.

설계의 문제, 그리고 코드 스타일의 문제. 모두 공부가 모자르다는 증거다.

이 라이브러리를 누군가가 쓴다고 했을 때, 나는 책임질 수 있는 코드를 만들었던걸까.

...스스로 좀 한심하다는 생각이 든다.

어떻게 해야 더 좋은 프로그램을 설계하고 더 끝내주는 코드를 쓸 수 있는걸까.

언젠가는 누군가 내 코드를 보았을 때, 감탄사를 내뱉을 정도로 내 실력이 위치해있으면 좋겠다.

모든 요소를 고려하여 최적의 선택을 하고, 그 선택을 한 치의 오차 없이 코드로 옮길 능력을 갖고 싶다.

더 높은 곳으로 향하고 싶다...


각 언어에 대한 짧은 생각 Ruin 공방 - 자재 창고

조금이라도 써본 것만 위주로.


C : 별 찍을 때 빼고는 써본 적이 많지는 않다. C++ 흉내를 내려고 매우 불편했던 점만 기억난다.

C++ : 대학교 때부터 배웠지만 점점 자신감이 없어져 바닥을 치는 언어. 진짜 C++ 을 다 아는 Human 이 이 세상에 존재할까...? 지금은 좋은 문제 풀이용 언어일 뿐. 그래도 쓰면 고향에 온 것 같은 느낌은 든다.

Java : 한국에서 일을 하니 주력으로 쓰게된 놈. 그런 것 치고 기초가 약하다는 생각은 항상 든다. 라이브러리, 프레임워크가 너무 많아...

Javascript : 제일 좋아하고, 좋아하고 싶은 언어. 심연에 도사린 예측 불가능성이 혈압을 오르게 하지만 그만큼 매력적이다.

Python : 학습 용도로 여러 번 써보았지만 정말 '잘 썼다' 라는 느낌이 한 번도 안들었다. 코드 한 줄 쓸 때마다 더 스마트한('파이썬한') 방법이 있다는 느낌이 들고, 실제로도 그 방법이 어딘가 있다! 그리고 2, 3 파편화 무엇?

Swift : 나름 밥줄 언어. 사실 얘도 잘 쓴다는 느낌은 안들지만 그 지점이 어딘지는 어렴풋이 보인다. 슬슬 FRP 해야지...

Objective-C : 지구-2 에서나 온 것 같은 외견은 진짜 끔찍함. 그런데 해야겠지? 일단 써본 사람 말로는 좋다고... 는 한다.



그리고 아래는 관심 목록.

Scala : 진짜 그렇게 재밌나?

Go : Node.JS 1위 컨트리뷰터가 노드 버리고 간 이유가 대체 뭘까?

Elixir : Erlang 의 병행 프로그래밍 언어의 피가 흐른다는 그 언어. Phoenix 도 그렇게 좋다던데?

C# : 조만간 할 듯. 꽤 쉽게 배울 수 있다고... 는 한다.


1 2 3 4 5 6 7 8 9 10 다음


통계 위젯 (화이트)

27
53
16008