본문 바로가기

Activities

[KWDC] 2023 Koreawide Developer Conference 참여 후기!! | 여담

 

호호,, 코엑스 Grandballroom에서 KWDC 2023(더보기)을 즐겁게 참여했습니다!

 

현대자동차 소프티어 부트캠프에 운 좋게 붙어서 열심히 공부하고 있는데요.. KWDC와 진행 시간과 겹쳐서 못 갈 것 같다는 생각이 들었습니다(진짜 가보고 싶었는데). 정말 아쉬운 마음이 컸었는데.. 정말 감사하게도 JK(김정) 마스터님과 "기아" 기업에서 KWDC 티켓을 구매하지 않은 iOS 부트캠프 팀원들의 초청을 해주셨습니다 : ]

 

 

그래서 바로 듣고 싶었던 주제를 선정했습니다!!

Coex Grandballroom, Seoul


코엑스로 향하는 길인 줄 알고 잘못 들어섰었는데



시각적인 즐거움을 경험했습니다. (오 어디선가 봤는데,, 요기요 기..!!)

 

 

(KWDC가 끝날 때,,, 한국에도 iOS 개발자분들이 정말 많고 KWDC도 관심을 많이 받았다는 것을 채감했습니다.)

 

https://tv.kakao.com/channel/3878454/cliplink/439663216

Keynote 하기 전 ~

지금부터 제가 들었던 Track의 세션들을 들으며 알게된, 느낀 경험을 간단히 정리하려고 합니다.

글로벌 앱을 위한 Localization: 번역은 시작일뿐

추후 "제가 만들 앱도 다국어 + 특정 문화 고려한 개발을 하지 않을까?"하는 생각이 들었습니다. 그래서 애플사이다님의 세션을 들었습니다! AppStore는 175개국 중 약 40개 언어를 지원합니다. 다양한 언어를 지원한다는 것은 Internalization 이외에도 국내 거주중인 외국인들의 편의를 보장할 수 있다는 사실!!  localization을 지원해준다는 것은 들어봤는데, 크게 Locale, Timezone, Calendar 였나.. 3가지의 개념과 string(localized:), attributedString(localized:), Text(_:) <- LocalizedStringKey 사용. 이런 함수를 통해 컴파일러가 문자열을 자동 추출해서 사용할 수 있다는 것을 알게됬습니다.
en_KR처럼 언어와_지역을 나눠 locale이라 칭하는 것은 결국 언어는 같더라도 어느 지역인지에 따라 (섭씨 or 화씨 등..)다른 문화를 갖고 있기 때문입니다.

우리가 모듈화를 할 수 밖에 없었던 이유

카카오뱅크에서 모듈화를 하게 된 이유와 회고에 대해 들을 수 있었습니다. 프젝 규모 증가 -> 로컬 빌드를 많이 해야 하는데 느려짐. 빌드 할 때 여러 인수가 추가 되면서 특정 크기보다 긴 경우, Argument list too long 문제 발생 가능..

 

그래서 Tuist를 통한 모듈화를 선택했다고 합니다. 모듈화를 할 경우에 이전보다 Full build 또한 개선된다!! 단순 모듈화를 해서 특정한 모듈만 빌드한다는 장점도 있고 모듈 간 서로 다른 의존성을 통해 빌드를 할 수 있습니다. 새롭게 알게된 사실은 cpu의 특징을 살려 특정 모듈들을 병렬로 빌드를 한다는 개념입니다.(호오,,)

 

 

 

샘플 앱으로 기능 단위로 빌드할 수도 있다는 것 또한 모듈화,, 추가적으로 Link(static link vs dylibs)에 대해서도 탐구하면 빌드 성능을 개선시킬 수 있다고 합니다.  (참고하면 좋을 WWDC 세션)

Swift Concurrency: Good to know 

저도 이전에 swift 5.5에 출시된 modern concurrency를 아주 조금 공부했었는데요(개념 정리 링크). 이번 세션을 통해 신기한 정보들을 알 수 있었습니다. Xcode Instruments의 Swift Concurrency 프로파일링 템플릿을 통해 특정 경우일 때 발생되는 task 분석이 정말 신기했습니다..... 이전에 알고 있던 개념은 cpu's core 개수 이상으로 thread가 추가되지 않고 시스템의 가 resource를 관리하면서 priority와 await를 통해 tasks를 처리한다는 개념이었습니다.

 

만약 "core 수만큼의 각각의 thread에서 high priority's task가 오랜작업 진행될 때, low priority task는 실행이 안될까?" 에 대한 결과로는 아래와 같은 결과를 도출하셨습니다.

 

