2024 KWDC 톺아보기
소개
2024 KWDC 내용 정리
당신의 View가 버벅이는 이유
화면 렌더링이 멈추는 대표적인 Case인 메인 스레드가 동작하지 않는 원인들에 대해 알아보고, 이를 테스트하기 위한 방법들에 대한 내용이다.
Swift에서는 View protocol의 body 생성자를 통해 화면에 표시할 구성요소들을 정의 해준다. 이러한 View는 Main thread와 Background thread를 통해 코드가 실행되는 방식을 제어 할 수 있는데 어떻게 더 부드러운 화면을 만들 수 있는지 알아보자
View가 멈추는 대표적인 이유
화면이 멈추는 이유는 대부분 메인 스레드에 Blocking이 발생하기 때문이다. 그렇다면 메인 스레드에 Blocking이 발생하는 원인은 어떤게 있을까?
- 메인 스레드가 동작하지(반응하지) 않는 이유
- 스레드에 작업이 할당되어 있을 때
- 다른 응답을 기다리고 있을 때 ex) async hang
메인 스레드에 작업이 걸리는 경우들
- View model의
initialize
시점에 작업 할당 시 ->initialize
시점에 작업 할당 시 메인 스레드에서 동작하도록 되어있어 의도치 않게 메인 스레드에 작업이 할당될 수 있다
SwiftUI 애니메이션의 마법
SwiftUI iOS 개발자인 pavel zak
님이 SwiftUI Canvas를 사 용해 여러 애니메이션들을 구현하는 방법과 예제를 공유해주었다. 발표 당시 ppt 자료 글씨가 너무 작게보여 해당 내용들을 기록해둘 수 없었는데, 개인 블로그인 Pavel Zak’s dev blog에 잘 정리되어있어 코드를 확인할 수 있었다.
블로그 링크로 발표 내용 정리를 대신하고, 추후 시간이되면 포스트를 하나씩 따라하며 정리해보려한다.
위젯, 위젯, 어디에나 있고 픽셀 하나도 남기지 않기
iOS, iPadOS, watchOS, macOS 등 애플 기기 전반에 걸쳐 활용되는 위젯을 구현해본 경험을 공유하는 시간이었다.
iOS 16 부터 위젯에 여러 상호작용이 가능하도록 구현되어 이를 활용한 위젯 개발이 가능해졌다. 이를 토대로 여러 디바이스 환경에서 위젯을 개발하는 방법과 위젯을 개발할 때 고려해야할 사항들을 공유하는 시간이었다.
모두를 위한 디자인
포괄적인 디자인
우리의 삶에서 문화, 신체, 나이, 위치 등 여러 요소들로 사람들의 그룹을 나눌 수 있고 이러한 요소들을 조합하여 또 다시 다양한 그룹으로 나눌 수 있다. 앱 개발시에도 이러한 요소들을 고려하여 우리의 애플리케이션을 사용하는 사용자가 어떤 그룹에 속해있을 지 고려한다면 해당 그룹 사용자들에 맞춘 서비스를 개발할 수 있을 것이다. 하지만 우리의 애플리케이션이 특정 그룹을 타겟팅한 서비스가 아니라면 이러한 다양한 요소들을 고려한 모두를 고려한 디자인이 필요하다
어떻게?
그렇다면 모두를 고려한 디자인은 어떻게 적용할 수 있을까? Apple은 이미 여러 콘텐츠에서 글쓰기, 형상화, 오디오, 비디오를 통해 이를 적용 중이며 이러한 요소들 외에도 식별자(개인을 구분하기 위한)도 고려하여 제공하고 있다.
포괄적인 디자인을 위해 고려해야할 사항들은 크게 아래의 6가지로 정의할 수 있다.
- 다양한 스토리
- 고정관념을 피하라
- 접근성 개선
- 문화에 맞춰 현지화 하기
- 색상을 통한 표현
- 자유로운 자기표현
다양한 스토리
다양한 스토리를 담기위해서는 어떠한 방법들이 있을까, 아래의 예시를 보며 확인해보자.
액티비티 동호회를 위한 소모임 어플
액티비티 동호회를 위한 소모임 애플리케이션에서 동호회의 활동성을 강조하기 위해 메인 이미지를 격류에서 카약을 타고있는 사람으로 설정할 수 있을 것이다. 또한 활동성보단 커뮤니케이션을 강조하기 위해서는 대화를 주고받는 사람들의 이미지를 사용하면 좀 더 직관적으로 동호회의 성격을 표현할 수 있다.
To Do List 어플
이번에는 하루일과를 계획하고 정의해주는 애플리케이션을 생각해보자 조금 과할 수도 있지만, 우리나라에서만 사용중이던 애플리케이션의 대표이미지에 김장하기라는 일과가 설정 되어있었다. 이를 글로벌 사용자들을 위해 제공하려 할 때 해당 내용을 단순히 번역만 하여 제공한다면, 미국의 사용자들은 김장하기라는 활동에 대해 알지못하므로 이 애플리케이션이 정확히 어떤 용도인지 한눈에 파악하기 조금 어려워질 것 이다. 따라서 예시로 작성되는 일과들을 해당 국가의 문화에 맞춰 변경하는 것만으로도 사용자들에게 많은 공감을 끌어낼 수 있다.