visionOS 앱 기획하기

Apple Vision Pro 및 visionOS용 앱과 게임을 개발하는 데 사용할 도구와 기술에 대해 자세히 알아보세요. Apple은 개발을 시작하는 데 필요한 모든 것을 제공합니다. visionOS를 통해 앱에 원하는 기능과 성능을 구현해 보세요.

    무궁무진한 가능성 탐색하기

    Apple Vision Pro는 공간 컴퓨팅을 위해 철저히 디자인된 최초의 플랫폼입니다. Apple Vision Pro 사용자는 주변 환경과 자연스럽게 어우러지는 무한한 공간에서 앱 및 게임과 상호작용하거나, 새로운 세상으로의 문을 열어 주는 단일 경험에 깊이 몰입할 수 있습니다. visionOS의 고유한 기능을 활용한 앱을 빌드하는 방법을 알아보고 소통, 작업, 즐거움의 의미를 재해석해 보세요. SwiftUI, UIKit, RealityKit, ARKit 등의 기존 프레임워크를 사용하여 앱을 visionOS에서 제공하는 방법도 살펴보세요.

    • 공유 공간에서 친숙한 윈도우 만들기. 윈도우는 SwiftUI 장면(Scene)으로, 공간상에 평면으로 표시됩니다. 이러한 윈도우를 하나 이상 열 수 있습니다. 윈도우는 친숙한 뷰와 제어기를 사용하며, 하나 이상의 윈도우를 열어 앱의 콘텐츠를 관리할 수 있습니다. 앱의 윈도우는 다른 앱과 함께 표시됩니다. 사용자는 윈도우의 크기를 조정하고 주변 환경 내에서 위치를 변경할 수 있습니다.
    • 3D 요소로 인터페이스 확장하기. 3D 객체 또는 RealityView를 윈도우에 추가하여 심도를 더해 보세요. 사용자가 모든 각도에서 콘텐츠를 볼 수 있도록 하고 싶다면, 앱의 다른 윈도우와 함께 공유 공간에 표시되는 볼륨을 생성하는 것을 고려해 보세요.
    • 몰입도 수준 높이기. 앱에서 전체 공간를 열면 visionOS가 제공하는 공간의 전체 화면으로 확장됩니다. 3D 콘텐츠를 사용자 주변 환경에 바로 배치하거나, 다른 세계로 가는 포털을 열거나, 주변 환경을 모두 교체할 수 있습니다. 전체 공간이 열려 있을 경우 시스템은 앱의 윈도우와 볼륨을 표시하고 다른 앱의 콘텐츠는 숨깁니다.

    visionOS용 앱을 빌드할 때 윈도우, 볼륨 및 공간을 앱 안에서 자유롭게 조합하여 콘텐츠에 가장 잘 맞는 순간을 만들어 보세요. 앱에서 높은 몰입도를 제공하기 적절한 주요 순간을 찾아보고, 몰입도 수준을 자연스럽게 조절할 수 있게 해보세요.

    기존 iPadOS 또는 iOS 앱을 visionOS에서 호환되는 앱으로 실행할 수도 있습니다. 앱은 사용자 주변 환경에서 확장 가능한 단일 윈도우로 표시됩니다.

    시작하기

    Apple의 통합 개발 환경인 Xcode를 사용하여 visionOS용 소프트웨어 개발 프로세스를 시작할 수 있습니다. Xcode는 프로젝트 관리 지원, 코드 편집기, UI용 시각적 편집기, 디버깅 도구, 다양한 기기를 위한 시뮬레이터, 성능 평가 도구를 비롯하여 소프트웨어 개발을 위한 종합 도구 세트를 제공합니다. 아울러 Xcode에는 소프트웨어 개발을 위한 시스템 코드 모듈 종합 세트인 프레임워크도 포함되어 있습니다.

    Xcode 다운로드하기

    visionOS용 신규 프로젝트 메뉴가 나타난 Xcode 스크린샷. visionOS용 신규 프로젝트 메뉴가 나타난 Xcode 스크린샷.

    Xcode에서 신규 프로젝트를 생성하려면 File(파일) > New(신규) > Project(프로젝트)를 선택한 후 표시되는 메시지에 따라 visionOS 앱을 만듭니다. 모든 신규 프로젝트는 SwiftUI가 제공하는 최신 선언적 프로그래밍 모델을 사용하여 앱의 핵심 기능을 생성합니다.

    SwiftUI는 Apple의 데이터 관리 기술과 매끄럽게 연동되어 콘텐츠 생성을 지원합니다. Swift 표준 라이브러리Foundation 프레임워크는 어레이, 딕셔너리와 같은 구조 유형과 문자열, 숫자, 날짜 및 기타 일반적인 데이터 값과 같은 값 유형을 제공합니다. 개발자가 정의한 맞춤형 유형에는 Swift의 Codable 지원을 적용하여 디스크에서 해당 유형이 지속되도록 할 수 있습니다. 앱에서 많은 양의 구조화된 데이터를 관리하는 경우 SwiftData, Core DataCloudKit 프레임워크의 객체 지향 모델을 활용하여 데이터를 관리하고 유지할 수 있습니다.

    Unity의 강력하고 친숙한 작성 도구를 사용하여 새로운 앱과 게임을 만들 수도 있습니다. AR Foundation과 같은 친숙한 Unity 기능 외에도 패스스루 및 동적 포비티드 렌더링(Dynamically Foveated Rendering) 등 visionOS가 제공하는 모든 이점을 앱에서 활용해 보세요.

    인터페이스에 새로운 차원 추가하기

    앱을 빌드할 때는 윈도우부터 시작하고 요소를 적절하게 추가하여 사용자가 콘텐츠에 더 몰입할 수 있도록 합니다. 볼륨을 추가하여 3D 콘텐츠를 표시하거나 전체 공간를 사용하여 몰입도 수준을 높일 수 있습니다. Mixed(혼합) 스타일은 공간을 구성하여 패스스루를 표시합니다. Progressive(점진적) 또는 Full(전체) 스타일을 적용하여 몰입도를 높이고 방해 요소를 최소화할 수도 있습니다.

    • 윈도우에 심도 추가하기. 심도 기반 오프셋을 뷰에 적용하여 윈도우의 일부분을 강조하거나 모달리티의 변경 사항을 나타낼 수 있습니다. 3D 객체를 뷰 레이아웃에 바로 통합하여 2D 뷰와 나란히 배치할 수 있습니다.
    • 맞춤형 뷰에 호버 효과 추가하기. 사용자가 호버 효과를 사용하여 맞춤형 요소를 볼 때 해당 요소를 강조 표시할 수 있습니다. 호버 효과의 동작을 맞춤 설정하여 원하는 시각적 효과를 구현해 보세요.
    • 오너먼트를 사용하여 메뉴 및 도구 막대 구현하기. 오너먼트를 사용하여 자주 사용하는 도구와 명령을 윈도우의 바깥쪽 가장자리에 배치할 수 있습니다.

    RealityKit은 앱에 있는 3D 객체의 생성 및 애니메이션을 관리하는 데 사용되는 등 visionOS 앱에서 중요한 역할을 합니다. 프로그래밍 방식으로 RealityKit 콘텐츠를 생성하거나 Reality Composer Pro를 사용하여 필요한 모든 객체, 애니메이션, 사운드 및 시각 효과가 포함된 전체 장면(Scene)을 빌드할 수 있습니다. RealityView를 사용하여 이러한 장면(Scene)을 윈도우, 볼륨 또는 공간에 포함할 수 있습니다. 또한 앱에서 다음과 같은 기타 3D 기능을 활용할 수 있습니다.

    • MaterialX 셰이더를 적용하여 동적 효과 구현하기. MaterialX는 영화, 시각 효과, 엔터테인먼트, 게임 업계의 대표 기업들이 지원하는 개방형 표준입니다. 기존 도구를 사용하여 MaterialX 셰이더를 생성하고 Reality Composer Pro를 사용하여 이러한 셰이더를 RealityKit 장면(Scene)에 통합할 수 있습니다.
    • USDZ 파일에 3D 콘텐츠 저장하기. 자주 사용하는 도구로 정교한 3D 객체와 메시를 빌드하고 이를 프로젝트에 USDZ 애셋으로 저장할 수 있습니다. Reality Composer Pro에서 원본에 영향을 주지 않는 선에서 애셋을 변경하고 이를 더 큰 장면(Scene)에 통합할 수 있습니다.
    • Xcode에서 3D 콘텐츠 미리보기 생성하기. 프로젝트 윈도우에서 3D 콘텐츠를 포함한 SwiftUI 뷰를 미리 볼 수 있습니다. Xcode 미리보기를 위해 여러 카메라 위치를 지정하면 다양한 각도로 콘텐츠를 볼 수 있습니다.

    Human Interface Guidelines

    Apple의 Human Interface Guidelines는 앱의 인터페이스를 디자인하고, 콘텐츠를 탐색하고, 상호작용을 관리하는 방법에 관한 유용한 정보를 제공합니다. visionOS 에코시스템을 탐색하는 과정에서 이 지침을 우선적으로 확인하는 것이 좋습니다.

    간결한 상호작용 고안하기

    visionOS에서 사용자는 주로 눈과 손을 사용하여 앱과 상호작용합니다. 간접적인 제스처의 경우 사용자는 객체를 눈으로 본 다음 엄지와 검지로 집어 선택합니다. 직접적인 제스처의 경우 사용자는 손가락을 사용하여 3D 공간의 객체와 상호작용합니다. 앱에서 입력을 처리할 때는 다음 내용을 참고하세요.

    • 표준 앱 제스처 적용하기. 앱 상호작용 전반에 탭, 스와이프, 드래그, 길게 누르기, 이중 탭, 확대/축소 및 회전 제스처를 활용하세요. SwiftUIUIKit에는 모든 플랫폼에 걸쳐 이러한 제스처를 지원하는 기능이 내장되어 있습니다.
    • 외부 게임 컨트롤러에 대한 지원 추가하기. 게임 컨트롤러는 앱에 대체 입력 형식을 제공합니다. visionOS는 연결된 무선 키보드, 트랙패드 및 접근성 하드웨어를 통한 입력을 앱의 이벤트 처리기 코드로 자동 전송합니다. 게임 컨트롤러의 경우 Game Controller 프레임워크를 사용하여 명시적 지원을 추가할 수 있습니다.
    • ARKit으로 맞춤형 제스처 만들기. visionOS는 ARKit을 사용하여 사용자 주변 환경과의 상호작용을 조성합니다. 앱이 전체 공간으로 이동하면 사용자의 손 및 손가락의 위치 정보를 수신할 권한을 요청하고 해당 정보를 사용하여 맞춤형 제스처를 만들 수 있습니다.

    ARKit은 전체 공간에서 콘텐츠 관련 상호작용을 지원하는 추가 서비스를 제공합니다. 사용자의 주변 환경에서 수평면(Surface)알려진 이미지를 감지하여 앵커를 추가할 수 있습니다. 주변 환경의 메시를 확보하고 이를 RealityKit 장면(Scene)에 추가하여 앱 콘텐츠가 현실 세계의 객체와 상호작용하도록 만들 수 있습니다. 주변 환경과 비교하여 Apple Vision Pro의 위치와 방향을 결정하고 WorldAnchor를 추가하여 콘텐츠를 배치할 수 있습니다.

    한 차원 더 높은 오디오 및 비디오 생성하기

    Apple Vision Pro는 입체 영상을 지원하여 비디오 및 기타 엔터테인먼트가 화면에서 나와 사용자의 주변 환경에 스며들도록 합니다. visionOS의 기본 경험인 공간 음향을 활용할 방법 또한 자유롭게 고안해 보세요.

    • 3D용 비디오 애셋 업데이트하기. 몰입감 넘치는 3D 환경에서 3D 비디오를 재생하여 영화 감상 경험을 한 차원 더 높여 보세요. QuickTime 파일 형식은 화면에 바로 표시되는 콘텐츠를 포함하도록 지원합니다. AVKitAVFoundation을 사용하여 비디오를 재생해 보세요. 비디오 파일에 입체 영상 콘텐츠용 atom을 포함할 수 있습니다.
    • 공간 음향 지원 추가하기. 앱의 음악 플레이어 빌드에 AVFoundation 프레임워크의 오디오별 유형을 포함하는 AVFAudio를 사용할 수 있습니다. 게임과 앱에서 정교하고 역동적인 공간 음향 경험을 선사하는 PHASE를 사용하여 차원이 다른 오디오를 제공할 수 있습니다.
    • 실시간 또는 녹음/녹화된 콘텐츠 스트리밍하기. HTTP Live Streaming을 사용하여 스트리밍된 콘텐츠를 만들고 서버에 배포하는 방법에 대해 알아보세요. AVFoundation을 사용하여 스트리밍이 완료된 콘텐츠를 앱에서 재생할 수 있습니다.

    포용성 융합하기

    포용적인 앱을 만들면 누구나 여러분의 콘텐츠를 이용할 수 있습니다. Apple 기술은 여러 가지 방법으로 포용성을 지원합니다. 앱 전반에 걸쳐 이러한 기술을 지원하세요.

    • 앱 국제화 및 현지화하기. 다른 지역 및 언어에 맞게 앱을 현지화하여 세계 시장에 진출해 보세요. Foundation 프레임워크에서는 각기 다른 언어 및 지역에 맞는 문자열, 날짜, 시간, 통화 및 숫자 형식을 지정하는 코드를 제공하므로, 이를 사용하여 앱을 준비해 보세요. 좌횡서 언어 및 우횡서 언어 모두에서 UI가 제대로 보이는지 확인하세요. 앱 리소스를 현지화하고 Xcode 프로젝트에 추가하세요. 국제화 및 현지화 절차에 대한 자세한 내용은 현지화에서 확인하시기 바랍니다.
    • 포용적인 단어 및 용어 선택하기. 콘텐츠를 개발할 때 사회문화적인 차이를 고려하고, 일부 사용자가 부정적 또는 모욕적으로 느낄 수 있는 이미지 및 용어의 사용을 피하도록 합니다. 자세한 내용은 Human Interface Guidelines > Inclusion(포용성)에서 확인하시기 바랍니다.
    • 손쉬운 사용 레이블 및 탐색 업데이트하기. Apple의 기술은 손쉬운 사용을 지원합니다. 하지만 화면 읽기 프로그램 및 기타 손쉬운 사용 기능을 통해 접근성 높은 경험을 제공하려면 개발자가 제공하는 정보가 중요합니다. 손쉬운 사용 레이블 및 기타 설명을 검토하여 유용한 정보를 제공하고 있는지 확인하고, 시선 기반 탐색이 간단하고 직관적인지 확인하세요. 손쉬운 사용을 참고하시기 바랍니다.
    • 기능에 접근하는 다양한 방법 지원하기. 메뉴 명령 또는 게임 컨트롤러와 같이 콘텐츠를 선택하고 사용할 수 있는 다양한 방법을 제공하세요. RealityKit 엔티티에 손쉬운 사용 구성 요소를 추가하면 사용자가 보조 기술을 사용하여 탐색 및 선택할 수 있습니다.
    • VoiceOver 알림 추가하기. visionOS에서 VoiceOver가 활성화되면 사용자가 손 제스처를 사용하여 앱을 탐색할 수 있습니다. 사용자가 앱과 상호작용하기 위해 Direct Gesture 모드를 활성화하는 경우 원활한 콘텐츠 상호작용을 지원하기 위해 알림이 재생됩니다.
    • 오디오 콘텐츠에 자막 포함하기. 자막은 일부 사용자에게 필요한 기능이지만, 어떤 환경에서는 모든 사용자에게 유용하기도 합니다. 예를 들어 시끄러운 환경에서 비디오를 시청하는 사용자에게 도움이 될 수 있습니다. 텍스트와 대화에 대한 자막뿐 아니라 앱의 음악과 사운드 효과에 대한 자막도 포함하세요. 맞춤형 비디오 엔진이 표시하는 자막에 시스템 화면 스타일이 적용되었는지 확인하세요.
    • 시각 및 움직임의 영향 고려하기. 움직임 효과는 움직임에 민감하지 않은 사람들에게조차 거슬릴 수 있습니다. 빠른 움직임, 통통 튀거나 일렁이는 움직임, 확대/축소 애니메이션, 다축 움직임, 선회 또는 회전을 비롯한 효과의 사용을 제한하세요. 시스템의 손쉬운 사용 설정에서 움직임 완화를 권장하는 경우 적절한 대안을 제공하세요. Human Interface Guidelines > Motion(움직임)을 참고하시기 바랍니다.

    visionOS 앱을 손쉽게 사용할 수 있도록 하는 방법을 자세히 알아보려면 visionOS 앱의 손쉬운 사용 지원 향상하기를 참고하시기 바랍니다.

    개인정보 보호하기

    개인정보는 매우 중요합니다. 사용자에게 당사자의 데이터가 어떻게 사용되고 있는지 지속적으로 알려주세요. 데이터를 수집하는 경우, 개인정보 처리방침을 제공하고 수집한 정보를 어떻게 사용하는지 설명해 주세요. 개인 데이터를 기반으로 작동하는 Apple 기술을 사용하는 경우, 해당 기술의 최초 사용 시 관련 사용 설명이 시스템에 표시되도록 합니다. 자세한 내용은 개인정보 보호 및 사용자 환경설정에 관한 모범 사례 적용하기에서 확인하시기 바랍니다.

    • 수집한 데이터를 통해 실질적인 이점 제공하기. 사용자가 자신의 개인정보를 제공하는 데 동의했다면 앱은 사용자에게 실질적인 가치를 돌려주어야 합니다. 사용자의 개인정보를 단순히 수집만 해서는 안 됩니다.
    • 수집한 정보를 사용하는 방식을 명확하게 설명하기. 사용자의 데이터를 어떤 식으로 사용하는지 투명하게 공개하세요. 개인정보에 민감한 기술을 사용하기 위한 승인을 요청할 때는 해당 데이터가 필요한 이유를 이해하는 데 도움이 되는 명확한 사용 설명 문자열을 제공하고, App Store의 앱 페이지에도 해당 데이터에 대한 설명을 포함하세요.
    • 수집 및 저장하는 데이터 보호하기. 데이터를 수집하는 경우 악의적인 공격으로부터 데이터를 보호해야 합니다. 암호를 대신하는 안전한 대안으로 패스키를 도입해 보세요. 개인 식별 가능 정보, 금융 데이터 또는 기타 민감한 정보를 사용자의 암호화된 키체인에 보관하세요. 온디스크 암호화 또는 다른 Apple 보안 기술을 사용하여 기타 개인정보를 저장하세요. Apple CryptoKit을 사용하여 로컬에 저장하거나 앱 외부로 전송하는 데이터를 암호화하세요.

    앱 테스트 및 수정하기

    개발 과정에서 앱을 테스트하고 Apple Vision Pro에서 앱이 잘 실행되는지 확인하는 방법에는 여러 가지가 있습니다.

    • 철저하게 앱 테스트 및 디버깅하기. 개발 과정에서 문제가 발생하면 내장된 Xcode 디버거를 사용하여 디버깅할 수 있습니다. XCTest를 사용하여 자동화된 테스트 스위트를 제작하고 매 빌드마다 이를 실행하여 새로운 코드가 정상적으로 작동하는지 확인할 수 있습니다. 다양한 시스템 부하에서 이러한 테스트를 실행하여 앱의 동작을 확인할 수 있습니다.
    • 작업량에 유의하기. 앱에서 수행하는 작업은 실질적인 이점을 제공해야 합니다. 알고리즘을 최적화하여 앱에서 소비하는 CPU 및 GPU 리소스를 최소화하세요. Xcode와 함께 제공되는 Instruments 앱을 사용하여 코드에서 발생하는 병목 현상 및 기타 성능 문제를 식별할 수 있습니다. visionOS 앱을 위한 성능 계획 수립하기를 참고하시기 바랍니다.
    • CI(지속적 통합) 작업 흐름 적용하기. CI 사고방식을 도입하여 모든 커밋이 코드베이스의 품질과 안정성을 유지하도록 합니다. 성능 관련 테스트를 테스트 스위트에 포함합니다. Xcode Cloud의 지속적 통합 시스템을 사용하여 빌드, 테스트 주기 및 QA 팀에 앱 배포를 자동화하도록 합니다.

    편의 기능 추가하기

    앱 개발을 완료한 후에는 경험을 향상할 추가적인 방법을 찾아보세요. 특정 기능을 추가하거나 콘텐츠에 다른 방법으로 접근하는 것과 같이 작은 것이 큰 차이를 만들 수 있습니다.

    • SharePlay로 사용자 연결하기. 공유와 협업은 visionOS에서 중요한 부분입니다. 앱의 어떤 활동에 FaceTime을 통합할 수 있을지 브레인스토밍해 보세요. Group Activities 프레임워크를 사용하여 활동 시작 및 업데이트 관리에 대한 지원을 추가할 수 있습니다.
    • 공간 페르소나(Spatial Persona)를 위한 SharePlay 활동 디자인하기. 앱에서 SharePlay를 지원하여 공간 페르소나(Spatial Persona)를 활용할 수 있는 부분이 있는지 살펴보고, 공유된 컨텍스트를 유지하는 데 필요한 추가 세부 사항을 동기화하세요. 예를 들어 윈도우 콘텐츠 외에 윈도우의 스크롤 위치를 공유하도록 해볼 수 있습니다.

    더 살펴보기

    고유한 기능을 제공하는 동시에 Apple 플랫폼과 긴밀히 통합되어 iOS, iPadOS, macOS, tvOS, visionOS 및 watchOS 전반에서 매끄러운 앱 및 게임 에코시스템을 구축하는 다양한 기술에 대해 자세히 알아보세요.