티스토리 뷰

iOS

일하면서 느낀 것 3주차 마무리

기본만하자. 2022. 12. 17. 14:21

모바일 개발팀이 없는 회사이며 백, 프론트 개발자들로만 이뤄진 개발팀에 합류하였다.

그간 열심히 하지 않은 죄를 달게 받을 때가 온 것이다.

면접때 질문은 클린코드와 CS지식이 전부였고 구현해야 할 기능들을 설명해주고 할 수 있냐 물어봤다.

질문은 모두 대답하고 할 수 있다 말하였다.

시리즈A투자도 받았으며 서비스들도 이미 매출이 많이 나오고 있는 회사였다. 괜찮을 거라 생각하고 입사하기로 하였다.

 

신입 iOS 개발자 3주차가 지났다..

사실 배울 게 많을까? 라는 생각을 많이 하고 들어갔는데.. 역시 배운거 엄청 많다.

혼자 공부했으면 평생 공부 못했을 것들 수두룩 빽빽이다.

 

기억에 남는 것들이 몇가지 있다..

1. 배포 자동화. (CI/CD다.)

프론트, 백이 구축해둔 라인을 그대로 따라가라 했다. 그냥 Fastlane 갈기면 안되는거에요? 그거 꿀이라던데..

낯설었다. BitBucket이란 무엇이며 아틀란티스(jira)는 뭔데 일감에 맞게 브랜치 생성을 해야하고.. 

"커밋을 하면 자동으로 Test, Build가 되야하며 PR머지 시 자동배포가 되어 앱스토어에 올라가야 돼요~"가 첫번째 미션이였다.

엥? 이런건 공부한 적이 없는데..? 멘붕이였다. BitBucket의 PipeLine.yml 파일을 수정해야 한다고 들었다.

프론트와 백은 AWS에 Docker를 실행시키는 듯 하였다.

문제상황 1.) iOS빌드는 맥켄토시 환경에서만 빌드가 되는걸요..?

오우오우 맥켄토시 환경의 AWS는 1년에 몇천만원대가 들어가는걸로 확인됐다..

해결 1.) Local에서 돌리죠 뭐~

빌드환경을 Local, macOS로 설정하였다. 이제 실행!

 

문제상황 2.) Error : 너의 Repository에서 코드를 받아오는데 실패했어요.

설레는 마음으로 bin/.sh파일을 실행시켰더니 이런 답장이 돌아왔다.

무엇이 문제였나... 찾아보고 찾아봤지만 아무리 봐도 모르겠어서 도움을 요청했다.

 

"0규님! 이거 안돼요!"

포스넘치는 30살 서버개발자 형님이 달려와서 봐주었다.

Git버전이 달라 생기는 오류였다. git/config/export파일을 찾을 수 없단다.

예전 버전에서 .gitignore와 같은 역할을 하는 친구인데, Git이 업데이트 되면서 지원을 안해준다고 한다.

 

해결 2.) 서버개발자형님이 iTerm과 깊은 대화를 나누는 듯 했다. 쉘스크립트로 무언가 열심히 작성하셨다.

15분뒤 해결됐다. 로컬환경에서의 BitBucket PipeLine을 실행시킬 때 마다 반복문으로 git/config/export를 계속 실행시켜주었다.

그냥 이렇게 해결했다..

 

문제상황 3.) 인증서 문제

인증서때매 한참을 해맸다..

앱스토어의 마스터계정을 찾는데 수소문의 수소문을 통해 알아냈고, 2차인증은 대표님의 이전 아이폰7로 해야했다. 진땀났다.. 응애 나 25살 막내 iOS개발자애옹~

모든 프로젝트에서 적용 가능한 인증서를 새로 배포하여 적용시켰고 빌드를 하자 성공하였다! 아니 성공한 줄 알았다.

왜냐면 BitBucket PipeLine에선 안됐기 때문이다...  나의 MacBook이 인증된 기기가 아니라는 오류가 났었다.

2일을 삽을 파고 알아냈는데 빌드 타겟을 iOS로 한정지어줘야 했다.

 

여기서부턴 배포였는데, 이 안에 Fastlane을 넣으면 되잖아! 하고 배포 자동화를 해버렸다.

나중에 보니 BitBucket PipeLine과 같은 녀석들은 GitAction, CircleCI 등이 있었다. 그리고 그안에서도 배포자동화를 위해 해당 방법과 같이 안에서 Fastlane을 실행시킨다고 한다.

-- 배포 자동화 성공 --

 

덕분에 회사내 개발팀에서 올려치기 되버렸다. 왠지 모르겠는데 부담스럽다.

 

2. 남의 코드 읽기 (구글로그인이 안되는 문제)

우리 회사는 총 2개의 서비스를 런칭하고 있다. 둘 다 디자이너를 위한 플랫폼이며 사용자가 꽤나 많고 매출도 적지 않은 편이다.

근데 앱은 하나가 내려가 있었다.

대표와의 면담에서 들었는 데, 민심이 장난 아니라 없는 것만 못하다 생각하여 내렸다고 들었다.

 

둘 다 외주로 만들어진 앱이다.

