Programer/iOS

[iOS] 개발에 사용하는 라이브러리 정리 & 추천

아즈샤 2019. 5. 30. 23:21
반응형

프로젝트를 하면서 가장 많이 사용하는 라이브러리를 정리 및 추천해볼까 합니다.

어디까지나 주관적인 생각이며, 이 글은 개발하는데 어느정도 참고로만 보시면 좋을 것 같습니다.

(2020.08.06 내용 보충 하였습니다.)

 

Framework

- ReactorKit (https://github.com/ReactorKit/ReactorKit)

ReactorKit은 전수열님이라는 유명한 개발자님이 만드신 프레임워크입니다.

MVP와 MVVM에서 혼란을 겪다가 (무엇보다 개발자마다 각자 철학으로 인해 여러가지 스타일이 있었고, State 관리가 싶지 않았음), RxSwift 오픈체팅 방에서 알게 되었습니다.

- 정해진 템플릿이 있다는 점

- State 관리가 굉장히 편하다는 점

- RxSwift랑 잘 어울리는점 (RxSwift를 자연스럽게 배울 수 있음),

- 또한 여러 예제가 있어 MVVM / MVP보다 좀 더 쉽게 접근할 수 있다는 장점이 있습니다.

추가로 최근 프로젝트를 ReactorKit를 사용했는데, 현재까지 Crash 발생이 굉장이 낮았습니다.

물론 ReactorKit 를 사용해서 100% 말할 수는 없지만, UI단과 로직단을 적절히 분리할 수 있어 안정성있고, 유지보수도 용이합니다.

 

Rx

- RxSwift (https://github.com/ReactiveX/RxSwift)

처음에는 배우기 어려울지 몰라도 어느정도 감을 잡으면 스트림을 통한 비동기 처리를 굉장히 편하게 구현할 수 있습니다.

한 예로, 예전에 서버와 동기화 할 때(여러 API를 한번에 처리하는 경우)에는 Sync / Async 오퍼레이션 큐를 직접 구현해서 사용했지만 RxSwift를 사용하면 merge / concat 으로 API를 한번에 처리할수 있었습니다.

RxSwift를 입문하고자 한다면 유투브 곰튀김님 강의를 추천합니다.(https://www.youtube.com/channel/UCsrPur3UrxuwGmT1Jq6tkQw)

 

- RxCocoa (https://github.com/ReactiveX/RxSwift/tree/master/RxCocoa)

버튼이나, 테이블뷰 등 UI를 Rx로 처리할 수 있게 해주는 라이브러리입니다. 가장 Rx를 기본적으로 사용해 볼 수 있지 않을까 싶습니다.

처음에는 저도 버튼 이벤트나, 테이블뷰 구현된 것을 RxCocoa 형태로 바꾸는 것 부터 시작하였습니다.

RxCocoa 말고도 RxSwift 커뮤니티에서는 다양한 Rx 라이브러리를 제공해주고 있습니다. (https://github.com/RxSwiftCommunity)

 

- Moya/RxSwift (https://github.com/Moya/Moya)

Alamofire를 사용하여 network 처리를 굉장히 편하게 해주는 라이브러리입니다. API 들을 Enum으로 편하기 관리 할 수 있고, Rx로 기본적으로 지원을 해주기 때문에 편리하게 사용할 수 있습니다. 또한 ReactorKit과 잘 사용할 수 있습니다. ReactorKit과의 조합은 전수열님의 Dribble 예제를 참고하시면 많은 도움이 되실겁니다.

 

Local Database

- GRDB (SQLite) (https://github.com/groue/GRDB.swift)

Realm를 사용하기 전에 SQLite를 사용했는데, SQLite를 굉장히 편하게 사용할 수 있다는 장점이있습니다.

문서화도 잘되어 있고, Rx도 역시 지원하고 있습니다.

 

- Realm (https://realm.io/kr/docs/swift/latest)

이제는 많은 분들이 사용하는 Realm입니다. 개인적으로는 속도가 정말 빠르다는 생각이 듭니다. 데이터 모델을 생성하면서 구현할 수 있어서 생산성에도 좋은 것 같습니다. 다만 사용하는 쓰레드를 주의해서 사용해야합니다. Realm 역시 Rx를 지원합니다.

 

- Magic Record (https://github.com/magicalpanda/MagicalRecord)

Coredata를 사용하시는 분들에게 추천합니다. Coredata를 좀더 쉽게 사용할 수 있습니다.

 

UI

- SnapKit (https://github.com/SnapKit/SnapKit)

AutoLayout 같은 UI를 코드로 구현한 때 편리한 라이브러리입니다.

최근, 프로젝트를 협업하면서 StoryBoard를 같이 사용하는 것이 좀 어려웠습니다.

개인적으로 저는 StoryBoard를 더 선호하고 생산성에도 도움이 된다고 생각하지만,

코드보다 느리고, 협업을 할 때 다른 사람이 고친 부분을 확인하기 어렵고, Git 를 사용하다가 충돌하는 경우가 많아 굉장히 불편했습니다.

이러한 단점을 대안으로 AutoLayout를 코드로 보기 쉽게 구현 할 수 있습니다.

- Hero (https://github.com/HeroTransitions/Hero)

뷰컨트롤러 간 이동을 할 때 굉장히 세련된 애니메이션를 설정할 수 있습니다. (ex: 앱스토어 투데이)

사용하기도 굉장히 쉽고, (Hero ID로 지정만 해주면 됩니다.) 앱을 좀 더 세련되게 만들 수 있습니다.

 

- lottie-ios (https://github.com/airbnb/lottie-ios)

GIF같은 에니메이션 효과를 낼 수 있는 라이브러리입니다. JSON를 이용하기 때문에 리소스 용량 부담도 크지 않고 이것 역시 잘 사용하면 세련된 앱을 만들 수 있습니다.

하지만..파일을 생성하는데는 디자이너의 도움(+설득)이 필요합니다. (물론.. 개발자도 배워서 할 수 있지만...)

 

 

ETC

- SwiftLint (https://github.com/realm/SwiftLint)

코딩 스타일을 가이드 해주는 라이브러리입니다. 코드를 좀 더 Swift 스럽게 사용하도록 도움을 줘서 몰랐던 코딩 스타일 발견할 때도 있습니다. 또한 설정을 통해 코드 스타일을 제한 강도를 조절할 수 있어 굉장히 유용한 라이브러리입니다.

협업을 하신다면 이 라이브러리는 필수라고 생각합니다.

 

- R.swift (https://github.com/mac-cain13/R.swift)

Image, String 리소스를 마치 안드로이드의 R처럼 사용할 수 있게 해주는 라이브러리입니다.

보안이 필요한 앱인 경우 한글을 소스코드에 넣는 것은 위험합니다. 따로 Strings 파일에 보관하여 편리하게 사용할 수 있십니다. 

"Azsha Blog" = 아즈샤 블로그; 로 작성해 두면 R.string.azshaBlog() 로 해달 문자열을 사용할 수 있습니다.

 

- Fastlane (https://fastlane.tools/)

빌드 / 앱스토어 업로드 / 배포 등을 자동화 시킬 수 있는 라이브러리입니다.

커맨드 라인으로 귀찮은 아카이브.. 앱스토어 업로드.. Test Flight 설정.. 을 한번에 끝낼수 있습니다!

기본 설정은 제 블로그 글을 참고해주세요

또한 Circle CI나 Bitrise 를 통해 연동도 가능한데.. 이부분은 아직 저도 테스트를 해보진 못했습니다.

 

 

마치며..

회사 프로젝트는 보안 때문에 이제 소스를 재활용 할 수 없어서, 개인 Github에 예제 프로젝트를 생성하여 정리하고 있습니다.

업무때문에 언제 업데이트 할지는 모르나 참고하실수 있도록 링크를 남겨두겠습니다. :)

https://github.com/azsha/AppStore

 

azsha/AppStore

Clone Project - ReactorKit, RxSwift, Moya, SnapKit.. - azsha/AppStore

github.com

 

반응형

 

반응형