RxSwift 강의 리뷰


오늘의 포스팅은 수강 만족도가 정말 높았던 Fast CampusRxSwift 강의 리뷰입니다.


RxSwift Code

이 강의가 나와 맞을까?

아마 이 강의 수강을 고민하시는 분이라면,

등등 다양한 백그라운드의 개발자 분들이실텐데요.

이 강의는 초급자를 대상으로 하는 강의라기 보다, Swift 언어로 iOS 개발에 어느 정도 익숙한 상태에서 점프업을 원하시는 분에게 최적화된 강의라는 생각이 듭니다. 즉 1️⃣ 번 분들에게 최적화된 강의라고 생각합니다.

안드로이드 개발을 하셨던 분들(3️⃣)이라도 스위프트 문법이나 Xcode(특히 스토리보드, xib) 사용이 익숙하지 않다면 그 부분을 해결하고 오지 않으시면 수업시간에 그냥 청강이 될 수 있을 것 같구요.

앱 개발 자체에 처음 입문하시는 분(4️⃣)이라면 이 강의보다는 iOS 입문 강의를 먼저 수강하시는 게 맞을 것 같습니다. 혹은 입문 강의를 듣고 있는 상태에서 이 강의를 같이 병행하시는 것도 추천합니다.

저는 비전공자 출신으로, 온라인 커머스 기획일을 하다가, 개발로 전향하여 2017년 9월부터 시작하는 iOS 개발 스쿨을 2개월 정도 듣고 있는 상태에서 2017년 10월 말에 RxSwift 강의를 병행하였습니다. 즉 저는 스위프트를 배운지 2개월 밖에 되지 않은, 2️⃣번에 해당되는 수강생이었는데요.

2년 넘게 IT 서비스 기획 업무를 하면서, 개발에 대한 지식이 아주 없는 편은 아니었지만, 스위프트를 첫 언어로 개발을 시작한지 얼마 안 된 상황이었기 때문에 강의 내용이 처음에는 조금 버거웠습니다.

그렇지만 조금 욕심을 부린다면, 강의를 마치고 났을 때 폭풍 성장을 경험할 수 있었기 때문에 2️⃣번 분들에게도 이 강의를 추천합니다.

RxSwift Main Project

핵심 프로젝트

RxSwift 강의에서 8주동안 진행하는 핵심 프로젝트는 깃헙 Repo Issue 앱 만들기 입니다. Github에서 제공하는 List issues for a repository API를 콜해서 특정 Repo를 입력하면, 해당 Repo에 포스팅된 Issue들을 콜렉션뷰에 뿌려줍니다. 직접 Issuecreate / edit 할 수도 있고, comment 를 작성할 수도 있습니다.

✔︎ Spec

핵심 프로젝트 리뷰

RxSwift 패스트캠퍼스 커리큘럼에 따르면, 총 8주 과정에서 4주동안은 위 프로젝트를 Swift로 작성하고, 남은 4주 동안은 RxSwift로 포팅하게됩니다. 하지만 실제로는 Swift로 구현하는데 3주정도 소요됐고, Rx로 포팅하는데 2.5주 정도 소요되었습니다. 나머지는 2.5주는 RxSwift 이론을 배우거나, RxSwift를 이용한 다양한 샘플 프로젝트를 진행하는 데 사용되었습니다.

1-4주차 리뷰

저는 이 프로젝트 자체가 정말 현업에 응용할 수 있는 모든 것을 담고 있는 프로젝트였던 것 같아서 너무너무 좋았습니다. 강사님이 커리큘럼으로 이 프로젝트를 구성하신 것이 정말 신의 한수인 것 같아요. 👏🏻 실무도 바쁘실텐데, 매 주 이렇게 고퀄리티의 코드 파일들을 직접 준비해주셨다는 것이 놀랍기도 하고 감사한 부분입니다.

