[Swift] 3D 스캔 앱을 로컬 서버와 연결하기
·
Apple/Swift
안녕하세요! 피피아노입니다 🎵 iOS 16부터 제공되는 Object Capture API를 사용하면 iPad의 LiDAR 센서로 실제 물체를 3D 모델로 변환할 수 있습니다. 하지만 생성된 모델을 어떻게 활용할 것인가에 대한 고민이 생겼습니다. 처음에는 아이폰과 아이패드 내부에만 저장하고 있었는데, 이렇게 되면 여러 기기에서 모델을 공유하기 어렵고, 서버에서 추가 처리를 할 수 없으며, 데이터 분석이나 백업이 불편했습니다. 물론 학습 목적으로 만든 앱이기 때문에 해당 부분이 없다고 해서 치명적인 문제가 발생하는 것은 아니지만, 실제로 서비스를 한다면 이러한 부분도 빼놓을 수 없을 정도로 중요한 부분이기 때문에 스캔 후 사용자가 원하면 바로 서버로 업로드하는 기능을 추가하기로 하였습니다. 우선 사용한 ..
[iOS] Object Capture 사용하기
·
Apple/iOS
안녕하세요! 피피아노입니다 🎵 WWDC23에서 공개된 iOS용 Object Capture를 이용해서 기존에 Mac에서만 사용할 수 있었던 Object Capture API를 이제 iOS에서도 경험할 수 있게 되었습니다. Object Capture 주요 개선 사항iOS용 Object Cature API를 살펴보기 전에 새롭게 추가되거나 개선된 부분을 살펴보면, iPhone이나 iPad에 있는 LiDAR 센서를 통해 더 많은 물체를 지원한다는 점입니다. 기존에는 충분한 텍스처 디테일이 있는 물체에 최적화되어 있었지만, LiDAR Scanner를 이용하여 의자나 가구처럼 텍스처 디테일이 부족한 물체의 재구성 품질을 향상시켰다고 합니다. 작동 원리는 RGB 이미지 외에 LiDAR는 물체의 3D 모양에 대한 포..
[iOS] TCA(The Composable Architecture) 입문기
·
Apple/iOS
안녕하세요! 피피아노입니다 🎵 최근 관심 있는 회사들의 채용 공고와 기술 블로그를 살펴보다가 TCA(The Composable Architecture)를 사용하는 곳들이 생각보다 많다는 것을 알게 되었습니다. 특히 제가 지원하고 싶은 회사에서도 TCA를 사용하고 있었습니다. 단순히 이력서에 한 줄 추가하기 위한 공부가 아니라, 실제로 해당 회사와 관련된 프로젝트를 TCA로 구현해보면서 이 기술을 제대로 이해하고 싶었습니다. 그래서 본격적으로 TCA를 학습하게 되었고, 이번 글에서는 그 과정에서 배운 내용들을 정리해보려 합니다. TCA란?TCA는 The Composable Architecture의 줄임말로, Point-Free에서 일관성 있고 이해하기 쉬운 방식으로 애플리케이션을 구축하기 위해 제작한 "..
[SwiftUI] NavigationLink VS NavigationStack
·
Apple/SwiftUI
안녕하세요! 피피아노입니다 🎵 SwiftUI로 앱을 개발하다 보면 화면 전환(Navigation)을 구현해야 하는 순간이 반드시 있습니다. 이때 가장 많이 접하게 되는 2가지 개념이 NavigationLink와 NavigationStack입니다. 둘 다 화면 전환을 할 때 쓰이는 것까지는 알겠는데, 정확히 뭐가 어떻게 다르고 언제 뭘 써야 하는지 헷갈리기도 하고 이번 기회에 확실하게 알고 넘어가기 위해서 글을 정리하게 됐습니다. NavigationLink: 화면 전환 트리거NavigationLink는 네비게이션 프레젠테이션을 제어하는 뷰입니다. 쉽게 말해서 그냥 사용자가 탭하면 다음화면으로 이동하게 하는 버튼입니다. 애플 공식 문서에 적혀있는 내용을 보면 아래처럼 나와 있습니다."People clic..
[Swift] SwiftData 모델 구조 변경 시 런타임 에러 해결하기
·
Apple/Swift
안녕하세요! 피피아노입니다 🎵 SwiftData를 사용해서 앱을 개발하다 보면 한 번쯤 이런 경험을 하게 됩니다. 모델 구조를 살짝 바꿨을 뿐인데 앱이 실행되자마자 바로 런타임 에러가 발생하는 경우 말이죠. 물론 개발 중이라면 앱을 삭제하고 다시 설치하면 문제없이 돌아가지만, 출시된 앱이라면 “앱을 지우고 다시 설치하세요”라고 안내할 수도 없습니다. 그리고 무엇보다 매번 삭제하면서 앱을 빌드하고 테스트하기가 귀찮습니다... 그렇다면 이 문제는 왜 발생하고, 어떻게 해결해야 할까요? 원인 - SwiftData의 내부 구조SwiftData는 내부적으로 SQLite 기반의 데이터베이스를 사용합니다.@Model로 정의한 구조체는 단순한 Swift 타입이 아니라, SwiftData가 해당 구조를 읽어서 데이터베..
[visionOS] 공간 컴퓨팅을 위한 ARKit 알아보기
·
Apple/visionOS
안녕하세요! 피피아노입니다 🎵 이번 포스팅에서는 WWDC23 세션 중 하나인 공간 컴퓨팅을 위한 ARKit 세션을 정리해보려고 합니다. 자세한 내용은 아래 링크를 참고하시면 좋을 것 같습니다.https://developer.apple.com/kr/videos/play/wwdc2023/10082 공간 컴퓨팅을 위한 ARKit 알아보기 - WWDC23 - 비디오 - Apple DeveloperARKit의 추적과 씬 이해 기능을 사용해 몰입형 앱과 게임에 완전히 새로운 세계를 개발할 방법을 알아보세요. visionOS와 ARKit이 만나 어떤 식으로 사람의 주변 환경을 이해하는 앱을 만들 수 있게developer.apple.com그럼 바로 시작하겠습니다! 아키텍처의 변화새로운 설계 철학기존 ARKit가 앱 ..