5분정도 코드를 읽고 깨달았다. "여러분들 코드를 작성할 때에는 이걸 읽는 사람이 연쇄 살인마라 생각하고 작성하세요."

올해 초 부캠에서 스승님께 배운 말들 중 하나 였다. 사실 이해는 안갔지만 말이 웃겨서 기억하고 있었다..

"이제야 깨달아요 ㅜㅜ"- 1

변수명 함수명을 읽어도 무슨 역할을 하는지 명확하지 않아 이해가 어려웠고 80%의 코드들이 ViewController에 몰려있어 어떠한 기능을 하나 찾는게 너무 어려웠다.

일단 구글로그인이 안된다니 한번 들여다 보았다.

문제상황 1.) 애초에 거의 모든 화면을 웹뷰에서 보여주는 이 앱은, 구글로그인 API요청 또한 웹에서 하는 화면을 그대로 웹뷰에서만 보여주고 있었던 것이다.

그게 문제였다.

구글 정책에 따르면 웹뷰에서 웹이 사용하는 SNS로그인 API사용하는 것을 막았다고 한다.

해결방법 1.) 네이티브로 SNS토큰을 받아오고 이를 웹뷰 쿠키에 심어 로그인  하는 것이 해결방안이였다.

그렇게 하면 되는 줄 알았다... 웹에서는 AuthCode만 받아 서버로 보냈고, 이를 SNS에 실제 사용자인지 검증하여 자사 서비스에서 사용할 수 있는 토큰을 발급하였다. 허걱쓰.... 근데 앱의 AuthCode와 웹의 AuthCode 형식은 달랐다!!

모든 SNS로그인 결과를 보니 고유값을 넘겨주는 듯 하여 이와 이메일, 이름정도를 보내지 않을 까 싶다. 현재 백엔드에서 상황을 전달받고 API개발 중에 있다. ( ㅜㅜ 다들 화이팅입니다.. )

 

3. 푸시알림 ( OSLog, NSLog )

푸시알림 기능을 간신히 찾고 유지보수 하고 있었다.

이전에 푸시알림이 오면 팝업창이 뜨면서 내용을 표시하였는데, 아무것도 없는 하얀 화면만 나온다는 버그였다.

코드를 확인해보니 이전과 현재의 푸시알림 형식이 바뀌어 있었다. 또 삽 5시간 판거 있었는데, 시뮬레이터에는 푸시알림이 안온단다.. (you can receive only phsically phone)

이를 수정해주고 나니 갑자기 욕심이 생겼다. 채팅알림이라면 채팅화면으로 이동시켜주고 싶은 욕심..

(이거 한다고 돈 더주거나 알아주지 않음)

구현 성공했다. 근데 앱이 꺼진 상태에서 터치한 푸시알림은 화면이동이 안됐다.

딥링크. 하지만 웹뷰이기에 WebView.load로 URL만 전달하면 된다.

일단 앱이 꺼진 후에는 콘솔에 print가 안찍히기에 그야말로 심봉사, 한석봉 어머니 개발을 해야 했다.

AppDelegate에서의 LaunchOption에 값이 들어있다고 들었다.

하지만 그안에 값이 어떻게 들어있는지 전혀 알 수 없었기에 고민을 하다 한가지 키워드가 떠올랐다.

올해 초 부캠을 하며 배웠던 그것.. 개발자만 확인이 가능하다는 Print "OSLog"

"asdf"를 찍었는데 Console앱에서 확인이 가능했다. WOW!

여기서 또 삽을 오래팠는데.. OSLog에는 변수값이 찍히지 않는다....

그래서 또 있는 친구가 바로 NSLog!! 이 친구는 변수값도 잘보여준다!! ( 고마워요 ㅜㅜㅜ )
덕분에 푸시알림 기능도 구현 성공했다!!

왜 OSLog를 지향하라 한지 "이제야 깨달아요 ㅜㅜ"- 2

 

 

 

 

 

여기서 일하는 이유.

모바일 팀이 없어 사수도 없고 연봉이 많은 편도 아니다. 물론 자율출근, 장비지원 다해주고 집에서 엄청 가기 편하며 7.5시간 근무이긴함.

요즘 좋은 코드라는 주제에 푹 빠져있다. "소프트웨어의 역사가 길지 않기에 이론과 실무가 다른점이 적지 않다." 고 공부했다.

일단 자유롭게 앱을 만들고 난 후, 어느 정도의 사용자가 보장되는 회사라는점.

그렇기에 앱의 기능 추가, 삭제등이 빈번할 거라 예상되며 이에 유연한 코드를 작성하는 경험을 쌓을 수 있다는 점.

( 특히 앱은 A ~ Z 로 개발하기 때문. )

이론위에 실무경험을 덮는 건 이런 환경이 아니면 쉽지않다고 판단했다.

 

이런 생각을 갖게 되니 더 책임감이 생기는 것 같고.. 점점 회사에 대한 애정이 커지는 듯 하다.

느끼는 것들이 또 쌓이게 되면 글을 써야겠다.

'iOS' 카테고리의 다른 글

실수를 많이 하는 개발자.  (0) 2024.08.10
2021회고록  (0) 2021.12.31
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/09   »
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
글 보관함