iOS/개념

[iOS] if kakao 2020 iOS 세션 후기

누알라리 2020. 11. 22. 21:20

개요

2020 if kakao 컨퍼런스를 관람(?) 했습니다.

각잡고 개발 컨퍼런스를 본 건 작년 언리얼엔진 컨퍼런스 이후로 처음인데,

확실히 개발 컨퍼런스를 보면 현재 임하고있는 서비스에 대해 더 생각해보게 되고, 비교도 하면서 많은 생각을 할 수 있는 것 같아요.

그럼 이번 if kakao 2020의 iOS 세션들을 보고 느낀점&요약 간략히 써보도록 하겠습니다.

 


유연한 해외 현지화를 위한 iOS 앱 구성

 

제일 공부가 많이 되었던 세션이었습니다.

카카오페이지 개발자분들이 카카오페이지를 여러 나라에 배포하게 되면서 글로벌한 앱을 구성하기 위해 필요했던 것들을 발표해주셨는데요.

 

단순 언어 차이는 앱에 포함시킨 고정된 문자열 리소스만으로 충분히 구현 가능하지만,

여러 나라에 서비스하는 만큼 신경쓸게 많았다고 하셨습니다.

대표적인 것들로는...

1. 나라 별 별점 차이

2. 시간대 차이

3. 날짜 표기법

4. 나라 별 문화에 따른 레이아웃

5. 선호하는 프로모션

등이 소개되었네요.

 

크게 1. 프로젝트 세팅 2. Number/Date Formatting 3. Translation 4. code

로 나눠서 설명해주셨는데,

 

일단 프로젝트 세팅에서는

출시 국가 별로 하나씩 별도의 xcConfig 파일을 생성해서 관리했다고 합니다.

(xcConfig 파일이란 Xcode Configuration Settings File로 xCode 프로젝트 빌드를 구성하기 위한 매개변수를 저장하는 파일을 말합니다.)

 

xcConfig 파일을 모두 분리했다고 하지만, 중요한 설정값들(버전 코드, 버전 문자열, 인 앱 결제 등의 통합 코드, API Host 등...)은 커먼 xcConfig 파일에 관리한다고 합니다.

(이걸 보고 아 역시 스케일이 크구나 생각했습니다. 솔직히 이론만 듣고있으려니까 너무 실제로 보고싶더라구요...)

 

다음은 CI/CD에 관한 얘기였는데

카카오는 Firebase Distribution 을 쓰는 것 같더라구요.

Firebase Distribution + fastlane로 배포하는것 같은데, 저희팀도 요새 CI/CD 구축에 팀원분이 고생하고 계셔서 좀 더 주의깊게 보게 되었습니다.

팀원분께 여쭤보니 아직 베타출시버전이고, 향후 정식 릴리즈되었을 때 가격이 어떻게 될지 몰라서 도입하기 꺼렸다고 하셨습니다.

또 Firebase Distribution은 테스터를 하나하나 등록해줘야 하던데, 카카오는 이 테스터그룹을 개발팀에서 관리하는지도 궁금했습니당... 아마 인원이 많으니 운영팀이 뷰어로 들어와서(?) 관리해줄것 같긴 하지만요!

 

다음은 국가에 따른 Number/Date Formattings였는데, xcConfig에서 국가 설정을 불러와 extension부분에서 포매터의 설정을 지정해주는 것 같더라구요!

저희도 최근 이슈 중에 국가 별 숫자 설정 때문에 텍스트필드에 계속 nil 값이 들어와서 모두 멘붕이던 사건이 있었습니다. (...)

 

다음은 Localization을 어떤식으로 처리했는지에 대한 내용인데요.

전 xCode 개발환경에서 표준 다국어 지원 환경이 되는지도 처음 알아서(...) 덕분에 실습도 해보았습니다.

xCode 개발환경에서 표준 다국어 지원 환경은

1. Localizable.strings 와 2. plural.stringsdict 가 있는데요,

실습도 해보고, 저희팀에서는 로컬라이제이션을 어떻게하는지도 팀원분께 설명도 듣고 많이 도움이 되었습니다.

 

솔직히 이 다음에는 코드를 말로 설명해주시는 느낌이라, ㅇ0ㅇ...라면서 듣기만했지 잘 이해는 안가서.. 써놓기만했습니다.

정리한 내용은..

