일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- coreml
- Swift
- task.yield()
- UITableView
- spring
- tabman
- Sendbird
- 코테
- Project
- ios
- Complication
- UIStackView
- UIDatePicker
- Coding Test
- Delegate Pattern
- backend
- Firebase
- WWDC22
- Apple Developer Academy
- Flutter
- app intents
- SwiftUI
- cloud functions
- Tuist
- widgetkit
- createml
- github
- swift concurrency
- watchkit
- fcm
- Today
- Total
azhy의 iOS 이야기
[iOS] 다사다난했던 첫 앱 출시 후기 본문
2022년 5월 12일에 작성됨
인생 첫 앱을 출시하며 있었던 이야기를 기록으로 남겨보려 합니다.
규칙
모바일 개발은 Flutter로 먼저 입문했었습니다.
하지만 iOS에 더 관심이 있었고 최종적으로는 취업도 iOS로 하려 했기에 iOS에 조금 더 집중하기로 결정을 했습니다.
프로젝트는 저 포함 2명이서 진행하였고 몇 개의 규칙을 정해 기획을 진행했습니다.
- 유저정보를 최대한 묻지 않는 로그인, 회원가입
- 유저 간 상호작용하는 기능들 배제
- 복잡하지 않은 UI, UX
- 디자인은 최대한 해치지 않게 제작
이제 막 swift 기초 문법을 공부하고 바로 프로젝트를 진행했기에 리스크를 최대한 줄이려고 이렇게 규칙을 정했습니다.
실제로 그때 당시 작성했던 노타빌리티 메모인데, 이렇게 보니 조금 부끄럽네요.. ㅋㅋㅋㅋㅋ
기획
앞에 작성한 규칙들을 토대로 우리는 할만한 주제거리를 찾아보기 시작했습니다. 엄청난 기술을 요구하는 앱들은 당연히 당장 만들 수 없었기에 사실 선택지가 정말 없었어요.. 어떻게든 쥐어짜내 찾아보고 우리는 명언, 일기, 편지, 시, 글쓰기, 노트 정도의 키워드를 뽑아냈습니다.
처음 프로젝트를 진행하기에 부담이 없을 거 같은 친구들로 고르고 골랐답니다.. 그중에서 무엇을 만들어야 하나 하면서 이야기를 나누었고 그 결과 우리는 명언 + 일기 가 합쳐진 앱을 만들어 보기로 결정했습니다. (더 많은 기능들이 들어가면.. 자신이..^^)
곧바로 앱 디자인을 살짝 진행해 봤는데, 첫 번째 사진은 노타빌리티에 낙서하듯 대충 그린 거고 두 번째 사진은 Adobe XD로 기본 틀만 잡아놓은 건데 누가 보면 이게 디자인입니까..?라고 물어볼만한 처참한 수준이긴 하지만..ㅋㅋㅋ 옛날부터 느꼈지만 늘 자신과 싸우며 창작의 고통에서 살아가시는 모든 디자이너분들 존경합니다..
저는 평생 디자인을 해본 경험도 없고 재능도 없지만 앱을 만들기 위해서는 어쩔 수 없었어요.. 그렇다고 디자인 외주를 할 정도로 엄청난 규모의 프로젝트가 아니라 최대한 다른 어플들 UI, UX 참고하며 진행했습니다.
개발
개발에 들어가기 앞서 정말 iOS 개발은 처음이라 뭐가 뭔지도 몰랐습니다. UIkit는 무엇이고 swiftUI 무엇이며, 또 rxSwift는 무엇인가.. 사실 지금도 잘 모르긴 하지만.. 다들 처음은 UIKit으로 진행하고 iOS 개발자라면 당연히 알아야 하는 덕목이라고 하기에 UIkit 베이스로 진행하기로 하였습니다.
처음에는 엄청난 포부로 StoryBoard 없이 UI를 코드로만 짜보겠다! 생각하고 덤벼들었다가 하루 만에 항복선언하고 StoryBoard로 돌아왔습니다..ㅋㅋㅋㅋㅋ 초심자가 StoryBoard 없이 코드로만 UI 짜는 건 힘들더라고요.
- UIkit
- Firebase
- Realm
- git
우리는 이 프로젝트를 진행하면서 swift에 조금 더 적응하고 익숙해지는 게 목표라 최대한 다른 곳에 힘을 줄였습니다.
Firebase에서 auth 처리도 해주고 db 역할도 해주고 서버 역할도 해주기에 우리 입장에서 최고의 선택지이고, git 사용은 따로 설명하지는 않겠습니다.
2022.04.06 ~ 2022.05.10
swift로 개발이 처음이다 보니 수많은 에러들과 싸우며 약 한 달간 프로젝트를 진행했습니다. 진행하며 Tabman이나, Kingfisher 같은 좋은 라이브러리들도 알게 되어 써보았습니다.
정말 다행인 것은 firebase functions 나 firestore, fcm 같은 것들은 예전 플러터로 공부할 때 다 써보았던 것들이라 시간이 생각보다 오래 걸리지 않았습니다. 만약 functions 나 fcm을 처음 접했으면 시간이 엄청 더 걸리지 않았을까..
결론적으론 이 프로젝트는 좋은 경험이었고 목표였던 swift에 조금 적응하게 됐습니다. 총 125 commit으로 프로젝트는 마무리되었고 추후에 유지보수는 꾸준히 할 예정입니다.
배포
iOS는 개발만 한다고 끝이 아니라 배포도 문제라더라.. 당장 구글에 앱스토어 리젝사유라고 검색하기만 해도 쏟아지는 무수한 사유들.. 예를 들면
- 애플 로그인 기능 추가 (소셜 로그인 사용 시)
- 탈퇴 기능 추가
- 구현되지 않은 기능
- 좋지 않은 디자인
- 로그인이 필수인데, 일반회원가입이 없을 경우/소셜 로그인만 단독으로 있을 경우
등등 엄청나게 사유들이 많습니다.. 이렇게 힘들게 테스트를 하니 앱스토어에는 이상한 앱들이 적은 건가..? 우리 프로젝트에는 다 괜찮은데 딱 하나 로그인이 필수인데 일반회원가입이 없을 경우,
네.. 우리 프로젝트에는 로그인이 필수인데 일반회원가입은 지원하지 않습니다.. 해결안은 게스트 로그인을 넣거나 일반회원가입을 넣거나 로그인 필수가 아닌 선택적으로 만들어, 비회원 기능을 추가(앱에 대한 정보 열람 등)를 해야 했습니다. 그래서 우리는 급하게 비회원 기능을 어찌어찌 만들어서 추가하고 배포준비에 들어갔습니다.
앱 미리 보기는 AppMockUp Studio에서 만들었어요. 기본 탬플릿도 지원하고 쉽게 만들 수 있어서 좋은 거 같아요.
후.. 덤벼라 앱스토어.. 바로 나의 앱으로 들어가서 정보들을 작성했습니다. 처음 작성해 보는데 뭐 이렇게 작성할게 많은지.. 어찌어찌 구글링을 하면서 정보들을 입력했습니다. 그리고 xcode 에서 Archive를 통해 프로젝트를 성공적으로 등록을 했습니다. 근데 시간이 20분이 지났는데도 배포하는 버튼이 반응이 없길래, 엥 뭐지? 이러면서 메일을 확인해 보니..
흠.. 이건 또 뭐지.. 구글링 해보니 NSPhotoLibraryUsageDescription 요 친구 쓰는 이유가 뭐야? 목적을 상세하게 작성해 줘.라는 뜻이네요.. 바로 info.plist로 들어가서 작성해 주고 다시 올렸습니다. 그리고 몇 분 후..
드디어 올라갔네요! 이제 모든 배포준비가 끝났습니다.. 남은 건 테스트를 거친 후 정식출시뿐.. 두 손 모아 리젝이 안 당하길 바랄 뿐ㅠㅠ 심사에 제출 버튼을 꾹 누르고 메일을 확인해 보니 대충 24~48시간 정도 걸린다고 하네요. 앱 크기에 따라서는 더 걸릴 수도 있다고 합니다. 그래서 저는 메일이 언제 오나 하면서 계속 수시로 들어가서 확인했었어요ㅋㅋㅋ 그다음 날 아침 8시 눈 뜨자마자 메일을 확인해 보니..
??! Congratulations? 이거 축하한다는 뜻인데 설마? 하면서 쭉 보니 성공적으로 승인이 됐습니다! 한 번에 통과되어서 정말 너무 기뻤어요. 만약 리젝이 떴으면.. 어후 상상도 하기 싫네요.
드디어.. 나에게도 내 이름 앞으로 된 앱이 나왔습니다! 기능이나 디자인적으로는 엄청난 앱은 아니지만 그런 게 무슨 상관이리 그냥 이런 과정들과 결과물이 있다는 것이 재밌고 즐겁네요.
느낀 점
앱을 배포하면서 앱 하나를 만들려면 엄청나게 많은 과정들이 있어야 한다는 것을 느꼈고 그 과정들이 상당히 쉽지가 않았습니다.
앱 설계, 기획부터 디자인, 구현, 배포까지 어디 하나 쉬운 게 없었어요.. github merge 하면서 conflict 처리를 제대로 못해서 중간에 한번 터지는 경우도 있었고 내 생각대로 앱이 돌아가지 않아서 멘붕이 온 경우도 많았습니다.
앱 규모가 커지면 커질수록 이런 어려움들이 더 많을 것이겠죠. 그래도 작지만 이런 경험을 해보고 결과물이 나왔다는 게 너무 뿌듯하고 좋았습니다. 이 경험은 나도 모르게 성장을 위한 좋은 거름이 될 것이 분명하다고 생각합니다.
이 앱은 크게 기능들을 추가하지는 않을 거지만 조금씩 유지보수는 진행할 예정입니다. 다음 앱은 swiftUI를 이용해서 조금 더 규모가 있는 앱을 만들어보는 게 목표입니다. 쉽지 않은 여정이겠지만 부딪혀보고 경험해 봐야 성장할 것이 분명하기에 멈추거나 포기할 수가 없네요.
또 다른 앱들을 많이 출시해서 첫 출시 후기가 아닌 두 번째 세 번째 출시 후기가 작성되는 날이 왔으면 좋겠습니다.
이번 프로젝트의 모든 것은 github 여기에 있으니 궁금하신 분들은 들어가셔서 확인해 주세요!
'iOS' 카테고리의 다른 글
[iOS] Font 추가하기 (2) | 2024.11.11 |
---|---|
[iOS] github에 API Key 숨기기 (0) | 2024.11.11 |
[iOS] 앱 기본 언어 한국어로 변경하는 법 (1) | 2024.11.11 |
[iOS] swift 알고리즘, 코딩테스트에 필요한 tip 정리 (3) | 2024.11.08 |
[iOS] GCD, Dispatch Queue (0) | 2024.11.08 |