티스토리 뷰
GitHub 주소
https://github.com/helloworldjay/daumcafesearch
프로젝트의 시작
MVC와 스토리보드만 학습하다가 처음 현업에서 새로운 패턴과 UI도구를 만나고 굉장히 큰 어려움을 겪었어요.
MVC만 깊이 이해해도 빠르게 다른 패턴에 적응할 수 있을 줄 알았지만 생각보다 쉽지 않았고, 이것의 원인을 구현력의 부족이라고 판단했어요.
마찬가지로 UI 역시 상대적으로 직관적인 스토리보드로만 작업하다가 Texture라는 Flex Box 기반의 개념으로 UI를 구현하다 보니 그 어려움이 더 크게 느껴졌어요. 갑자기 코드로 작업한다는 것만 해도 접근하기 어려웠는데 라이브러리까지 익혀야 했었으니까요.
현재로서는 VIP(a.k.a. Clean Swift) 패턴과 Texture로 작업하는 것이 가장 익숙해졌지만, 익숙한 것보다 새로운 것에 도전해보고 싶었어요. 특히 지원하고 싶은 회사가 사용하는 패턴과 도구를 활용해보고 싶었어요.
그래서 이 프로젝트의 목적은 어려운 기술을 구현하는게 아니라 새로운 패턴과 UI 기술을 이해하고 습득하는 과정이에요. 또한 그 과정에서 생기는 문제점을 해결하고, 생각들을 정리해 나가는 것이 목표예요.
작업하며 작성한 글들을 조금 가다듬어 하나하나 올려갈 생각이에요.
MVVM 패턴과 Snapkit
VIP나 MVVM 패턴은 결국 "어떤 역할과 책임을 어떤 객체에게 부여할 것인가"에서 차이가 발생할 텐데, 단순히 이론으로만 학습하는 게 아니라 설계와 구현을 통해 MVVM 패턴을 체득하고 싶었어요.
특히 MVVM을 학습하면서 느낀 것은 MVVM 구조를 정의할 때 큰 틀에서의 역할 정의는 같지만 사람마다 조금씩 세부적으로 그 구조가 다르다고 느꼈어요. GitHub의 여러 MVVM Repo들을 관찰했는데 프로젝트마다 조금씩 다른 차이가 존재했어요. 그래서 이 프로젝트는 제가 생각하는 MVVM의 구조로 설계했어요.
또한 MVVM은 사실 RxSwift와 같이 썼을 때 가장 좋다는 말을 들었었기 때문에 함께 사용하려고 했어요. 연습도 해봤고, RxSwift로 토이 앱도 만들어 봤어요. 하지만 아직 설계를 할 정도로 이해가 깊지 않고, 익숙해지는 데는 시간이 걸리는데 이 프로젝트의 목표가 MVVM을 이해하는 것이기 때문에 우선은 Rx 없이 작업하고, 리팩터링을 통해 RxSwift를 적용해볼 계획이에요.
PR 리뷰를 경험하며 코드 베이스의 UI 구현이 스토리보드보다 리뷰의 편의성 측면에서 얼마나 좋은지, 프로젝트가 커지면 커질수록 스토리보드가 주는 부담감이 커지는 것을 느꼈기 때문에 코드 베이스의 UI를 선택했어요. 마찬가지로 가장 인기 있는 라이브러리 중 하나인 Snapkit으로 UI 도구를 선택했어요.
Kingfisher
프로젝트에서 섬네일 이미지를 처리하는 부분이 있기 때문에 Kingfisher를 사용하려고 해요.
라이브러리를 깊이 있게 이해하지 못한 상태로 난사하는 것은 매우 안 좋은 습관이라고 생각해요.
하지만 현업을 경험하기 전까지 일부러라도 iOS의 기본적인 기능만을 사용하다 보니 라이브러리가 필요한 상황에서 매우 느리게 습득하게 되는 것을 경험했어요.
라이브러리를 이해하는 것과 이용 가능하게 습득하는 것은 다르다고 생각하기 때문에 한 번도 사용해보지 않은 Kingfisher를 사용하면서 느낀 점들을 정리할 생각이에요. 이론적인 개념도 추가할 계획이에요.
Then
전수열 님의 Then은 정말 좋은 라이브러리라고 느꼈어요.
현업에서 다른 개발자의 코드를 리뷰 시 가독성 측면에서 정말 훨씬 좋다고 생각했어요.
이 프로젝트는 규모가 작아 크게 역할하지는 못하겠지만 조금이나마 가독성이 나아지기를 바라며 Then을 사용해요.
'iOS 앱개발 > Daum Cafe 검색 앱 프로젝트' 카테고리의 다른 글
[iOS] 배열의 요소 안전하게 접근하기 (0) | 2022.01.03 |
---|---|
[DaumCafeSearch 앱] 네트워크 기능 구현하기 (0) | 2022.01.03 |
[DaumCafeSearch 앱] Entity 및 모델 구현하기 (0) | 2022.01.03 |
[DaumCafeSearch 앱] 앱 구조 설계하기 (0) | 2022.01.02 |
- Total
- Today
- Yesterday
- 텀 프로젝트#백준알고리즘#Python
- 백준 알고리즘#BackTracking
- django
- Brackets#Stacks and Queues#Codility#Python
- 날짜 계산#BOJ#완전탐색#Python
- 리모컨#완전탐색#BOJ#Python
- 토마토#백준알고리즘#Python
- 반복수열#백준알고리즘#Python
- 미로 탐색#백준알고리즘#Python
- Triangle#Sorting#Codility#Python
- API#lazy#
- Swift#Tuples#Range
- 파이썬알고리즘인터뷰#4장
- Distinct#Codility#Python
- 배열합치기#분할정복#BOJ#Python
- 섬의개수#백준알고리즘#Python
- django#slicing
- 쿼드트리#BOJ#분할정복#Python
- 나무자르기#BOJ#이분탐색#Python
- 암호코드#dp#BOJ#Python
- 병든 나이트#BOJ#탐욕법#Python
- NumberofDiscIntersections#Codility#Sort#Python
- 종이자르기#분할정복#BOJ#Python
- 공유기 설치#BOJ#이분탐색#Python
- 순열사이클#BOJ#Python
- 터틀비치#리콘#xbox#controller
- PassingCars#Codility#Python
- N으로 표현#DP#Programmers#Python
- 랜선자르기#이분탐색#BOJ#Python
- filter#isalnum#lower
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |