스트리밍은 대부분의 브라우저와
Developer 앱에서 사용할 수 있습니다.
-
Platforms State of the Union
Take a deeper dive into the latest tools, technologies, and advances across Apple platforms to help you create even better apps.
리소스
-
다운로드
♪ ♪
♪ ♪
환영합니다, WWDC 2022의 플랫폼 State of the Union입니다 WWDC는 매번 큰 기대가 되는데요 여러분과 만나 우리 성과를 보여주고 우리 개발자 플랫폼에 여러분이 바라는 바를 더 잘 이해할 기회이기 때문이죠 개발자 여러분이 하는 일은 대단합니다 여러분은 상상 속의 아이디어를 구현하여 사용자들의 경험을 새로운 경지로 이끌죠 우리는 여러분의 아이디어를 더욱 펼치도록 돕고 싶습니다 keynote에서 이미 iPhone, iPad, Mac, Apple Watch 그리고 Apple TV의 여러 새로운 기능을 다뤘습니다 또한 어떤 야심 찬 아이디어도 실현할 수 있게 해줄 Apple silicon의 놀라운 힘을 이야기했죠 오늘 다룰 것이 참 많은데요 몇 가지 업데이트부터 시작하죠 올해 초에는 새로 Apple Developer Center를 개설했습니다 여러분이 Apple 엔지니어 및 디자이너와 소통하고 협업하는 공간으로서 이곳 Apple Park에 설치했죠 지난가을에는 전 세계에서 수천 명이 우리 온라인 Tech Talks를 들었습니다 11개 국가에서 5개 언어로 수백 개의 라이브 세션이 제공됐죠 우리가 Tech Talks 시리즈에서 가장 좋았던 것은 바로 1대1 미팅이었습니다 여러분의 관심사를 듣고 조언과 지도를 제공할 굉장한 기회였죠 지난가을, Swift Playgrounds 4가 출시됐는데요 앱을 개발하고 곧바로 App Store에 등록하는 기능과 Swift UI 지원으로 실험과 UI 시연을 위한 놀라운 도구가 되어줬죠 물론 Xcode Cloud도 있었습니다 Xcode Cloud는 더 좋은 앱을 더 빨리, 더 쉽게 만들게 해줍니다 연속적인 통합 및 배포 서비스가 Xcode에 탑재되어 클라우드로 작동하는 거죠 Xcode Cloud는 모든 Apple 플랫폼에서 개발을 지원합니다 TestFlight와 App Store Connect는 물론 모든 주요 git 기반 소스 컨트롤 제공자와도 통합됩니다 REST API도 있어, 개발 작업흐름 내 다른 부분과의 연결도 돕죠 뛰어난 보안성을 갖춰 여러분과 프로젝트를 보호합니다 기쁜 소식이 있는데요 바로 Xcode Cloud를 오늘부터 이용하실 수 있다는 겁니다 우리는 Xcode Cloud가 대부분의 개발팀에게 유익하다고 생각하기 때문에 모든 규모의 개발자가 이용할 수 있는 가격을 매겼습니다 월 25시간 구독을 모든 Apple Developer Program 멤버에게 2023년 말까지 무료로 제공합니다! 올여름부터 Developer 앱에서 모든 Xcode Cloud 구독 옵션을 구독하실 수 있습니다 오늘은 세 가지 큰 주제를 다룰 건데요 먼저 Apple 플랫폼에서의 개발에 대한 우리 비전을 나누고 싶습니다 우리 플랫폼들의 현재 위치와 나아가려는 방향 말이죠 그리고, 여러분의 앱을 Apple 플랫폼의 시스템 경험에 녹여낼 흥미로운 새 방법들을 소개하려고 합니다 마지막으로 강력한 새 API 몇 가지를 다루면서 어떤 대단한 일들이 여러분의 앱으로 가능해질지 보여드리죠 우리 개발자 플랫폼에 대한 비전과 그 진화 과정부터 시작하겠습니다 조시가 전부 소개해드릴 겁니다 플랫폼에 대한 비전 훌륭한 개발자 플랫폼은 프로그래밍 언어, 프레임워크, 개발자 도구의 치밀한 통합을 제공합니다 이 세 가지가 서로 완벽하게 보완한다면 일반적인 일들은 더 쉬워지고 일반적이지 않은 일들도 가능해집니다 이게 제대로 된다면 훌륭한 앱을 만드는 지름길이 되고 모두에게 유익을 주죠 고객들은 한결같은 경험을 하게 됩니다 언제나 완벽한 스크롤 감각처럼요 또 여러분의 시간과 노력을 앱의 개성에 집중할 수 있게 됩니다 하지만 설계는 진화하고 하드웨어는 발전하죠 한때는 최신 기술이었던 것이 최저 기대치가 됩니다 Objective-C 언어, AppKit & UIKit 프레임워크, 그리고 Interface Builder는 여러 세대의 개발자에게 힘이 됐습니다 이런 기술들은 서로를 위해 개발되었으며 앞으로도 오랫동안 우리에게 도움을 주겠지만 시간이 지날수록 새로운 관념이 필수가 되죠 우리는 오랫동안 통합된 언어, 프레임워크, 개발자 도구의 다음 세대를 규정하고자 열심히 노력했습니다 바로 Swift, SwiftUI 그리고 Xcode 미리보기죠 이런 개발 플랫폼 내의 치밀한 통합을 위해서는 세 요소를 모두 함께 설계하고 발전시켜 서로가 서로를 구동하도록 해야 합니다 Swift 결과값 빌더는 SwiftUI의 구성적 구조에 영감을 받았고 SwiftUI의 선언형 뷰는 Swift 값 타입으로 가능해진 것입니다 또한 Xcode 미리보기는 둘 모두를 위해, 둘 모두를 통해 만들어졌죠 그 결과물은 우리가 만든 역대 최고의 개발 플랫폼입니다 올해, Swift, SwiftUI, Xcode 모두 멋진 업데이트가 있었는데요 이 비전을 더 발전시켜 우리 모든 플랫폼에서 훌륭한 앱을 더 쉽게 개발하게 해줍니다 이 모든 것은 Swift부터 시작됩니다 Swift 팀의 벤이 새로워진 것들을 전부 설명해드릴 겁니다
Swift는 빠르고, 현대적이고, 안전합니다 강타입 언어의 속도와 읽고 쓰기 쉬운 표현식 구문을 합했죠 그 설계는 모든 범주의 프로그래밍 에러를 제거합니다 Swift는 우리 기기의 앱을 개발하기 위한 최고의 언어죠 Swift는 오픈 소스로서 swift.org에 모인 멋진 기고자 공동체가 있어 Diversity in Swift, Swift Mentorship Program 같은 이니셔티브를 통해 서로 지원하며 서버상의 Swift, C++ 상호운용성 같은 주제를 다루는 그룹들이 언어를 발전시키고 있습니다 지난해, Swift는 더욱 발전했습니다 동시성의 향상, Swift 코드를 더욱 쉽게 읽고 쓰게 하는 업그레이드, 작업흐름을 사용자화하게 해주는 도구, 그리고 알려지지 않은 놀라운 개선 사항들이 있었죠 이는 작년, Swift 동시성의 도입으로 시작됐습니다 Swift 동시성은 병렬 작동하는 코드의 읽기와 쓰기를 크게 단순화했고 큰 인기를 끌어 첫해에만 App Store의 40,000개가 넘는 앱이 이를 채택했죠 이는 앱의 코드베이스에 아주 근본적이고 중요한 개선 사항이기 때문에 이제 Swift 동시성을 적용한 코드를 지난 3년 동안 출시된 모든 운영체제에 배치하는 것이 가능해졌습니다 또 Swift 동시성은 비동기 시퀀스도 선보였습니다 올해, Swift의 방대한 기존 시퀀스 알고리즘에 동시성을 가져다주는 새로운 오픈 소스 패키지를 선보입니다 바로 비동기 알고리즘입니다 예를 들어, Swift 시퀀스 프로토콜은 압축 알고리즘이 두 개의 시퀀스를 병합하도록 지원하는데, 비동기 알고리즘은 두 비동기 시퀀스를 한 데 압축하기 위한 버전을 불러옵니다 비동기 시퀀스가 Swift 언어에 직접 통합되어 있기 때문에 for 루프 같은 익숙한 구성체를 사용합니다 async/await 구문 덕분에 일반적인 직선 코드처럼 보이죠 또 익숙한 try/catch 패턴을 사용해 네트워크로 스트리밍되는 비동기 데이터로 인한 네트워크 장애를 해결할 수도 있습니다 비동기 시퀀스의 핵심은 시간에 대한 데이터 값을 어떻게 산출하는가입니다 이제 Swift에 시간 단위를 나타내기 위한 새로운 시계 타입이 포함됩니다 비동기 알고리즘이 이를 기반으로 여러 시간 기반 알고리즘을 제공하죠 시퀀스로부터 업데이트를 늦춰주는 이 스로틀처럼요 Swift의 동시성 모델은 비동기 코드를 동기 코드처럼 쓰기 쉽고 안전하게 만들도록 설계됐습니다 여기서 중요한 요소가 바로 Swift의 액터 모델이죠 액터는 스레드로부터 안전한 동시성 실행 코드를 사용해 데이터를 격리하게 해줍니다 Swift는 의도치 않게 병렬 스레드 간에 그런 상태를 공유하는 걸 막아주어 버그의 주요 원인을 배제하죠 Async/await를 이용하면 액터 간의 통신은 쉽고 효율적입니다 Swift는 분산 액터로 액터 격리의 개념을 발전시킵니다 분산 액터는 복수의 프로세스나 장치에서 통신할 수 있죠 distributed 키워드는 원격으로 접속할 수 있는 액터와 메소드를 표지합니다 Mac 내의 분리된 프로세스 사이든, 다른 기기 사이의 P2P 접속이든, 서버상의 Swift로 작성한 백엔드에 대화를 거는 어떤 장치에서든 말이죠 Swift가 상태 데이터를 경쟁 상태로부터 보호하는 걸 액터가 돕듯이, 분산 액터는 Swift가 장착형 전송 메커니즘을 사용해 이를 프로세스 외부에서 이용 가능하게 하는 걸 돕습니다 그러면 Swift 컴파일러는 점검을 실행해 분산 환경에서 올바른 행동을 보장해주어 여러분이 관심 가지는 요소로 돌아가 작업할 수 있게 해주죠 분산 액터를 비롯한 동시성 기능들은 개선 사항이 구문 깊숙이 자리 잡았을 때 Swift 코드를 얼마나 쉽게 읽고 쓸 수 있는지를 보여줍니다 더 자세한 Swift의 유용성 개선 사항에 관해 켄에게 들어보시죠
문자열은 어떤 프로그래밍 언어에서든 가장 중요한 요소입니다 하지만 문자열을 다루는 일은 보통 아주 답답한 일이죠 개발을 하다 보면 언젠가는 이런 문자열에서 정보를 추출해야 하는 때가 옵니다 문자열을 분석할 코드 작성은 잘못되기 십상입니다 추적해야 할 세부 요소가 많으니까요 또 결과 코드는 읽고 수정하기 어렵습니다 정규 표현식은 이런 문제의 강력한 해결책입니다 문자열에서 여러분이 보고자 하는 패턴을 서술하게 해주고 여러분이 어떤 정보를 추출하려는지를 지정하게 해주죠 올해, Swift는 정규 표현식과 관련한 개발자 경험에 아주 큰 개선을 이뤘습니다 먼저, 새로운 정규 표현식 리터럴입니다
이는 언어 내에 직접 탑재되어 Swift 컴파일러가 정확성을 점검하게 해주며 정규 표현식으로 정보를 추출할 때 Swift 타입 시스템의 힘을 해방하고 Swift의 동종 최고인 유니코드 지원을 최대한 활용합니다 함께 살펴보시죠 저는 Food Truck이라는 앱을 만들고 있습니다 주문 접수부터 매출 추적까지 모든 걸 관리하는 앱이죠 일부 주문은 이렇게 데이터로 가득한 문자열로 들어옵니다 정규 표현식은 제가 원하는 세부 요소를 추출하는 데 알맞습니다 이를 실험하기에는 Playground만 한 곳이 없죠 우선 정규 표현식 리터럴을 생성하겠습니다
이제 표현식을 입력하고 누가 주문했는지를 추출해보겠습니다 도넛의 종류와 도넛 개수도요 제가 입력하자 정규 표현식이 구문 강조되어 제 표현식이 정확한지 확인하게 해줍니다 이제 시험해보겠습니다
위의 주문 문자열을 사용하고 정규 표현식의 첫 일치 지점을 찾을게요
Playground를 실행하니, 라인 내 결과로 주문 문자열의 정확히 어디가 정규 표현식과 일치하는지 보입니다 여기, 제가 찾던 걸 정확히 보여주네요 Swift의 새로운 정규 표현식 지원은 이게 다가 아닙니다 로그 파일의 요소들과 일치하는 이 리터럴처럼 리터럴이 더욱 복잡해짐에 따라 Swift는 이런 패턴을 만드는 더 나은 방법을 제공합니다 바로 정규 표현식 빌더죠
리터럴을 빌더로 변환하기 아주 쉽습니다 이제 코드가 있으니 읽고 수정하기 더 쉬워집니다 이걸 더욱 단순화할 수도 있죠 여기서 저는 16진수를 원하니 .hexDigit-CharacterClass를 사용해 제 의도를 더 명확히 하겠습니다 빌더 구문 덕분에 제 표현식을 생성하고 확장하고 제가 찾는 결과를 얻기가 더욱 쉬워집니다 이것이 Swift의 정규 표현식을 통한 강력한 새 개발자 경험입니다 문자열 구문을 넘어서, Swift는 또한 제네릭이라는 언어 기능의 개선을 통해 읽고 쓰기가 더욱 쉬워집니다 제네릭은 여러분이 매일 쓰는 Swift의 기능을 작동시킵니다 문자열부터 여러분의 사용자화 타입까지 모든 요소를 수용하는 배열 타입처럼요 제네릭 코드는 플레이스홀더 타입 개념을 사용해 추후 정의될 다른 타입을 대신합니다 특정 타입에 대한 추정을 배제함으로써 코드의 의도를 더욱 정확히 하고 재사용하기 더 쉽게 만들 수 있죠 하지만 코드를 더 읽기 어렵게 만들기도 합니다 예를 들어, 제네릭 노래 컬렉션을 함수 매개변수로서 다루고자 한다면 여러분의 의도를 표현하기 위해 꽤 많은 코드를 작성해야 할 겁니다 이제 Swift에서, 일부 노래 컬렉션을 수락하는 함수 작성은 Swift에 매개변수를 설명할 some 키워드만 사용하면 됩니다 같은 의미를 더 적은 코드로 표현하는 거죠 다른 사례에서는 더 역동적인 동작이 필요할지도 모릅니다 가령 이런 음악 라이브러리의 플레이리스트 모음은 다양한 종류의 노래 컬렉션 또는 노래 모음을 담아야 할지도 모르죠 여기서 새로운 any 키워드가 도움이 됩니다 any 키워드는 Swift에 직접 탑재되어 어떤 노래 컬렉션이든 담을 수 있는 타입을 표현하게 해줍니다 제네릭 함수와도 매끄럽게 작동하죠 친숙한 구문을 채용하고 더욱 자연스러운 키워드를 사용함으로써 Swift에서 제네릭 코드를 작성하기가 그 어느 때보다 쉬워졌습니다 Swift 언어 내에 탑재된 기능만큼 중요한 것이 바로 외부 도구입니다 Swift Package Manager는 앱의 부속 요소 관리를 쉽게 만들어주고 전 세계의 개발자들이 배포한 멋진 패키지들을 활용하게 해줍니다 지금까지, 이 개발자들은 수많은 Swift 패키지를 배포했고 인증과 웹 서비스부터 데이터 관리, 재사용 가능 UI 요소까지 모든 걸 돕는 코드를 제공했습니다 그리고 올해, Swift Package Manager는 완전히 새로워진 패키지 플러그인을 통해 여러분의 코드 생성 및 빌드 수단을 확장합니다 플러그인은 다른 부속 요소처럼 쉽게 프로젝트에 추가할 수 있는 Swift 패키지입니다 결제와 동시에 자동으로 다운로드 및 빌드되죠 다만 앱 내의 코드가 아니라 앱 빌드를 돕는 코드인 겁니다 패키지 플러그인은 명령어 라인이나 Xcode 내부에 적용됩니다 여러분의 빌드 단계의 일부로서 또는 직접 실행해 작동되죠 샌드박스 환경에서 실행되어 여러분의 코드를 읽거나 수정하기 전에 여러분의 허가를 요청하죠 패키지 플러그인은 여러분의 작업흐름을 무한히 확장하게 해줍니다 코드를 린트 검사하고 포맷하여 팀 스타일 가이드와 일치시키기 위해 SwiftLint와 SwiftFormat 같은 패키지를 이용하거나 빌드 시간에 소스 코드를 자동 생성하기 위한 Sourcery 같은 도구도 있죠 일을 마치는 데 필요한 건 뭐든지요 패키지 플러그인은 Xcode를 확장하는 훌륭한 방법입니다 Swift를 조금만 작성하면 되죠 이는 두 가지 방법으로 가능합니다 직접 실행해 사용하는 명령어 플러그인, 그리고 프로젝트 빌드 때 작동하는 빌드 플러그인이죠 우리 Food Truck 앱으로 돌아와서 이건 제가 만든 명령어 플러그인을 위한 코드입니다
우리 팀은 코드의 미학이 독특합니다 우리는 import를 문자열 길이순으로 정렬하는 걸 좋아하죠 짧은 것부터 긴 것 순으로요 패키지 플러그인의 핵심은 사용자화와 제어이기에 이를 처리할 SwiftFormat을 사용하는 명령어 플러그인을 만들었죠
이게 로컬에서 수정된 모든 파일을 찾아서 그 import를 정렬합니다 이것은 제가 수정 중인 파일인데, 정렬되지 않은 import가 위에 있죠 프로젝트 전체에 명령어를 사용하겠습니다 대상의 수는 마음대로 선택할 수 있습니다 전체를 대상으로 실행할게요 원한다면 플러그인의 코드를 검토할 수 있습니다 준비됐으니 명령어를 실행할게요 그러면 곧바로 플러그인이 제 파일 전체를 검토합니다 이게 로컬에서 수정된 소스 파일을 전부 찾아서 길이순으로 정렬하죠 플러그인을 이용하면 서식 설정 그 이상도 가능해집니다 소스 코드 생성, git 작업은 물론 여러분만의 사용자화 에러 및 경고를 띄울 수도 있죠 제 코드가 잘 문서화됐는지 확인하는 또 다른 플러그인이 있습니다 이건 빌드 플러그인입니다 오픈 소스 SwiftLint 패키지를 기반으로 한 거죠 이제 제가 빌드할 때, 제 코드에서 문서를 추가해야 하는 모든 부분을 손쉽게 볼 수 있습니다 또한 빌드 플러그인은 Xcode Cloud까지 확장되어 모든 빌드의 일부로서 작동하죠 Swift 패키지 플러그인으로 저와 우리 팀은 우리만의 명령어를 생성하고, 로컬과 Xcode Cloud에서 빌드를 사용자화하고, 그 플러그인을 다른 이들과 공유할 수 있습니다 전부 Swift 라인 몇 줄의 힘이죠 패키지 플러그인이 여러분의 개발 작업흐름을 발전시키는 방식을 간단히 살펴봤습니다 마지막으로, Swift에는 알려지지 않은 인상적인 변화가 있습니다 Swift 프로젝트의 빌드가 굉장히 빨라집니다 새로운 병렬화 성과 덕분에 링크 시간이 최대 2배 빨라지죠 Swift 동시성 런타임은 이제 OS와 더욱 치밀하게 통합되어 비동기 작업의 우선도를 더욱 보장하고 앱의 효율성과 반응성을 유지해줍니다 마지막으로, Swift로 작성한 앱의 실행이 iOS 16에서 크게 빨라집니다 Lyft나 Airbnb 같은 앱들이 다이내믹 링커의 개선 덕분에 최대 2배 빨리 실행되죠 이런 알려지지 않은 개선 사항, 새로운 능력을 갖춘 도구, 더욱 읽고 쓰기 쉽도록 진화한 구문, 그리고 동시성의 개선 덕분에, Swift를 이용한 개발은 그 어느 때보다 좋아졌습니다 Swift는 우리 기기들을 위한 앱을 개발하기 가장 좋은 언어입니다 하지만 언어는 최고의 앱 개발에 필요한 일부분일 뿐이죠 강력한 유저 인터페이스 프레임워크와 짝을 이뤄야 합니다 일라이자에게 자세히 들어보시죠 강력한 UI 프레임워크가 제공하는 관념은 인터페이스 작성, 데이터 부여, 최신화 유지를 더 쉽게 만들어줍니다 복잡성을 잘 녹여내야 하고 여러분이 목표로 하는 플랫폼에 맞게 설계하여 그 기기의 능력을 전부 이용해야 하죠 UI 프레임워크는 앱에 친숙하고 직관적인 느낌을 줘야 합니다 표준적인 제어 메뉴와 고유 상호작용 패턴의 제작을 용이하게 만들어줘야 하고 고급 사용자화를 위한 옵션을 제공해야 합니다 또 표현식 API를 갖춰 아이디어를 빠르게 시험하고 다양한 기기에서의 결과를 볼 수 있게 해줘야 하죠 SwiftUI는 그 이상을 제공합니다 Swift처럼, SwiftUI는 앱을 개발하는 최고의 방법에 관한 확고한 견해를 바탕으로 설계됐습니다 이는 선언형 구문을 지녀 읽고 쓰기 쉽습니다 인터페이스를 어떻게 빌드할지가 아니라 어떻게 보이게 할지를 작성하는 거죠
이는 SwiftUI가 각 플랫폼을 위한 지능적인 디폴트를 제공할 여지를 줍니다 SwiftUI는 근본적인 데이터 모델에 변화를 줘서 자동으로 인터페이스를 최신 상태로 유지하여 앱의 UI가 일관성 없는 상태에 이르지 않게 해줍니다 SwiftUI는 이런 모든 디테일을 대신 관리해주어 여러분이 시간과 에너지를 앱의 개성에 집중할 수 있게 해주죠 새로운 UI 프레임워크를 작성하는 것은 방대한 작업입니다 SwiftUI를 처음 소개할 때부터 우리는 여러분의 피드백대로 계속해서 SwiftUI의 API 적용 범위를 확장해 왔죠 올해 우리는 더 쉽게 기존 앱에 SwiftUI를 점진적으로 적용할 수 있게 했고 그 능력과 유연성을 크게 개선했습니다 앱 내비게이션부터 시작해보죠 SwiftUI 덕에 여러 앱에서 찾아볼 수 있는 공통된 형태의 내비게이션 체계를 만들기는 늘 아주 쉬웠습니다 올해, SwiftUI는 완전히 새로워진 내비게이션 API로 그런 지원 능력이 확장됩니다 새로운 내비게이션 API는 여러분의 앱에 가장 알맞은 내비게이션 스타일을 손쉽게 표현하게 해줍니다 여러분의 앱 뷰 위에 위치한 탄탄하고 체계적인 제어 메뉴로 선택 사항을 손쉽게 저장하고 복구할 수 있으며 내비게이션 스택의 내용 전체를 대체할 수도 있죠 이는 중요한 동작을 다룰 때 아주 유용합니다 앱의 실행 단계 설정, 사이즈 클래스 간의 전환 관리, 딥 링크 응답처럼요 SwiftUI는 앱 인터페이스의 레이아웃 제어도 크게 개선됐습니다 많은 앱 인터페이스의 레이아웃을 SwiftUI의 가로, 세로 스택 모델을 이용해 작성할 수 있죠 이 모델은 많은 일반적인 레이아웃에 쓰기 좋지만 더 유연한 무언가가 필요할 때도 있죠 올해, 우리는 새로운 그리드 API를 추가해서 다수의 행과 단에 걸쳐 잘 정렬된 일련의 뷰를 배치하기 쉬워졌습니다 또 여러분의 레이아웃을 더 향상할 수 있는 완전히 새로워진 Custom Layout API도 있습니다 Custom Layout API는 원하는 어떤 레이아웃도 제작할 수 있는 유연성을 제공하죠 예를 들어, 유동 레이아웃을 만들 수도 있습니다 뷰가 신문 기사처럼 배열되고 공간이 더 필요할 때는 다음 단으로 접히는 거죠 또는 시계처럼 뷰가 둥글게 펼쳐지는 원형 레이아웃을 만들 수도 있죠 Custom Layout API는 손쉽게 레이아웃 로직을 재사용하게 해주어 뷰 코드를 더 단순하고 읽기 쉽게 만들어줍니다 SwiftUI는 더 다양한 인터페이스 요소를 제공하도록 계속해서 성장하고 있습니다 메인 뷰 위로 펼쳐지는 보조 뷰인 하프 시트처럼요 이는 작은 화면에서 정보에 빠르게 접근할 수 있게 해주죠 SwiftUI는 이제 공유 시트를 지원합니다 앱이 사용자 기기의 모든 공유 익스텐션을 손쉽게 이용할 수 있죠 공유 시트 지원은 새로운 트랜스퍼러블 프로토콜로 구동됩니다 이로써 앱 데이터 전송을 위한 타입 세이프 API가 도입됐죠
또 기존 앱에도 더 쉽게 SwiftUI를 점진적으로 적용할 수 있도록 SwiftUI 뷰를 열 수 있는 특별한 컬렉션 뷰 셀도 도입했습니다 여러분의 UIKit 앱에 컬렉션 뷰가 이미 있다면 이제 SwiftUI의 선언형 구문을 사용해 사용자화 셀을 작성할 수 있죠 이 셀들은 UIKit와 치밀하게 통합되어 있고 쓸어 넘기기 동작, 셀 배경 등 UICollectionView의 여러 기능을 지원합니다 또 오늘 새로운 프레임워크를 소개할 텐데요 SwiftUI를 보완하고 인터페이스에 더 많은 걸 표현하게 해줄 겁니다 조에게 자세히 들어보시죠 오늘날의 세계는 데이터로 가득합니다 이해하고, 결정을 내리고, 새로운 관점으로 보도록 돕죠 잘 디자인되고 접근이 용이한 데이터 시각화는 여러분의 사용자들에게 복잡한 내용을 명확하고 자연스럽게 전달할 수 있어 일상에 힘을 보태줍니다 건강 상태의 변화를 보여주고, 개인 목표의 달성도를 표시해주고, 다가올 일을 준비하게 해주는 거죠 오늘, 사용자들을 도와 여러분의 앱 내의 데이터를 해방해줄 새로운 프레임워크를 소개합니다 Swift Charts를 만나보시죠 Swift Charts는 고도로 사용자화 가능한 차트 프레임워크로 SwiftUI를 기반으로 제작되어 더 쉽게 풍성한 시각 효과를 만들게 해줍니다 이는 SwiftUI와 동일한 선언형 구문을 사용해 시각 정보를 담은 코드를 쉽게 읽고 쓰게 해주죠 Swift Charts는 여러분의 앱에 가장 알맞도록 정보 표시 방식을 사용자화하게 해주어 라인 및 바 차트부터 히트맵과 스트림 그래프 같은 정교한 예시까지 아주 많은 종류를 만들 수 있죠
Swift Charts가 SwiftUI를 기반으로 제작됐기에 차트에 접근성 기능을 훌륭하게 지원합니다 사용자화하기 쉬운 훌륭한 VoiceOver 경험 등이 있죠 SwiftUI를 기반으로 제작됐으므로 차트에 애니메이션을 넣을 수 있습니다 앱을 시각적, 감각적으로 적절하게 꾸밀 수 있죠 물론 Swift Charts는 우리 모든 기기에서 잘 작동합니다 다시 Food Truck 앱으로 돌아와서 여기 아름다운 새 Swift Charts를 Xcode의 완전히 새로워진 미리보기 영역에 띄웠습니다 새로운 다단식 SwiftUI 테이블 뷰도 사용하고 있죠 이런 차트를 만드는 게 얼마나 쉬운지 보여드릴게요 스크롤 해보면, 소스 에디터에서 새로운 구조화 헤더를 확인하실 수 있죠 덕분에 파일의 어느 부분인지 쉽게 알 수 있습니다
이게 이 차트의 코드입니다 이건 사실 쌓아올린 바 차트인데요 구분이 잘 안되죠 각 도넛을 다른 색으로 보이게 해봅시다
각 바를 옆으로 배치하면 도넛 비교가 편해질 것 같은데요 간단한 변경자 두어 개만으로 이렇게 큰 수정이 가능해서 참 좋네요 스타일도 사용자화할 수 있습니다 바가 도넛의 색을 반영하게 해봅시다 또 다른 변경자로 바에 주석을 달 수도 있죠
보기 좋네요 미리보기는 디폴트로 실시간 제공됩니다 그래서 즉시 뷰와 상호작용할 수 있죠 정렬 순서를 바꿀게요 바가 아름답게 움직이는 걸 보세요 Swift Charts가 궂은일을 도맡아 해주죠 데이터를 더 불러올게요 모델이 바뀌면서 차트와 테이블 모두 자동으로 업데이트됩니다 차트는 새 합계를 반영해 Y축도 다시 계산하죠 차트를 하나 더 보여드릴게요 선형 차트를 그려서 뷰에 추가했습니다 실행으로 넘어갈게요 Swift Charts로 만든 선형 차트에는 멋진 옵션 몇 가지가 있습니다 각 도넛의 심볼을 추가할 수 있고, 선에 주석을 달 수 있고, 부드러운 곡선으로 바꿔서 다양한 보간법 전략을 쓸 수도 있죠 .catmullRom을 사용해봅시다 드디어 저만의 맵핑을 제공해 차트의 스케일 스타일이 수정됐네요 그러면 제 차트가 앱의 색상 구성과 더 잘 어울리게 될 겁니다 아주 멋집니다 변경된 미리보기 영역은 자신의 뷰가 다양한 환경에서 어떻게 표시되는지 손쉽게 확인하게 해줍니다 캔버스에서 이 버튼을 누르면 다크 모드와 라이트 모드로 제 뷰를 볼 수 있고 제 레이아웃을 모든 인터페이스 방향으로 볼 수 있습니다 미리보기를 전혀 추가하지 않아도 되죠 가로 모드를 확대해봅시다 제 UI가 여기에 잘 맞지 않는 것 같네요 제어 메뉴 몇 개는 화면을 벗어났고 차트는 가로 세로 비율이 이상해요 이 레이아웃을 어디에서 서술하는지 봅시다 여기 이 뷰는 무조건적 VStack으로 돼 있네요
올해 SwiftUI에 강력한 새 API 몇 가지가 추가됐는데요 더욱 유연한 레이아웃을 만들 수 있게 해주죠 여기서 ViewThatFits를 사용해 가용 공간에 따라 세로 스택이나 가로 스택으로 전환하게 하겠습니다
훨씬 낫네요 이걸 연결해서 메인 화면에서 찾아 들어올 수 있게 해봅시다 SwiftUI의 새로운 내비게이션 분할 뷰를 사용하고 있는데요 덕분에 참 쉬워졌습니다 분할 뷰에는 선택 사항을 추적하는 사이드바가 있고 NavigationStack도 있어 사이드바 선택 사항이 변경되면 그 콘텐츠도 변경해주죠 사이드바로 넘어가서 우리 도넛 챔피언 뷰로 가는 내비게이션 링크를 추가하겠습니다 그다음, 상호작용 미리보기에서 시험해볼 수 있죠 제 분할 뷰를 가로 모드로 보고 싶은데요 새로운 캔버스 세팅을 사용해 라이브 미리보기를 돌리겠습니다 잘 작동하네요 iPad에서 보이는 화면이 마음에 듭니다 이제 Mac에 적용하고 싶은데요 클릭 몇 번이면 됩니다 Mac SDK를 최대한 활용하고 싶으니 네이티브를 사용하겠습니다 제 앱을 지원하는 대상 하나만 있어도 제 코드 대부분을 공유할 수 있고 SwiftUI가 제 앱을 각 플랫폼에서 잘 표시되도록 만들죠 기기 특화 기능도 손쉽게 추가할 수 있습니다 제 Mac 앱에는 menuBarExtra를 추가해봅시다 화면 오른쪽 위에 나오는 유용한 작은 아이콘이죠 Wi-Fi나 Spotlight처럼요 SwiftUI에는 이를 위한 새 API가 있습니다 이걸 제 앱의 바디에 추가하고 Mac에서 실행해봅시다
우리의 도넛 챔피언 뷰가 Mac에서 아주 멋지게 표시되네요 그리고 이게 바로 menuBarExtra입니다 아주 유용할 거예요 Swift Charts를 비롯해 SwiftUI와 Xcode에 적용되는 개선점 몇 가지를 간단히 살펴봤습니다 조시에게 돌아가 보시죠 우리는 우리 앱과 시스템 인터페이스 전반에 걸쳐 SwiftUI 채택 범위를 점점 넓히고 있습니다 예를 들어 iOS의 새로운 잠금화면 위젯은 기초부터 SwiftUI로 설계됐죠 새로운 Font Book 앱은 SwiftUI로 완전히 다시 만들었습니다 현대적이고 진취적인 디자인의 새 macOS 시스템 환경설정 앱도 SwiftUI로 제작했죠 Swift와 SwiftUI는 처음부터 모든 Apple 플랫폼을 위한 단일 네이티브 언어 및 API를 제공하도록 디자인됐습니다 한 번만 배우면 모든 곳에 적용할 수 있죠 여러분의 목표가 Apple Watch로 한눈에 볼 수 있는 정보에 빠르게 접근하게 해주는 것이든 MacBook Pro와 iPad의 생산성 도구든 iPhone에서의 새로운 경험이든 Apple TV로 여가를 즐기는 새로운 방식이든 Swift, SwiftUI 그리고 Xcode는 우리 모든 제품을 위한 앱 개발을 도울 차세대 통합 개발 플랫폼을 제공합니다 여러분에게 기존 앱이 있다면 간편하게 이 신기술을 점진적으로 채용할 수 있습니다 우리 플랫폼을 처음 접하시거나 새로운 앱을 만드신다면 앱 개발의 가장 좋은 방법은 바로 Swift와 SwiftUI입니다 물론 이건 시작일 뿐이죠 우리는 우리 플랫폼의 사용자 경험을 계속해서 진화시켜 여러분이 사용자에게 다가갈 방법을 확장하고 있습니다 세바스천에게 자세히 들어보시죠
앱이란 아이디어, 코드, API를 사용자 경험으로 전환하는 것입니다 그리고 최고의 앱이란 적절한 순간에 사용자에게 다가가는 앱이죠 우리는 여러분 앱의 사용자 경험을 향상해줄 방법을 마련해 왔고 이를 Apple 기기의 시스템 경험에 녹여내 왔습니다 이 여정은 익스텐션, 공유 시트와의 통합, 사용자화 키보드로 시작됐습니다 최근 들어서는 여러분의 앱이 위젯을 사용해 홈 화면에 중요 정보를 표시할 수 있게 했습니다 올해, 여러분의 앱을 우리 플랫폼의 시스템 경험에 녹여낼 여러 새로운 방법을 마련했습니다 그 첫 번째는 잠금화면으로, 역대 최대의 업데이트가 적용됩니다 잠금화면의 모습과 작동 방식을 완전히 재창조한 업데이트이며 이는 여러분의 아이디어와 앱이 사용자에게 다가갈 공간을 더해줍니다 로버트에게 자세히 들어보시죠
잠금화면을 재창조할 때 우리는 개성과 아름다움을 더욱 부여하면서 일상 활용도도 향상했습니다 그 일환으로 우리는 위젯의 강력함을 새 잠금화면으로 가져오기로 했죠 위젯은 앱의 중요 정보를 끌어올려 한눈에 볼 수 있는 곳에 표시하는 놀라운 방법이 되어줬습니다 손쉽게 풍부하고 시기적절한 정보를 홈 화면에서 접하게 해줬죠 잠금화면은 iPhone을 집어들 때마다 가장 먼저 보는 화면입니다 언제나 날짜와 시간을 보고 중요 메시지를 확인하는 곳이죠 여기에 더 많은 정보를 표시할 가장 좋은 형식을 고민했을 때 디자인 영감을 더 찾아다닐 필요가 없었습니다 Apple Watch의 컴플리케이션들은 이미 한눈에 볼 수 있는 적절한 실시간 정보를 사용자가 필요로 할 때 아름답게 제공하고 있습니다 이 디자인 언어는 자연스럽게 iOS로 확장되어 새로운 잠금화면에서도 이질감이 없죠 그래서 우리는 WidgetKit를 사용해 동일한 디자인을 잠금화면의 위젯으로 가져왔습니다 작은 이미지, 게이지나 글자 몇 개를 표시하는 원형 위젯도 함께요 원형 위젯은 오늘 충분히 운동했는지, 아니면 달리기하러 나가야 하는지를 보여주는 데 아주 좋습니다 사각형 위젯은 날씨 예보 같은 것들을 표시하는 큰 캔버스를 제공합니다 선형 위젯은 소량의 글자와 SF Symbol을 iPhone의 시계 위의 6일 월요일 같은 시스템 제공 날짜 옆에 표시해주는 훌륭한 수단이죠 한편, 모든 위젯은 iOS와 watchOS에서 모두 작동합니다 watchOS 9부터 컴플리케이션을 WidgetKit로 제작했기 때문이죠 최초로 동일한 코드로 두 플랫폼에 한눈에 표시되는 데이터를 생성할 수 있게 된 겁니다 WidgetKit는 플랫폼의 차이를 자동으로 관리해줍니다 적절한 시스템 폰트를 디폴트로 사용하고 잠금화면의 위젯 색상을 조정해 가독성을 높이죠 WidgetKit를 사용해 동일한 코드로 iPhone 잠금화면을 위한 위젯과 Apple Watch의 컴플리케이션을 만드는 방법을 마이클이 보여드릴 겁니다
iPhone 잠금화면의 위젯과 Apple Watch의 컴플리케이션 제작은 WidgetKit를 사용하면 아주 쉽습니다 홈 화면 위젯을 만들어보셨다면 이미 거의 다 아실 겁니다 데이터와 타임라인이 어떻게 업데이트되는지도 포함해서요 우리 Food Truck 앱에는 이미 systemSmall 위젯이 있어서 사용자가 홈 화면에 추가해 오늘 주문 목표량 중 얼마나 달성했는지를 확인할 수 있습니다 이런 종류의 정보를 보여주기에는 잠금화면이나 시계 페이스의 컴플리케이션이 좋겠죠 먼저 원형 패밀리를 빌드하겠습니다
supported families 배열에서 지원을 선언하도록 하죠
여기서 플랫폼 조건문을 사용한다는 걸 확인하셨을 겁니다 이 위젯이 systemSmall로 macOS와 iOS를 지원하게 하고 싶지만 이 패밀리는 watchOS에서 사용할 수 없기 때문이죠 그다음, 케이스를 추가해 뷰를 정의하겠습니다
0부터 하루 목표량까지 중 현재 수를 보여주는 게이지를 사용해 사용자가 한눈에 진행 상황을 볼 수 있게 해보죠 현재 주문량을 중앙에 글자로 표시하고 도넛 심볼도 넣겠습니다 자, 이제 Xcode 미리보기에서 살펴보도록 하죠 훌륭하네요 잠금화면에 아주 잘 어울립니다 한눈에 보이는 세부 내용을 좀 더 보여주려면 사각형 패밀리 지원도 추가하면 됩니다
이 뷰를 위해 VStack을 하나 만들겠습니다 표시되는 데이터를 위한 제목과 동일한 도넛 심볼부터 시작하죠 폰트에 헤드라인 스타일을 사용하면 두 플랫폼에서 모두 보기 좋을 겁니다 widgetAccentable 변경자로 눈에 띄게 만들어줍니다 사각형 패밀리는 공간이 조금 더 있으니 멋진 사용자화 분할 게이지를 출력하고 게이지의 라벨에 하루 목표량 중 현재 주문량을 표시하도록 하죠 다시 캔버스를 보시면 사각형 위젯도 미리보기에 보입니다 이 게이지가 참 마음에 드네요 이제 이 위젯이 시계 페이스에서 원형 컴플리케이션으로 어떻게 출력되는지 살펴보죠
괜찮네요, 다 들어갔어요 하지만 컴플리케이션은 풀 컬러 렌더링 모드도 고려해야 합니다 Xcode Previews에서는 그게 디폴트죠 각각의 게이지에 색상을 입히고
사각형 헤드라인에 전경색을 입혀서 해봅시다
풀 컬러에서 눈에 띄게 하려면 환경 프로퍼티로 렌더링 모드를 확인해 도넛 심볼을 도넛 이모티콘으로 교체하면 됩니다 원형과 사각형 뷰 모두요
보기 아주 좋네요 미리보기에 여러 가지 UI가 있어서 코드 하나 없이 색상을 바꿀 수 있습니다
여러 색상을 한 번에 볼 수도 있죠 우리가 디폴트 자간과 시스템 폰트 스타일을 사용해 렌더링 모드에 적용했기 때문에 동일한 뷰가 잠금화면과 시계 페이스 양쪽에서 자연스럽게 출력됩니다 동일한 코드로 iOS 16의 새로운 잠금화면에 띄울 위젯과 watchOS 9의 컴플리케이션을 만드는 게 이렇게 쉽습니다 WidgetKit의 능력을 잠금화면으로 가져온 방식은 이것뿐만이 아닙니다 매트에게 자세히 들어보시죠 WidgetKit가 있으면 사람들에게 한눈에 볼 수 있는 정보를 전달할 수 있습니다 하지만 당장 중요한 활동이나 이벤트와 관련된 정보의 실시간 업데이트가 필요한 순간이라면요? 이를 위해 우리는 Live Activities라는 새로운 걸 만들고 있습니다 Live Activities는 잠금화면을 통해 실시간으로 일어나는 일들을 놓치지 않게 해줍니다 경기의 최신 스코어나 차량 호출 현황, 운동 같은 것들을 잠금화면에서 최신 정보로 접하는 거죠 위젯이 그렇듯이, Live Activities도 WidgetKit로 제작합니다 차이는 Live Activities의 표시 내용과 상태를 실시간으로 업데이트한다는 점이죠 SwiftUI로 만들어졌기 때문에 업데이트 시 변화에 애니메이션을 적용할 수도 있습니다 이 업데이트는 사용자가 보고자 할 때 Live Activities가 최신 정보를 표시하게 해줍니다 Live Activities는 올해 예정된 iOS 16 업데이트부터 사용 가능합니다 완전히 새로워진 잠금화면의 업데이트를 살펴봤습니다 사람들에게 가장 필요할 때 더 많은 정보를 한눈에 보게 해줄 좋은 방법이 될 겁니다 다음은 협업 경험을 향상할 새로운 방법을 소개할 텐데요 피에르에게 자세히 들어보시죠 협업은 사람들이 중요하게 여기는 iOS, iPadOS, macOS의 용도 중 하나입니다 그 이유 중 큰 부분을 차지하는 게 놀랍도록 풍부한 앱인데요 여러분이 만든 그 앱이 거리와 상관없이 협업하는 팀들을 지원하고 있습니다 Airtable로 로드맵을 생산하는 등의 업무를 위한 협업도 있고 Redfin에서 꿈에 그리던 집을 찾는 등의 놀이를 위한 협업도 있죠 업무든 놀이든 협업은 주로 대화로 시작합니다 새로운 Messages collaboration API로 앱의 기존 협업 경험을 Messages와 FaceTime으로 가져올 수 있습니다 앱 내의 콘텐츠 링크를 공유할 때 이 API가 있으면 간단하게 그 링크를 협업용으로 설정해 군더더기 없는 경험을 선사하게 해주죠 우리가 필요한 식별자를 제공해 수신인이 링크를 누르면 곧바로 접속 권한을 줄 수 있습니다 물론 이 과정은 개인정보를 침해하지 않죠 Messages 아이디와 앱 아이디는 비공개로 남으며, 공유되지 않습니다 가장 멋진 점은 여러분의 앱이 이미 사용하고 있는 기존의 기술로도 할 수 있다는 점이죠 하나의 오브젝트만 있으면 사용자에게 이미 익숙한 두 가지 편리한 방식으로 협업을 개시할 수 있습니다 첫째는 협업을 전면 중앙에 배치하도록 업데이트된 공유 시트고 둘째는 드래그 앤 드롭으로 협업하고자 하는 콘텐츠를 직접 Messages 대화로 드래그해 공유할 수 있죠 대화가 시작되면 콘텐츠 업데이트에 관한 공지를 Messages 대화에 바로 게시할 수도 있습니다 코드 몇 줄만 작성하면 사용자가 Messages에서 탭 한 번으로 여러분의 앱으로 돌아가 협업할 수 있고 협업 팝오버 창으로 여러분의 앱에서 곧바로 Messages나 FaceTime 대화로 돌아갈 수 있죠 Messages collaboration API를 통해 여러분의 앱이 Message와 FaceTime 안에 녹아드는 겁니다 우리가 여러분의 사용자들에게 강력한 커뮤니케이션 도구를 제공해서 여러분은 여러분의 앱으로 강력한 협업 도구들 제공하는 데에 집중하게 해드리는 거죠 이는 iOS, iPadOS, macOS에서 협업의 수준을 높이고 협업하는 사람들 사이에 일관된 경험을 선사할 것입니다 업무든 놀이든 상관없이요 다음은 아리가 App Intents라는 새로운 프레임워크를 소개해드릴 겁니다 App Intents 프레임워크를 소개하게 되어 기쁘네요 이것은 여러분 앱의 기능을 시스템에서 사용 가능하게 만들어주어 사람들이 Siri와 단축어를 통해 자동으로 사용할 수 있게 해줍니다 사람들은 앱에서 단축어를 사용하는 걸 좋아합니다 Siri에게 요청하거나 홈 화면의 단축어를 탭 하기만 하면 일을 아주 빠르게 처리할 수 있죠 사람들이 사용자화 단축어로 앱의 능력을 재조합해 완전히 새로운 기능을 만들어내는 모습은 참 놀랍습니다 지금은 사람들이 직접 단축어를 추가해야 사용할 수 있습니다 우리는 새로운 App Intents 프레임워크로 iOS 16에서 이를 자동화했죠
App Intents는 단축어와 합쳐져 앱 단축어가 되었습니다 사람들은 아무런 사전 설정 없이도 Siri로 바로 사용할 수 있죠 이렇게요 ‘헤이, Siri, Roomba로 부엌 청소해’ Siri뿐만이 아닙니다 앱 단축어는 시스템 전반에서 여러분 앱의 기능을 아주 가까이서 접하게 해주죠 가령 Spotlight에서는 사람들이 여러분의 앱을 검색할 때마다 여러분의 단축어도 등장합니다 그리고 여러분의 단축어는 앱 제안 바로 아래에 추천됩니다 Donation 같은 추가적 API를 적용할 필요가 없죠 여러분의 단축어는 단축어 앱에도 즉시 나타나서 사람들이 탭 한 번으로 실행할 수 있습니다 App Intents는 iOS 10에서 도입한 SiriKit intents 프레임워크의 다음 단계입니다 intents를 채택해 위젯이나 미디어, 메시징 같은 도메인과 통합하셨다면 SiriKit intents 프레임워크를 계속 사용하시는 게 좋습니다 그러나 Siri와 단축어를 위한 사용자화 intent를 개발하는 개발자들은 App Intents로 업그레이드하는 게 좋죠 Xcode에서 App Intents로 손쉽게 업그레이드하려면 여러분의 IntentDefinition 파일에서 convert 버튼을 누르면 됩니다 Xcode가 일치하는 App Intents 소스 코드를 생성할 텐데 여러분의 intent 핸들링 코드로 빈칸을 채우면 되죠 App Intents 프레임워크는 개발하기 정말 쉽습니다 기초부터 Swift를 위해 설계되었기 때문에 훨씬 적은 코드를 요구하죠 여러분이 작성하는 Swift 코드가 유일한 진실 공급원이고 동기화를 유지해야 하는 별도의 IntentDefinition 파일이나 코드 생성이 없습니다 또한 이 코드는 프로젝트에 추가하기 쉬워서 여러분의 코드베이스를 재구축하지 않아도 되죠 Objective-C 코드가 있더라도 Swift 코드로 래핑해서 App Intents를 적용할 수 있습니다 하나의 App Intent는 앱 안에서 할 수 있는 일을 대표하고 이를 여러분의 앱 바깥에서 할 수 있게 해줍니다 코드 단 몇 줄로 intent를 정의하고 앱 단축어를 추가할 수 있죠 함께 해봅시다 Food Truck 앱에는 훌륭한 차트 뷰가 있습니다 다양한 시간 범위에서 가장 잘 팔린 도넛 탑 5를 보여주죠 오늘이나 이번 주처럼요 이걸 Siri와 단축어에 노출해서 사람들이 빠르게 이용하게 하고 싶은데요 먼저, Xcode에서 새 Swift 파일을 만듭니다 App Intents 프레임워크와 SwiftUI를 불러올게요
그다음은 intent를 정의합니다 App Intent 프로토콜을 따르는 구조를 추가하는 거죠 이름을 붙일게요 그리고 추이를 살펴볼 시간 범위를 정할 매개변수를 추가할게요 이건 제 코드베이스에 이미 정의된 시간 범위 열거형을 사용합니다 앱 열거형 프로토콜을 따르도록 이를 확장해야 합니다 각 열거형 항목에 쓸 읽을 수 있는 이름을 추출하는 거죠 오늘이나 이번 주처럼요 그리고 intent에 동작 수단을 실행하겠습니다 여기, SwiftUI 차트 뷰를 포함하는 결과가 나왔습니다 대화 상자나 출력값을 포함시킬 수도 있죠 사람들이 이 intent를 설정 없이 자동으로 사용할 수 있었으면 합니다 그러니 앱 단축어를 정의할게요
여기에는 이 intent를 사용하기 위해 사람들이 Siri에게 말할 수 있는 문구가 포함됩니다 문구에는 앱 이름이 변수로서 들어가야 합니다 저는 시간 범위 매개변수를 넣었기 때문에 사람들은 ‘오늘의 Food Truck 추이’ 또는 ‘이번 주 Food Truck 추이’라고 말하면 되죠 마지막으로 이걸 사용자들이 발견할 수 있게 해야 합니다 사람들이 이 문구를 봐야 Siri에게 뭐라고 말할지 알죠 그러니 조금 전에 보고 있던 탑 5 도넛 뷰 파일로 전환해서 SiriTip을 추가하겠습니다
이제 앱을 빌드 및 실행하고 제 휴대폰으로 넘어가죠 한번 해봅시다
단축어가 단축어 앱에 등장한 걸 확인할 수 있고 각 매개변수값에 해당하는 선택지도 있죠 그중 하나를 탭 하기만 하면 실행할 수 있습니다 그리고 문구를 말하기만 하면 Siri를 통해 실행할 수도 있죠 ‘오늘의 Food Truck 추이’
아니면 이렇게요 ‘이번 주 Food Truck 추이’
사람들이 제 앱의 탑 5 뷰를 열면 우리가 밑에 추가한 팁이 보일 겁니다 그러면 Siri에게 뭐라고 말해야 이 기능이 열리는지 알 수 있죠 마지막으로, 사람들이 앱을 검색하면 Spotlight에서 여기에 빠르게 접근할 수 있습니다
매우 유용하죠 App Intents는 그 어느 때보다 손쉽게 모든 플랫폼의 시스템 경험에서 여러분의 앱 기능을 이용할 수 있게 해줄 겁니다 다음은 리키가 인증 기술의 대형 업데이트들을 소개해드릴 겁니다 아주 오랜 세월 동안 우리는 비밀번호를 만들고 사용해 왔죠 하지만 비밀번호에는 심각한 문제가 있습니다 피싱, 계정 간 재사용, 웹사이트 유출 등이죠 우리가 함께 이 문제를 해결할 수 있습니다 바로 패스키를 사용하면 되죠 패스키는 인증 절차를 매끄럽게 하고 비밀번호의 최대 보안 문제점을 해결합니다 패스키는 아주 사용하기 쉽게 설계됐습니다 그 인터페이스는 친숙한 자동 채우기 스타일의 UI, 그리고 생체 인증을 위해 FaceID와 TouchID를 사용하죠 이 요소들이 비밀번호로부터 매끄럽게 이행하게 해주고 보안성을 비약적으로 향상해줍니다 패스키가 작동하는 모습을 확인하시죠 패스키로 계정을 설정할 때는 비밀번호를 생성할 필요가 없죠 사용자명을 입력하고 제 iCloud Keychain에 패스키를 저장하겠습니다 이러면 패스키가 제 모든 Apple 기기와 안전하게 동기화됩니다 로그아웃하면, 다시 로그인하는 건 식은 죽 먹기죠 FaceID만 인증하면 로그인됩니다 패스키는 여러 플랫폼이 채택한 공개 업계 표준을 기반으로 하기 때문에 방금 제 iPhone에서 만든 패스키로 친구의 PC에서 Food Truck 웹사이트에 로그인할 수 있죠 웹사이트에서 제 사용자명을 입력 및 제출하고 휴대폰으로 로그인하기 옵션을 선택한 다음 QR 코드를 스캔하고 iPhone과 PC가 안전하게 통신하는 걸 기다립니다 로그인됐어요 제 Mac의 Safari에서는 로그인이 더욱 쉽습니다 iCloud Keychain 덕분에 패스키가 이미 이 안에 있어서 웹사이트의 사용자명 입력란에서 바로 로그인할 수 있죠 패스키를 기존의 로그인 과정에 통합하기도 쉽습니다 예를 들어, 이 웹사이트의 사용자명 입력란은 패스키 또는 비밀번호로 로그인하게 해줍니다 제가 비밀번호 기반 계정의 사용자명을 입력하면 빠르게 로그인할 수 있죠 패스키가 있으면 기기가 궂은일을 다 하고 매번 보안이 보장됩니다 패스키를 만들 때 기기는 해당 웹사이트나 앱만을 위한 특별한 키를 생성하고 이를 생체 인증으로 보호합니다 부실한 패스키란 존재할 수가 없습니다 잊을 수도, 재사용할 수도, 추측할 수도 없죠 패스키는 공개 키 암호 방식을 기반으로 합니다 그래서 서버에서의 자격 증명 유출은 이제 과거의 일이 됐죠 유출되거나 해킹될 수도 있는 뻔하고 재탕된 비밀번호를 저장하는 대신 서버는 공개 키만 저장합니다 공개 키는 말 그대로 공개되도록 설계되어 해커들에게는 전혀 가치가 없죠 이는 웹사이트 소유주의 위험 부담을 획기적으로 줄여줍니다 패스키가 있으면, 정말 엄청난 부분인데요 현재 우리가 아는 자격 증명 피싱이라는 게 사라집니다 사용자가 겪는 최대의 보안 취약성이 제거되는 거죠 패스키는 해당 웹사이트나 앱에 본질적으로 묶여 있어 사용자가 엉뚱한 웹사이트에 속아 그 패스키를 사용할 일이 없습니다 그리고 비밀번호와는 달리 정교한 가짜 웹사이트에 패스키를 입력하거나 붙여 넣는 건 불가능합니다 심지어는 어깨 너머로 훔쳐보는 것도 불가능하죠 이 모든 걸 종합하면 계정 보안의 새로운 시대가 열렸다고 할 수 있습니다 패스키를 앱이나 웹사이트에 적용하려면 몇 단계만 거치면 됩니다 먼저, 여러분의 계정 백엔드가 공개 키를 저장하고 인증 요청을 보내도록 설정합니다 그다음, 여러분의 웹사이트와 앱에서 사용자에게 패스키를 제안하고 새 패스키 생성과 로그인을 위한 API를 적용합니다 패스키는 Web Authentication 또는 WebAuthn 표준을 기반으로 합니다 플랫폼 사업자와 서비스 오너들의 업계 전반에 걸친 협업의 결과죠 이 표준 자체도 완성도 있고 잘 정리돼 있으며 패스키는 여기에 아주 잘 들어맞습니다 이 모든 건 지금 바로 개발할 수 있도록 준비돼 있죠 차세대 보안, 군더더기 없는 사용자 경험, 과도기 동안 비밀번호와 잘 공존할 수 있는 설계까지 갖췄습니다 세바스천에게 돌아가 보시죠 여러분의 앱을 우리 모든 플랫폼의 시스템 경험에 녹여내는 새로운 방법 몇 가지를 알아봤는데요 이런 통합 요소들 말고도 우리 모든 플랫폼상에는 수많은 새 API와 프레임워크가 있어 올해 여러분과 여러분의 앱을 위해 더 많은 가능성을 열어줄 겁니다 몇 가지를 간단히 소개하고 나서 다른 몇 가지는 더 자세히 들여다보도록 하죠 iPadOS부터 시작합시다 iPadOS 16으로 여러분은 그 어느 때보다 강력한 iPad 앱을 만들어 일관적이고 데스크톱 같은 경험을 선사할 수 있을 겁니다 UI 텍스트 뷰를 위한 군더더기 없는 찾기 및 대치 경험이 여러분의 앱에 자동으로 추가되고 내비게이션 바, 툴바, 문서 메뉴의 업데이트로 사용자들의 문서 관리와 경험 사용자화가 용이해지죠 또한 하드웨어를 연결한 iPad가 더욱 강력한 앱을 사용할 수 있게 하고자 M1 칩의 놀라운 힘을 해방해주는 DriverKit를 iPad에 도입했습니다 현재 Mac에서 사용 가능한 것과 동일한 API로, 더욱 많은 청중에게 USB, 오디오, PCI 장치 지원을 제공할 수 있게 해주죠 watchOS는 시스템 서비스와의 더 깊은 융합을 통해 앱을 위한 새로운 기회를 만들어줍니다 watchOS 9의 CallKit 프레임워크에 새로운 보이스오버 IP 백그라운드 모드가 추가되어 앱이 음성 통화를 Apple Watch에서 직접 걸 수 있게 해주며 FaceTime 음성이나 전화 통화와 같은 친숙한 사용자 경험을 제공하죠 블루투스 연결 의료기기의 연결성과 데이터 전달이 더욱 탄탄해져서 위험한 상태가 감지되면 즉각 경고할 수 있게 됩니다
tvOS 16은 여러분이 연결된 경험을 선사할 새로운 방법들을 제공합니다 Apple TV 내의 앱과 근처 기기 내의 iPhone, iPad 또는 Apple Watch 앱을 연결해주죠 그래서 운동에 Watch의 모션 데이터를 사용할 수도 있고 iPhone이나 iPad를 사용자화 컨트롤러로 사용해 턴제 게임을 할 수도 있습니다 또한 tvOS가 기기 탐색과 연결을 대신 관리해서 여러분의 앱이 다른 기기에서 실행되고 있을 필요도 없죠 여러분의 앱이 설치돼 있지 않다면 사용자가 App Store에서 다운로드하도록 제안합니다 이제 휴대폰과 iPad에 광고주를 위한 새로운 도구가 제공됩니다 많은 비즈니스에 있어서 효과적인 광고는 매우 중요합니다 그래서 SKAdNetwork를 만들었는데요 광고 네트워크와 광고주가 사용자를 추적하지 않고도 광고 활동의 효과를 측정하도록 돕는 API죠 많은 서드파티 광고 네트워크에서 이를 적용해주었습니다 우리는 광고 네트워크와 개발자들의 피드백을 받았고 올해 SKAdNetwork에 여러 개선 사항을 적용해 가장 많았던 요청들을 반영했으며 개인정보를 침해하지 않고도 더 많은 유연성을 제공하죠
iPhone과 iPad에 새 멋진 기능이 추가됐는데요 ScanKit와 RoomPlan으로 AR과 LiDAR 스캔을 사용하는 기능이죠 이 API들은 여러분의 앱이 풍성한 3D 매개변수 룸 모델을 USD와 USDZ 포맷으로 제작하게 해주어 건축과 디자인부터 판매와 숙박업까지 여러 모습의 작업흐름과 경험을 선사하죠 이 모델에는 여러 종류의 가구가 포함됩니다 소파, 캐비닛, TV, 심지어는 부엌 싱크대도 있죠 지난해 우리는 iPhone, iPad, Mac, Apple Watch에 집중 모드를 도입했고 사용자의 집중 모드를 기반으로 앱 알림을 관리하는 방법들을 소개했죠 올해는 한 걸음 더 나아가 집중 모드 필터를 도입했습니다 App Intents를 기반으로 제작된 집중 모드 필터는 사용자의 현재 집중 모드를 기반으로 앱 콘텐츠를 변경하게 해줍니다 예를 들어, 앱이 집중 모드 필터를 생성해 사용자가 업무 모드일 때는 업무 계정만 보이게 할 수 있죠 이런 예시들은 극히 일부분에 불과합니다 모든 수준과 영역에 걸쳐 새로운 도구와 API가 힘을 발휘해 여러분의 앱을 그 어느 때보다 발전시키고 완전히 새로운 앱과 경험을 만들어내고 있죠 다음은 조금 더 깊이 가봅시다 먼저 새로운 지평을 여는 기술인 Metal부터 시작하죠 세라에게 가서 들어봅시다
Metal은 강력한 그래픽 및 컴퓨팅 API로서 Apple 플랫폼을 위한 멋진 게임과 전문가용 앱을 만드는 걸 돕습니다 Metal은 Apple Silicon을 탑재한 최신 iPhone, iPad, Mac 라인업에 담긴 혁신적인 Apple GPU와 통합 메모리 시스템을 손쉽게 활용하게 해줍니다 올해에는 Metal 3를 여러분께 소개합니다 강력한 새로운 기능들로 더욱 높은 프레임률로 몰입적인 그래픽을 렌더링하게 해주고 새로운 수준의 컴퓨테이션 성능을 열어주죠 예를 들어, 머신 러닝 프레임워크 Pytorch의 성능이 크게 향상되어 이제 새로운 Metal 백엔드를 사용해 GPU로 ML 훈련을 가능하게 합니다 최대 중점 영역은 바로 게이밍인데요 게임 로딩부터 시작하겠습니다 게이밍 경험의 핵심 요소로서 실행 속도와 로딩 속도에 영향을 주죠 현대 게임은 고품질 에셋을 제공함으로써 풍부한 게이밍 경험을 선사합니다 이런 에셋을 저장장치로부터 GPU로 빠르게 로딩하는 것은 늘 숙제였죠 보통, 게임들은 에셋 로딩을 로딩 화면 뒤에 숨깁니다 그리고 게임을 더 빨리 실행하기 위한 어떤 기법은 고품질 화면을 로딩하는 동안 저품질 버전을 먼저 출력합니다 이상적인 게이밍 경험은 아니죠 사용자가 저품질 그래픽을 오래 보게 되니까요 Metal 3는 고속 리소스 로딩을 위한 Metal IO API를 추가해 Apple GPU의 통합 메모리 아키텍처를 활용해서 로딩 비용을 최소화하고 Apple Silicon Mac에 탑재되는 고속 SSD 저장장치가 대기열에 충분한 요청을 받게 해서 처리량을 최대화합니다 이 새로운 API는 더 빠르고 일관적인 성능을 제공해서 이상적인 품질을 더 오랫동안 출력하게 하죠
저장장치로부터 메모리로 리소스를 옮기는 것과 더불어 게임 로딩에는 셰이더 컴필레이션도 중요합니다 셰이더는 늘 사용자의 독특한 하드웨어 환경에 맞춰 컴파일링해야 하죠 PC 하드웨어 교체의 다양성 때문에 보통 이 과정은 런타임에 실시되어야 합니다 이 인게임 컴파일링은 게이머 경험에 영향을 줄 수 있습니다 프레임 드롭, 낮은 프레임률, 로딩 시간 지연을 일으키죠 반면에 Apple Silicon과 Metal 3는 모든 Apple 기기를 지원하도록 함께 설계됐습니다 이제 오프라인 셰이더 컴파일링 덕에 GPU 셰이더 바이너리를 프로젝트 빌드 타임에 생성할 수 있어 인게임 셰이더 컴파일링을 없애주고 로딩 시간을 줄이고 렌더링 성능을 향상하죠 게이밍의 또 다른 중요한 측면은 바로 풍부하고 디테일한 에셋을 제공하는 것입니다 그리고 게임 그래픽의 시각적 완성도를 높이는 한 가지 방법은 훨씬 정교한 도형 메시를 생성하는 거죠 기존에는 컴퓨트 패스로 이를 처리했는데요 이는 표면을 측정하고 추후 렌더 패스에 사용될 도형을 생성하죠 문제는 이게 지연을 일으키고 예측 불가능한 양의 메모리를 점유할 수 있다는 겁니다 Metal 3는 새로운 메시 셰이딩 API를 도입해 최적화된 도형 처리 파이프라인에 대한 정확한 제어를 단일 렌더 패스로부터 제공합니다 오브젝트 셰이더는 메시를 얼마나 생성할 것인지를 결정하고 메시 셰이더는 실제 도형을 생성해 바로 래스터라이저로 보내서 장치 메모리 이동을 생략하고 성능을 향상하죠 게이머들은 이 멋진 비주얼을 가능한 최고의 프레임률로 보고 싶어 하지만 초고해상도로 고급 그래픽을 렌더링하는 건 소중한 밀리초를 잡아먹습니다 MetalFX 업스케일링은 프레임당 더 적은 시간으로 몰입적인 그래픽을 렌더링하게 해줍니다 작동 방식은 이렇습니다 이전에는 풀 프레임을 네이티브 해상도로 렌더링했지만 GPU 렌더 타임이 목표 프레임 타임에 미치지 못하기도 했죠 이제는 동일한 복잡한 장면을 더 낮은 해상도에서 렌더링해 목표 프레임 타임에 맞추고, MetalFX 프레임워크를 사용해 템포럴 안티에일리어싱과 목표 해상도로의 업스케일링을 실시합니다 Apple Silicon과 Metal 3의 최적화된 기능으로 Mac에서의 게이밍은 그 어느 때보다 화려해졌죠 개발자들도 동의합니다 최고의 게임 스튜디오들이 Mac에서 게임을 선보일 계획을 가지고 있습니다 가령 Grid Legends는 Apple silicon을 활용해 여러분이 최대 속도에 도달하게 해주죠 Resident Evil Village는 MetalFX 업스케일링 같은 기능을 사용해 소름 끼치게 아름다운 장면들을 최고 해상도로 제공합니다 No Man’s Sky는 Metal 3를 활용해 풍부하고 광활한 세계를 Mac과 iPad에서 탐험하게 해주죠 Metal 3는 굉장합니다 여러 기능으로 앱의 성능을 끌어올리고 놀라운 게이밍 경험을 선사하죠 이제 MapKit가 가고자 하는 방향을 캐시에게 자세히 들어보시죠 여러분이 좋아하는 식당으로 길을 찾아가든 다음 휴가를 계획하든 그냥 지도에서 좋아하는 푸드트럭이 어디 서 있는지 확인하든 우리는 주변 세상을 탐험할 때 그 어느 때보다 우리 기기에 의존합니다 MapKit는 풍부하고 유연한 지도 및 위치 서비스로 세상을 발견하고 돌아다니도록 돕는 최고의 방법입니다 이는 Apple 지도로 작동하며 개발자들은 무료로 이용 가능합니다 MapKit가 있으면 여러분의 앱에서 지도나 위성 사진을 표시하고 관심 장소를 찾아 불러내고 주석과 오버레이를 추가하고 길을 찾는 등의 일이 가능하죠 MapKit는 우리의 새로운 지도를 기반으로 합니다 처음부터 전부 Apple이 만든 거죠 이는 향상된 디테일과 정확도를 제공합니다 여러분의 앱에 유용한 지도와 위치 서비스를 이식할 수도 있죠 iOS 16에서 우리는 이 지도를 기반으로 MapKit에 역대 최대의 업데이트를 실시했습니다 가장 먼저 3D 도시 경험을 모든 개발자가 사용할 수 있게 했죠 여러분의 앱 사용자들은 놀라운 디테일을 볼 수 있게 될 겁니다 3D 고도, 회전 차로, 횡단보도, 자전거 도로 등 말이죠 손수 제작한 3D 랜드마크도 제공됩니다 골든 게이트 브리지나 페리 빌딩 등이 있죠 이 추가적인 지도 디테일은 이전에는 불가능했던 맥락과 정밀함을 제공하게 해줍니다 예를 들어, 관심 장소가 횡단보도 사이의 자전거 도로 시작점에 있다는 걸 보여줄 수 있죠 다른 디지털 지도는 할 수 없는 일입니다 우리는 이걸 아주 쉽게 할 수 있게 했죠 더 자세히 보여드리죠 새 지도의 디테일을 이용해 사용자가 좋아하는 푸드트럭의 주차 위치를 쉽게 찾도록 해봅시다 이런 지도 뷰는 사용 가능한 경우 자동으로 3D 도시 경험을 제공합니다 배치 대상으로 iOS 16을 선택하세요 그다음에는, 이 굉장히 디테일한 지도를 사용해 푸드트럭의 정확한 위치를 보여줄 수 있습니다 MapKit의 강력한 제어 기능으로 3D 공간에서 카메라 위치를 지정해 지도의 정확한 뷰를 생성할 수 있죠 여기서 얼마나 확대할지 선택할 수 있는데요 카메라의 중심 좌표 거리를 600미터로 설정하면 되죠 높이와 방향을 조절하고 카메라를 3D로 움직이면 멋지고 유용한 디테일을 볼 수 있습니다 회전 차로, 횡단보도, 심지어 나무까지 말이죠 기본적으로는 고도가 평면으로 표시됩니다 사용자가 어떤 지형을 만날지 알게 해주려면 preferredConfiguration을 elevationStyle: .realistic으로 지정해서 3D 고도를 추가하면 됩니다
MapKit의 Directions API로부터 주석이나 경로 선 소스를 추가하면 MapKit가 자동으로 고도를 처리하고 3D 지형 위에 두어 주석이나 경로 선을 조정할 겁니다 느린 회전을 추가해 카메라 방향 전환 애니메이션을 넣으면 지도 뷰가 살아 움직이죠 사용자가 다크 모드로 전환하면 지도도 나머지 UI에 맞춰 변경됩니다 이 몰입적인 경험을 iOS 16에서 개발자들이 어떻게 사용할지 기대되네요 추가로 Apple 지도의 인기 기능을 하나 더 MapKit로 가져왔습니다 바로 주변보기인데요 지상 높이에서 세상을 둘러보기 아주 좋은 방법입니다 고해상도 3D 사진과 부드러운 애니메이션과 함께 탭 한 번으로 도로로 내려갈 수 있죠
지도 바로 아래에 고정된 주변보기 미리보기를 추가할 수 있습니다 View Controller를 넣고 MapItem을 명시하면 되죠 주변보기 뷰는 자동으로 위치를 정확하게 비춥니다 사용자가 미리보기를 탭 하면 전체화면 주변보기 뷰를 제공하게 할 수도 있습니다 여기서 사용자는 주소와 사진 촬영 날짜를 볼 수 있고 탭 해서 자유롭게 움직여 주변을 더 자세히 볼 수 있죠 많은 요청을 받은 새 기능을 하나 더 iOS 16의 MapKit에 도입했습니다 Apple 지도 서버 API죠 지도 서버 API들은 RESTful이며 MapKit에서 가장 많이 사용되는 네 가지 기능을 지원합니다 좌표를 주소로 변환하는 지오코드, 반대로 주소를 GPS 좌표로 변환하는 역 지오코드, 검색, 그리고 예상 도착 시간이죠 새로운 지도 서버 API들은 여러분의 백엔드 서비스를 더 풍성하게, 효과적으로 만드는 좋은 방법입니다 물론 MapKit는 Apple 지도와 동일한 개인정보 보호 기반 위에 제작되었기에 사용자 데이터를 아이디에 연동하거나 사용자가 방문한 장소 기록을 저장하지 않죠 이렇게 iOS 16의 새로운 MapKit를 간단히 살펴봤는데요 이제 날씨, 그리고 여러분의 앱에 날씨를 넣는 방법을 노벌이 전해드릴 겁니다 오늘 우리는 날씨 앱을 iPad와 Mac에 도입한다는 소식과 강력한 새 기능들인 악천후 알림, 풍부한 디테일 뷰, 10일간의 시간 단위 기온, 그리고 강수량 예보를 소개했습니다 그리고 모든 Apple 기기와 플랫폼에서 여러 가지 경험이 우리가 제공한 날씨 데이터로 인해 향상됐습니다 Siri에게 오늘 예보를 묻는 것부터 홍수를 피해 경로를 재설정하는 것까지 말이죠 그 모든 게 우리 Apple 날씨 서비스에 포함돼 있습니다 Apple 날씨는 세계적인 수준의 국제 날씨를 전달합니다 고해상도 기상학 모델과 머신 러닝 및 예측 알고리즘의 결합을 통한 것이죠 Apple 날씨는 현재 날씨, 10일간의 시간 단위 예보, 일일 예보, 과거 날씨를 제공해서 데이터로 추이를 구할 수 있습니다 악천후 경보와 분 단위 강수량도 전 세계 국가를 선택해 확인할 수 있죠 일기예보는 10일간의 시간 단위 기온, 강수량, 자외선 지수 예보 등을 제공합니다 이 모든 데이터는 WeatherKit를 통해 이용 가능합니다 WeatherKit는 모든 Apple 플랫폼을 위한 네이티브 Swift API이며 어디서든 사용할 수 있는 REST API죠 이 API들은 정확한 동네 단위 날씨 예보를 제공해 사용자의 안전, 인지, 대비를 돕습니다 WeatherKit의 훌륭한 Swift API를 통해 날씨 정보를 얻기가 얼마나 쉬운지 간단한 시연으로 보여드리죠 우리 Food Truck 앱으로 돌아가 보겠습니다 고객들이 비를 맞지 않게 하고자 제 앱은 하늘이 맑은 주차 위치를 추천하도록 설정했습니다 어떻게 날씨를 불러오는지 보여드리죠 여기, 저장된 주차 위치 목록이 있습니다 저는 이미 WeatherKit 기능을 Xcode에 추가했는데요 코드 몇 줄만 작성하면 됩니다 Swift 동시성 덕에 날씨 요청은 간단합니다 WeatherService에 weather (for: )를 호출하고, 위치를 제출합니다 그러면 제 앱에 필요한 관련 데이터를 얻을 수 있죠 기상,
강수량,
운량처럼요
이제 각 주차 위치의 필요한 데이터를 얻었으니 앱을 실행하면 제 사용자화 뷰가 하늘이 맑은 위치를 추천하도록 업데이트돼 있습니다
날씨 데이터를 사용해 여러분 앱의 경험을 향상할 방법은 아주 많습니다 날씨 예보를 사용해 재고를 관리할 수도 있습니다 더운 날에는 아이스크림 도넛이 인기 있을 거라고 예상되니 아이스크림을 비축해야겠죠 이렇게만 하면 우리 Food Truck에 날씨를 가져올 수 있습니다 WeatherKit에는 아직 더 많은 것이 숨어 있죠 Apple의 개인정보 보호 노력에 맞춰 위치 정보는 날씨 예보를 제공하는 데만 사용되고 그 어떤 개인 식별 정보도 연동되지 않으며 절대로 공유되거나 판매되지 않습니다 개인정보 보호는 공동의 의무입니다 WeatherKit를 통해 여러분은 정확한 날씨 데이터를 얻고 사용자의 개인정보도 보호할 수 있죠 여러분이 WeatherKit를 쉽게 사용하게 해드리고 싶어서 매월 50만 건의 weather (for :location) API 호출을 Apple Developer Program 멤버십에 포함했습니다 더 많이 필요한 분들은 올가을부터 개발자 앱에서 추가로 구매하실 수 있죠 이것이 WeatherKit입니다 Apple 날씨 서비스가 제공하는 정확한 동네 단위 날씨 예보죠 우선 베타로 제공되며, 지금 모든 플랫폼에서 이용 가능합니다 여러분의 앱에서 WeatherKit를 활용할 창의적인 방법은 아주 많습니다 이제 라이브 텍스트가 여러분의 앱에 어떤 새로운 관점을 열어줄지 라이언에게 들어보시죠 우리 사용자들은 라이브 텍스트를 사랑합니다 여러분 중에도 많은 분이 자기 앱에도 가져오고 싶다고 하셨는데요 올해 우리는 이를 가능하게 할 두 개의 새 API로 VisionKit를 확장했습니다
Live Text API는 이미지 콘텐츠 분석을 가능하게 하여 사용자들이 사진이나 정지된 영상 안의 텍스트 및 QR 코드와 상호작용할 수 있게 합니다 또 빠른 동작을 제공해서 사용자들은 단 한 번의 탭으로 관련 데이터에 대한 동작을 실행할 수 있죠 시각 미디어를 출력하는 모든 앱에 쓰기 좋습니다 Reddit의 Apollo나 Vimeo처럼요 그리고 Data Scanner API로는 라이브 카메라 피드 분석도 가능합니다 이는 텍스트 및 바코드 인식을 크게 단순화해주는데요 오버레이나 사용자화 제어 메뉴를 추가해 라이브 카메라 경험을 앱의 필요에 맞춰 설정하기만 하면 되죠 이는 QR 코드를 많이 사용하는 소비자용 앱에 특히 유용합니다 또는 창고 재고 관리, 주문 배송 서비스, 그리고 매장 키오스크를 위해 개발된 기업용 앱에도 유용하죠 Live Text API와 Data Scanner API 모두 9개국어를 자동 감지합니다 올해부터 여기에 일본어와 한국어가 추가되죠
이런 VisionKit API들은 컴퓨터 비전 혁신 시대를 코드 단 몇 줄로 여러분의 앱에 가져올 것입니다 제니에게 배워보시죠 시연을 위해 우리의 믿음직한 Food Truck 앱으로 돌아가 보죠 지금 이벤트를 하고 있는데요 사용자들이 우리 앱의 소셜 채널에 #freedonut과 주소가 적힌 팻말을 든 사진을 올리면 우리가 그 주소로 가서 무료 도넛을 전달하는 거죠 우리 소셜 도넛 피드로 가볼게요 라이브 텍스트를 이미지에 추가해 배달 기사들이 배달할 주소를 추출할 수 있게 하고자 합니다 여기서 새로운 Live Text API가 활약하죠 간단하게 제 뷰 맨 위에 ImageInteraction을 추가하면 빠른 동작을 지원하는 라이브 텍스트 버튼이 추가됩니다 라이브 텍스트 버튼은 보통 우측 하단에 배치되는데 제 앱은 이미 거기에 하트 버튼이 있으니 사용자화 인셋을 사용해 위치를 조정하면 되죠 버튼 설정을 통해 버튼의 스타일을 사용자화해서 제 앱에 어울리게 만들 수도 있습니다 이제 버튼을 추가했으니, 라이브 텍스트 버튼을 눌러서 텍스트를 선택하거나 빠른 동작을 사용해 간편하게 주소를 가져오면 되죠
사용자들이 새로운 상호작용 모델을 배우지 않아도 된다는 게 참 좋습니다 라이브 텍스트와 동일하게 사용이 편하거든요 UI는 일관성 있고 친숙합니다 OS와 잘 통합된 느낌이 들죠 그렇지만 저만의 사용자화 UI가 있더라도 위치를 조정할 수 있습니다 물론 다른 좋은 배달 앱처럼 우리도 고객들에게 최고의 서비스를 제공하고 도넛을 정확하게 배달하고 싶습니다 그래서 QR 코드로 도넛 주문을 추적하죠 새로운 Data Scanner API를 사용하면 모든 고객 상호작용의 첫 단계로 이를 손쉽게 추가할 수 있습니다 지금은 이 버튼이 아무 일도 하지 않지만 간단하게 새 DataScanner 오브젝트를 인스턴스화 해서 이를 통해 텍스트, QR 코드, 바코드를 탐색해 제 앱으로 불러올 수 있습니다 코드 몇 줄만으로 카메라를 불러오고, QR 코드를 원한다는 걸 명시하고, 스캔을 시작할 수 있죠 배달 기사가 QR 코드를 탭 하면 스캔에 성공했다는 걸 보여주고 싶은데요 Xcode에 대표 핸들러를 추가하고
탭 했을 때 사용자에게 스캔에 성공했으니 도넛 배달을 시작해도 된다는 알림을 보여주게 합니다 이제 앱을 실행하면 뷰 컨트롤러가 뜹니다 카메라 뷰에서 안내 문구와 QR 코드를 강조해주는 십자선 뷰를 볼 수 있죠 QR 코드를 탭 하면 스캔에 성공했다는 문구가 보이고 이렇게 도넛 주문이 확인됩니다 그러면 #freedonut 배달이 시작되죠 VisionKit를 통해 새로운 Live Text API와 Data Scanner API는 이런 강력한 시각 기능을 간단히 여러분의 앱에 가져오게 해줍니다 이제 수잔에게 돌아가 보시죠 지금은 앱을 제작하기 참 좋은 시기입니다 Xcode Cloud는 더 좋은 앱을 더 빨리 만들도록 도울 준비가 돼 있죠 Swift와 SwiftUI로 어느 때보다 손쉽게 여러분의 아이디어를 모든 Apple 플랫폼에서 작동하는 앱으로 변신시킬 수 있습니다 여러분의 앱이 여러분의 아이디어를 시스템 경험에 더 깊이 녹여낼 멋진 방법들이 새로 등장했죠 잠금화면 위젯과 Live Activities는 여러분의 앱을 잠금화면에 등장하게 해줍니다 Messages 협업은 여러분의 사용자들이 굉장히 쉽게 소통하고 협업하게 해주죠 App Intents는 여러분의 앱을 Siri와 통합해줍니다 완전히 새로운 API가 등장했으며 WeatherKit, MapKit, 라이브 텍스트, Metal 같은 기존 API에는 대규모 업데이트가 있었죠 이게 끝이 아닙니다 올해 WWDC도 규모가 아주 큽니다 175개의 세션, 수백 개의 랩, 디지털 라운지 활동이 일주일 내내 계속되죠 얼른 여러분과 소통하고 싶군요 그리고 무엇보다도, 이 일주일은 여러분의 것입니다 앞으로 여러분이 뭘 창조해내실지 보고 싶군요 감사합니다! ♪ ♪ 제작 안전 보건 정책 매일 발표자, 출연자, 촬영팀의 건강 점검 및 검사 실시 적절한 거리 두기 및 적극적 감시 실시 마스크 제공 쵤영 중인 발표자, 출연자를 제외한 모든 인원 마스크 착용 발표자, 출연자, 촬영팀 외 제작 장소 출입 제한 다수의 발표자나 출연자가 출연할 경우 필요에 따라 추가 조치 실시 제작 장소의 철저한 정기적 소독 실시
Apple 이벤트 Apple Park, 쿠퍼티노
-
-
찾고 계신 콘텐츠가 있나요? 위에 주제를 입력하고 원하는 내용을 바로 검색해 보세요.
쿼리를 제출하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해 주세요.