RxSwift로 넘어가기 전인 4주 동안에도, 강사님의 실무 경험이 묻어나는 노하우들이 담긴 코드를 전수받으면서 저는 코드 구조화에 있어서 정말 몇 단계 점프업 할 수 있었습니다. “이렇게 추상화를 하는구나!”, “xib를 이렇게 다양하게 활용할 수 있었구나”, “protocol이 이래서 필요하구나” 등등.. 특히 수업에서 배운 프로토콜과 제너릭, xib 활용법들은 제가 진행중인 개인 프로젝트에도 폭풍 응용하고 있습니다.

하지만 누군가에게 장점으로 느껴지는 것이 누군가에겐 단점일 수도 있을 것 같습니다. 만약 스위프트로 iOS 개발을 이미 오래 하셨고, 함수형 프로그래밍과 RxSwift 학습만이 유일한 목적이었다면 초반 3주차 까지는 복습하는 시간이었을 수도 있었을 것 같습니다.

수업 필기 Sample

✔︎ 좋았던 점

✔︎ 1-4주차 사용 Cocoapod


5-8주차 리뷰

4주차 부터는 본격적인 Rx 수업이었는데요. RxSwift로 들어오면서 Observable이라는 개념을 익히고, 객체지향에서 handler로 비동기 문제를 해결하던 것들이 Observable - Subscribe 를 통해 스트리밍(!)되는 것처럼 작동하는 것이 신기하기도 하고 효율적으로 느껴졌습니다.

✔︎ 좋았던 점

✔︎ 5-8주차 사용 Cocoapod

✔︎ 아쉬웠던 점

강사님께서도 말씀하셨지만, RxSwift로 이 프로젝트를 포팅하기 이전에 observable과 더 친해지는 시간을 갖기 위해 다양한 Rx 샘플 프로젝트들을 먼저 다뤄보는 것이 더 수강생 친화적일 것 같습니다.


서브 프로젝트 리뷰

RxSwift와 친해지는 계기를 마련하기 위해, 강사님께서 다양한 예제들을 준비해주셨습니다. 이 부분을 메인 프로젝트를 진행하기 이전인 4~5주차에 했었다면 좀 더 좋았을텐데, 6주차 정도에 진행했어서 조금 아쉬움이 있습니다. 확실히 요런 미니 프로젝트들이 간단하기도 하고 재밌기도 훨씬 재밌습니다. (ㅋㅋ)


Reactor Kit

강좌 마지막 시간에는 스위프트계의 젊은 천재 수열님이 만들어주신 ReactorKit 을 잠깐 맛보는 시간을 가졌습니다. 뷰는 UI처리만 하게 하고, 비즈니스 로직들을 담은 모델은 Reactor가 감싸게끔 설계하는 방식입니다. 실제로 ReactorKit은 강사님이 근무하고 계신 Kaka..🤧에서도 몇몇 프로젝트에 사용하고 계시다고 합니다. 😁

Reactor Kit 강의노트

✔︎ Reactor Kit?


이론 vs 실습

doneButton.rx.tap
            .flatMap { [weak self] _ -> Observable<Model.Issue> in
                guard let `self` = self else { return Observable.empty() }
                let title = self.titleTextField.text ?? ""
                let body = self.bodyTextView.text ?? ""
                return App.api.postIssue(owner: GlobalState.instance.owner, repo: GlobalState.instance.repo, title: title, body: body)
            }.map { _ -> Void in
                return ()
            }.do(onNext: { [weak self] _ in
                self?.dismiss(animated: true, completion: nil)
                }, onError: { error in
                    
            }).bind(to: reloadSubject!).disposed(by: disposeBag)


수업 듣기 전에 보면 좋아요


요약

✔︎ 수업 자료

✔︎ 수업 방식

✔︎ 질문에 대한 답변

✔︎ 수업 인원

✔︎ 주관적 난이도

✔︎ 주의 사항

맺음말