카카오는 번역 String 구조를 안드로이드, iOS, 웹에서 동일하게 써야한다고 생각했고,

Text에 value값을 어떻게 포매팅할지 상의한 결과 i18Next 포맷 사용이 적합하다고 판단했다네요.

안드로이드, iOS에서는 정규식을 사용해 갖고온다고 합니다.

 

그래서 결론적으로는...

구글 시트(번역가들의 작업) -> (중복제거 스크립트) -> (String Array) -> (변환 스크립트) -> Localizable_(국가).strings

이런식으로 간다고 합니다.

 

코드적으로 나온 내용은... 

Computed Property로는 value 값을 제대로 가져오기 힘들다고 판단해서,

정규식을 이용해서 tag 값에 value를 넣어서 해결했다고 합니다.

이 과정에서 Enum / Property Wrapper 라는 개념을 도입했다고 합니다!

 

마지막 3,4는 솔직히 잘 못알아듣겠어서 정리만 해놨지만, 1년 후에 2021 if kakao 볼 때 이 세션은 복습차원으로 또 보고싶네요ㅎㅎ 그 때는 다 알아들었으면 좋겠어요 ^^ 아무튼 제일 도움이 많이 됐던 세션이었습니다.

 


다크 모드로 알아보는 카카오페이지의 iOS 업데이트

 

저희 서비스는 다크모드를 지원할 일이 없을것..(?) 같지만 들었습니다!

UIColor을 Enum값으로 편히 사용하는걸 저희 코드에서도 쓰고싶은데...음...후에 개선할 수 있을 것 같아요.

 

아무튼 애플에서는 모드를 판별하기 위해 UITraitCollection userInterfaceStyle을 참조하면 되게끔 해놨고,

System 색상들은 자동으로 모드에 맞게 세팅된다고 하네요.

그래서 카카오페이지도 색상 코드를 iOS13의 System Color로 바꿨다는 부분이 흥미로웠어요.


같지만 다른 카카오뱅크의 안드로이드 테스트

 

UITest 코드를 작성해봐야겠다는 생각이 들었습니다!


SwiftUI를 망설이고 있다면?

 

제일 부러웠던 세션입니다.

iOS 업데이트를 강제할 수 있는 환경!!!!

저희팀에서도 이 세션을 보고 우리도 신기술 쓰게 회사 내부에서 쓸 토이 프로젝트를 만들자! 했는데

딱히 이렇다 싶은 아이디어가 없어서 고민이네요.

하지만 소개된 버그들이 너무 말이 안되서 (...) 조금 더 망설이는것엔 찬성이었습니다ㅋㅋ

Then, Snapkit을 쓰고있어서인지 딱히 Swift UI코드가 편해보이거나 하진 않았는데... 이건 제가 직접 토이프로젝트를 만들어봐야 체감할 수 있을 것 같습니다.

 


iOS Audio Programming Mechanism

 

굉장히 기술적인 내용이었는데, 제 머릿속엔 각 앱 마다 Audio Session이 있고, Audio Session 내부에는 Category, Mode, Option이 있다. 각 앱에서 이들을 상황에 맞게 세팅하고, 다른 앱들은 System의 I/O에게 변화를 통지(?) 받고 네비게이션 소리 나올 때 음악 어플 소리 줄이고, 네비 소리 끊기면 음악 어플 소리 다시 돌아오고 이런 상황들을 조율할 수 있게 된다. 라는 것만 남았네요!

 


iOS 14 WidgetKit 카카오톡 적용기

 

따끈따끈한 iOS 14기술 위젯킷에 대한 내용입니다.

이것도 나중에 위젯킷 관련 프로젝트 진행할 때 꼭 머릿속에 기억해야할 세션이라고 생각했어요.

사실 지금 핸드폰으로도 위젯기능을 잘 안써서.... 이 세션보려고 위젯 몇 개 해봤습니다. (허허)

 


이상 if kakao 2020 후기를 써봤는데요.

하나하나 집중해서 들었는데, 글로 쓰니까 굉장히 대충 들은것 처럼 보이네요...ㅠㅠ 허허;

아무튼 찔끔찔금 카카오의 개발환경도 볼 수 있어서 좋았고, 제 개인적으로 토이프로젝트를 빨리 진행해봐야겠다는 생각이 많이 들었던 컨퍼런스 였습니다. 신기술! 써보고싶다!