iOS 프로젝트/카멜레온

[iOS] 카멜레온 개발 일지 - 1 (개발 중 집중한 점)

유정주 2022. 6. 8. 21:40
반응형

안녕하세요. 개발하는 정주입니다.

 

오늘은 카멜레온 개발 일지 - 1에 대해 포스팅하려고 합니다.

본격적인 iOS 내용을 다루기 전에 개발을 하며 집중한 점을 먼저 다루려고 합니다.

 

카멜레온 노션 페이지

 

카멜레온: 페이크 얼굴로 초상권을 보호하세요

카멜레온: 페이크 얼굴로 초상권을 지키세요 기간 : 2개월 (2022-03 ~ 2022-05) 인원 : 3명 (iOS 1명, API 서버 1명, ML 1명)

jeong9216.notion.site

 

* 해당 포스팅은 대략적인 개발 일지로 자세한 내용은 필요시에만 따로 포스팅합니다.

 

 

개발 중 집중한 점

개발에 들어가기 전 개발 과정에서 어떤 것에 집중할지 생각을 해보았습니다.

camel case 같이 너무 기본적인 건 굳이 언급하지 않겠습니다.

 

 

라이브러리 쓰지 않기

먼저 라이브러리를 쓰지 않기로 했습니다.

서버 통신까지 하는 앱 개발은 이번 카멜레온 앱이 처음입니다.

 

처음에는 Alamofire나 snapkit을 쓰지 않고 일부러 불편함을 느끼고, 이후 리팩토링을 거치면서 라이브러리를 도입하기로 했습니다.

두 가지 이유가 있는데요.

  1. UIKit의 기본기 향상
  2. 라이브러리 장점 몸으로 체험하기

1차 개발이 완료된 상황에서 돌아보면 라이브러리를 쓰지 않은 것은 참 잘한 결정이었다는 생각이 드네요.

 

지옥의 중첩 클로저

그래서 이런식으로 지옥의 중첩 클로저가 탄생했습니다 ㅎㅎ;;

 

 

UI는 100% 코드로 구현하기

카멜레온 앱은 코드 베이스로 UI를 개발하기로 했습니다.

이전에 개발한 작심삼일 앱은 스토리보드를 이용해 구현했습니다.

그래서 이번 카멜레온 앱은 코드로 UI를 개발하고 싶었습니다.

 

오토 레이아웃은 NSLayoutConstraint, Visual Format Language, Anchor 중 Anchor를 이용했습니다.

세 가지 중 가독성이 가장 좋으면서 자료도 꽤 있었기 때문입니다.

 

UI는 모든 Anchor 코드에 isActive = true가 있던 것을 통합하는 것으로 리팩토링을 시작하려고 합니다.

Snapkit은 Anchor 코드를 정리한 후 더 고민해 보고 적용할지 안 할지 결정하려고 합니다.

iOS 개발자 오픈채팅방을 보면 Snapkit을 아예 안 쓰는 분도 많이 보였기 때문입니다.

 

할 일이 많군요.. ㅎㅎ

 

 

완벽한 코드보다 최선을 다한 코드 작성하기

나중에 봐도 완벽한 코드보다 현재로서 최선을 다해 코드를 작성하는 것에 집중했습니다.

물론 나중에 봐도 완벽한 코드를 빠르게 작성할 수 있다면 너무나도 좋겠지만,

그럴 확률이 얼마나 될까요?

 

당장 어제의 코드도 더 좋게 고칠 수 있지 않을까? 하는 생각이 드는데 몇 주 후, 몇 달 후에도 만족스러운 완벽한 코드를 작성하는 것은 비현실적이라고 생각했습니다.

가능하더라도 시간이 너무 오래 걸리겠죠.

 

그래서 현재로서 최선을 다한 코드를 작성하기로 했습니다.

적절한 옵셔널 바인딩, 적절한 네이밍을 하고 일정한 코드 컨벤션을 유지 하면서

현재의 내가 작성할 수 있는 최선의 코드를 작성하기로 결심했습니다.

 

 

앱 스토어 출시 고려하기

이번 카멜레온 앱은 처음부터 앱 스토어에 출시하자고 팀원들과 협의했습니다.

iOS 담당이었기 때문에 기획을 협의할 때에도 가이드라인을 신경썼던 것 같네요.

 

결국에는 1번 리젝 당하고 성공적으로 앱 스토어 출시를 할 수 있었습니다.

 

포스팅의 주제와는 좀 벗어나지만 살짝 더 이야기를 하면...

리젝 사유는 아래 두 개입니다.

  • Guideline 2.1 - Information Needed
  • Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage

2.1은 리젝 사유라기보다 동작 영상을 요청했는데요.

아무래도 얼굴 사진을 이용하기 때문에 테스터의 사진을 사용하기 애매해서 그랬던 것 같습니다.

 

5.1.1은 권한 요청 시 자세한 설명을 쓰지 않았던 것인데요.

내용의 길이와는 상관 없이 "왜" 권한이 필요한지를 설명해야 하는데요.

저는 "앨범에서 사진을 선택함" 처럼 권한이 필요한 이유가 부족했던 것 같네요.

 

자세히 살펴본다고 살펴봤는데 핀트를 잘 못 잡았단 것 같네요 ㅎㅎ;;

팀원들에게 머쓱했습니다.. ㅋㅋ ㅠ

 

 

마무리

오늘은 개발에 들어가기 전 마음 먹은 내용을 다루었습니다.

라이브러리를 쓰지 않은 것과 최선을 다한 코드를 작성하기로 한 것은 지금 생각해보면 참 잘한 것 같아요!!

 

다음 포스팅부터 iOS 내용을 다루려고 합니다.

아마 UI 구현부터 시작할 것 같네요!

 

감사합니다!

 


아직은 초보 개발자입니다.

더 효율적인 코드 훈수 환영합니다!

공감 댓글 부탁드립니다.

 

 

 

반응형