일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Sync
- 정규식
- pop
- UISheetPresentationController
- unowned
- MVVM
- 순환참조
- Swift
- GOMS
- ReactorKit
- breakpoint
- keychain
- UIKit
- regex
- Protocol
- Clean Architecture
- 회고록
- UIImage
- Async
- 광주소프트웨어마이스터고등학교
- xcode
- RenderingMode
- 회고
- DI
- weak
- ios
- Today
- Total
minaje
야.. 나도.. 학교 서비스 만들어 봤다고..! - GOMS 개발 회고록 본문
프로젝트 영입
평화롭게 Daily라는 프로젝트를 진행하던 중 평소에 친하게 지내던 서버 개발자 친구에게 갑자기 연락을 받았다.
그 당시에는 Daily 프로젝트가 그렇게 급하지도 않아서 '금방 끝나겠지'라는 생각을 가지고 프로젝트에 참여했다.
디자인의 부재
저희 학교 특성상 디자인을 전공으로 하는 친구들이 많지 않다보니 프로젝트를 할때마다 디자이너를 영입하기 매우 힘들었다.
다행히도 부전공으로 디자인하는 친구를 영입하긴했지만 부전공인만큼 다른 프로젝트를 하느라 바빠서 iOS 디자인은 내가 하겠다고 했다.
클라우드 타입
로그인 구현 당시에 서버는 클라우드 타입을 사용하여 배포가 된 상태였다.
하지만 어떤 이유에서인지 토큰을 못 받아오는 오류가 발생했다..
이 오류의 원인을 찾기 위해 코드를 다시 짜거나 서버를 다시 배포하는 등 여러 방법을 시도해보았지만 쉽게 해결되지않았다.
그러던 어느날 테스트를 위해 로컬로 서버를 변경해보니 토큰이 정상적으로 받아와지는 것을 알게되었다.
그래서 서버 친구와 서로의 코드는 문제가 없으므로 클라우드 타입의 문제로 판단을 했고 AWS로 서버를 이전했다.
아직도 이유는 모르지만 특정 클라우드 타입 서버를 사용하면 토큰이 안 받아와지는 문제가 있다.
후배 영입
우리 학교 특성상 10월이 되면 취업을 한 사람들은 현장 실습에 나갈 수 있기 때문에 하루 빨리 프로젝트를 유지보수 해 줄 후배 영입이
필요했다.
그래서 혼자 공부를 하는 후배들 중 가장 열심히 한다고 생각하는 친구들을 영입했다.
외출제 폐지..?
프로젝트를 마무리하고 앱 출시 준비를 하던 중 학교에서 외출제 도중 사건(?)이 발생했다.
그로 인해 외출제가 중단되고 "외출제가 폐지된다" 등 안 좋은 소식이 계속 들려왔다...
이 때문에 프로젝트 인원 모두가 모여 단순 프로젝트 팀이 아닌 사설 팀으로 체제를 변환하고, 차기 프로젝트에 대해 이야기를 나눴다.
하지만 다행히도 외출제를 원하는 학생이 많다보니 폐지는 면할 수 있었다.
앱 출시
그 당시에는 외출제가 중단이 되는 한이 있더라도 앱 출시 경험을 얻고 싶었기 때문에 개발자 계정을 구매 후 Apple App Connect에서
앱 심사를 올렸다.
이틀 후 다시 확인해보니 앱 출시가 리젝되어있었다.
원인을 확인해보니 카메라 권한 동의에 대한 설명이 너무 부실해서 리젝이 된 것이었다.
설명을 수정 후 다시 앱 심사를 올리니 운이 좋게 한번의 리젝만에 앱 스토어에 나의 앱이 올라갔다!
앱 첫 사용
앱을 출시하고 2주정도 뒤 외출제를 시행한다는 소문이 돌아 학생회 친구들에게 물어보니 외출제를 시행한다고 하여서 GOMS 앱을 사용한다고 공지를 올렸다.
GOMS는 QR코드를 찍고 밖으로 나가는 형식이었기때문에 밥을 일찍 먹고 QR코드를 들고 교문 앞에서 외출제 준비를 하였다.
하지만 급하게 만든 앱이다보니 오류가 상당히 많이 발생하였다.
분명 테스트를 하였지만 오류가 나는 모습을 보고 '역시 테스트때는 예상하지도 못한 오류가 발생하구나..'라는 생각이 들었다.
첫 사용을하고 발생한 오류 목록을 보니 너무 막막했다..
하지만 친구들이 옆에서 위로도 해주고 원래 처음에는 그렇다 등 좋은 말을 많이 해주어서 힘을 내서 오류를 고쳐나갔다.
QRCode 인식률
오류를 전부 해결하고 다음 외출제에 다시 사용해보니 "QRCode 인식률이 저조하다", "QRCode를 인식하는데 너무 오래 걸린다" 등 QRCode 인식률에 대한 의견이 많이 나왔다.
이 원인을 찾기 위해 QRCode를 스캔하는 라이브러리를 확인해 본 결과 라이브러리에서는 동영상으로 QRCode를 촬영하고 QRCode가 지속적으로 촬영이 되어야 스캔을 하는 방식이어서 QRCode 인식률이 저조하고 느린 문제가 발생한 것이었다.
라이브러리를 새로 만들기에는 시간이 너무 촉박해서 다른 라이브러리를 찾아보던 중 QRCode가 촬영되자마자 스캔하는 라이브러리가
있길래 교체해주었습니다.
새로고침..
GOMS 서비스를 출시했던 초기에는 TabBar를 이용해서 페이지를 이동하면 데이터가 초기화가 안 되는 상황이 발생했다.
테스트에서는 초기화가 안 되어도 괜찮을 줄 알았지만.... 실제 사용하는 상황에서는 데이터가 바로바로 갱신이 안 되어 불편하다는 의견이
많이 들려왔다.
이 문제를 해결하기 위해 코드를 살펴보던 도중 데이터 fetching 시점이 ViewDidLoad인 것을 발견했다.
그래서 나는 View의 생명주기를 다시 찾아본 결과 뷰가 로드가 된 상황에서 데이터를 가져오다보니 TabBar로 화면을 이동하면 데이터를 새로 안 가져오는 것이었다.
"오... ViewWillAppear로 바꾸면 되겠네"
뷰가 나타날때 실행되는 ViewWillAppear로 데이터 fetching 시점을 변경하니 생각보다 쉽게 해결되었다.
마무리
처음에는 작게 시작한 프로젝트에서 이렇게 규모가 커지고 학교 서비스로 자리를 잡은 것이 아직도 실감이 안 난다.
개발하면서 사소하게 생각하던 이슈들이 실제 사용에서는 얼마나 큰 오류로 되살아나는지 알게되었다.
또한 처음해보는 배포이다보니 모든 것이 새로워서 너무 재미있는 프로젝트였다.
'회고' 카테고리의 다른 글
소프트웨어 마이스터고 회고록 (0) | 2023.09.25 |
---|