https://engineering.linecorp.com/ko/blog/about-swift-concurrency-performance

 


오.. 정말 신기하게 low priority를 위한 tasks 실행이 되는 것을 볼 수 있었습니다. 그리고 또 신기했던게,, low priority tasks가 cpu cores의 개수만큼 thread에서 오랜 작업 진행중이었고, await없이 오랜 작업 진행된다고 했을 때 medium priority tasks가 각각 thread에 추가되고, high priority tasks가 추가된다면?  각각의 priority tasks 실행 보장을 위해 더 많은 thread가 할당된다는 것이었습니다. 그 외에도 async 한 func블럭 안에서 await 키워드가 없는 경우,, 무조건 suspension point를 만난다고 system에게 resource를 반납하지 않는다는 것입니다. 마지막으로 GCD와 concurrency를 같이 사용할 경우의 알아야 할 특정 상황일 때 + GCD vs swift 5.5 concurrency를 알려주셨는데, 분석을 엄청 잘하셨다는 것을 느끼게 되는 시간이었습니다..

제조업에서 SwiftUI+TCA로 앱 개발하기

현대 인포테인먼트팀에서는 SwiftUI를 적극 사용하고 있다고 했습니다. 살짝 왜 그럴까 궁금했는데 선언형의 장점과 무엇보다 애플이 만들었기 때문이라는 점입니다. 저는 이상하게 1st party를 선호하고 할 수 있는건 개발해보자는 생각이 강합니다.(아직 구현 못하는 것을 만나보지 않아서 그런것일 수 있다는 생각이 문득 들지만,,) SwiftUI를 한번 맛보면 되돌아가기 어렵다는데 SwiftUI가 정말 궁금해집니다.. 

 

현업은 어느 문제를 마주하고 해결해나가는지 궁금했었는데.. 현대에서 개발하는 앱의 feature과 flow를 볼 수 있었고, SwiftUI를 사용하며 마주했던 기술 부채를 알 수 있었습니다.

SwiftData 언박싱 대신해드립니다!

SwiftData! 내가 정의한 모델을 직접 영구적으로 관리하거나 꺼내올 수 있다! 요 기술은 iOS 17+ beta지만 사용하면 정말 편할 것 같습니다. 크게 macro와 view modifier로 나뉘는데 class to persistent model! 이게 핵심인 것 같습니다. 애플은 이걸 어떻게 개발했을까요,, on disk storage에 저장하는 방법으로 크게 Core data, realm이 있고, core data보다 적은 코드로 CRUD를 할 수있는 realm.. 이보다 더 더 간편하게 CRUD를 할 수 있는 기능이 SwiftData 입니다. 정말 간단명료하게 됩니다. @Model, @Query, @Bindable등을 통해 persistent model type, fetch , 바인딩.. 을 할 수 있고 persistent model에 대해 Model Context가 Model Container에 저장되고, 또 Context를 불러올 수 도 있는 개념인데 사용하면 정말 편할 것 같다는 생각이 들었습니다. 이또한 SwiftUI랑 쉽게 조합될 수 있다는 사실..

 

스폰서부스에서 받은 items

KWDC를 스폰해준 기업에서?! 부스도 운영하고 item도 줬습니다... : ]

 

 

KWDC 입장을 30분 전에 했지만 6개 도장 중 1개 도장 받고 키노트 시작 세션 + 밥 + 세션을 듣다보니 도장 받는 미션을 진행 할 시간이 없었습니다... 원래 미니선풍기도 받을 수 있는데  ㅠㅠ. 기억에 남았던 것은 마지막에 KWDC 진행해주신 분들이 attendee가 KWDC에서 제공한 애플 티셔츠를 받고 퇴장할 때 열렬한 박수와 환호를 보내주셨다는게 인상적이었습니다.

Keynote 때 잠실 track에서 애플 옛 기기들을 볼 수 있다고 했었는데 여러 세션을 듣고 애플 티셔츠를 받으려다 보니 코엑스를 나온 후에 기억이 났다는 사실..

 

 

듣고 싶은 세션이 여러 개 였는데 유튜브에 올라온다니 다시보기 해야겠습니다. 해야할게 많네요... 병렬 공부할 수 있었으면 좋을텐데

내년에도 개최가 된다면,, 그 전까지 다양한 것을 공부하고 qna 시간에 제가 모르거나 궁금한 것에 대해 질문을 할 수 있을 정도로 공부를 해둬야겠습니다+_+