iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제83호 2023년 7월 23일
비도 많이 오고 더운 날씨가 이어지고 있는 한 여름밤을 채워줄 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다. 평소보다 관련 소식들이 살짝 줄어든 느낌이긴 합니다. 슬슬 비전 프로용 앱에 대한 사례가 나오기 시작하네요. 다음호부터는 기술 분류가 안되고 플랫폼에만 속하는 경우를 별도로 분류해야겠습니다. 
매월 둘째, 넷째주 일요일에 뉴스레터를 발행하고 있습니다. 
누구나 함께하는 뉴스레터 저장소 👉 만약 링크가 깨지는 경우는 저장소 이슈에서 확인하실 수 있습니다.
메일링 리스트 가입은 >가입하기 링크< 주변에 소개해주세요 🤩
지난 7월 18일 코엑스 그랜드 볼룸에서 KWDC23 행사가 있었습니다. 애플이 직접 참여한 행사는 아니었지만 애플 생태계에 있는 개발자, PM과 디자이너, 리셀러와 관련 기업들까지 한 자리에 1400명 정도가 모였었습니다. 이 정도 규모라면 앞으로는 애플도 좀 더 관심을 가져주지 않을까 기대해봅니다 😎
주제/분류별 소식들
국/해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다.
# 애플

> 개발 관련 공식 뉴스가 거의 없습니다. iOS 17을 비롯해서 퍼블릭 베타가 곧 시작될 것 같기도 합니다.

# 하드웨어

> 아이폰 프로 모션은 카메라 촬영할 때만 120Hz로 동작하고, 나머지는 그렇지 않고 심지어 AOD 상태일 때는 1Hz 동작하기도 하죠 The iPhone Pro’s 120Hz ProMotion Is FAKE! | by Andrew Zuo


# 일반

> 💎 😳 이거 너무 철학적인(?) 질문 아닌가요. 비전 프로는 무엇을 바꿀 수 있을까요 5 Existential Questions for the Vision Pro (to save humanity) | by Noah Miller

> iOS 17 iMessage에 들어가는 기능들에 대한 소개입니다. 지금 이렇게 보더라도 막상 사용하지 않을 꺼 같기도 하고 그러네요. 잘 써먹어야 할텐데 자신이 없습니다 10 New iMessage Features That Would Finally Get You Excited For iOS 17 | by The Useful Tech

> 예전 자료지만 여전히 유효하고, 쓸모있는 참고 자료들이 있어서 소개합니다 Amazing iOS Materials. Websites and Blogs | by XCoder

> iOS 개발자를 위한 플러터 가이드라서 직접 사용하지 않아도 비교해볼 만 합니다 Beginner's guide on Flutter for iOS developers

> 개인적으로 앱을 설계하고 그림으로 그릴 때 UML 자신이 없으면 적어도 C4 모델에서 Context와 Component라도 그려보라고 추천합니다. C4 다이어그램을 그리기 좋은 도구라고 해서 소개해봅니다 Top 9 tools for C4 model diagrams | by IcePanel

> 언리얼 엔진이 5.2부터 이제 애플 실리콘을 네이티브로 지원해서 개발 환경이 넓어졌다고 하네요 (물론 5월 소식입니다) Unreal Engine on M2 Pro | Medium

> 왜 스크럼은 실패하는가. 애자일이라는 게 그냥 문자 그대로, 방법을 그냥 따라한다고 되는 게 아니더라. 애자일다운 방법이 뭐냐. 근본적인 질문을 던지는 글이라서 좋네요. 솔직히 좀 길어서 읽기는 어려웠습니다 🫠 Why Scrum Fails | Better Programming


# 스위프트

> 💎 어후 숫자와 문자로 되서 불편했던 HTTP 프로토콜의 상수들이 소스 패키지로 만들어졌네요 Swift.org - Introducing Swift HTTP Types

> 💎 디자인 패턴이나 클린 코드 이전에 '관심사의 분리' 이것만 잘 지켜보자는 데 동의합니다. Separation of Concerns in Swift. Keep ’em separated | by Steven Curtis

> 💎 스위프트 컴파일러가 버전을 안전하게 관리한다는 것 때문에 새 버전으로 빌드한 라이브러리를 하위 버전에서 사용할 수 없는 경우가 있었는데 그런 경우에 유용할 것 같습니다 @backDeployed to extend function availability to older OS releases

> 90년대 PC 서버가 많아지던 때에 듣던 루프 펼치기(Loop unrolling) 최적화 기법을 23년에 다시 볼 줄 몰랐네요. objective-c 시절로 치면 세번째 index 방식보다 두번째 forEach라는 방식이 가장 빨라야 하는데 이건 unrolling 이라기보다 그냥 절반 탐색 같은데 말이죠 Boost Your Swift Loop Performance By 87% | by Avi Tsadok

> ARC를 사용하지만 여전히 메모리에 사용하지 않는 인스턴스나 공간이 남는 누수 현상을 신경써야만 하죠. 다양한 경우가 있는데 몇 가지 팁을 소개해줍니다. Avoiding Memory Leaks in iOS | by Shubham

> 맥에서 화면 배치를 바꿀 때 사용하는 C 함수를 연동한 이야기입니다. Display reconfigurations on macOS | Nonstrict

> 타이머가 어떻게 구현하고 관리하느냐에 따라서 생각보다 다양한 상황에서 복잡한 문제를 만들어내기도 합니다. Simplifying Swift Timers: solving memory leaks & complexity once and for all | by Oleg Dreyman

> 애플도 소개한 이후로 다시 안쓰는 것 같기도 한데 오랜만에 POP 글이 보이네요. 프로토콜을 적극 활용하자는 측면에서 공감합니다만 가이드라인이나 베스트 프랙티스가 잘 공유되지 못하는 것 같아서 아쉽습니다 The Power of Protocol-Oriented Programming with Swift | Level Up Coding


# 설계 구조 : 패턴

> 파사드 패턴의 구현 방식에 대한 소개입니다만 복잡한 의존성을 가지는 구조를 단순화 시켜주는 용도지만, 메소드를 하나만 열어놓는다고 파사드가 되는 것은 아니라서 오해할 수 있는 글인 것 같습니다. 참고하세요 Facade Design Pattern in Swift for Beginners (with async/await) | by activesludge


# 뷰 프로그래밍 : SwiftUI

> 💎 (벌써 한 달이 지났지만) WWDC23 동안 SwiftUI 관련 질의응답을 모아놓은 글이네요. WWDC23 SwiftUI Q&A. Interesting SwiftUI Q&A during WWDC23 | by Khoa Pham

> 개인 피트니스 활동 대시보드 앱 Peak를 만들면서 후일담을 소개합니다 Building Peak

> 의존성을 주입하기 위해서 Environment 또는 EnvironmentObject를 활용하는 방식을 소개합니다. DI in SwiftUI | by Vitaly Batrakov

> 이런 자료가 더 많아져야 할텐데 SwiftUI는 여전히 바뀔만한 여지도 많고, 다른 것과 섞였을 때 사례들이 복잡해서 그런지 정리가 더 필요한 것 같습니다 Performance optimization with SwiftUI: Boost your performance | by Ali Erdem Kökcik

> 페이스타임을 따라 만드는 과정을 비교적 상세하게 설명해줍니다 Stream Video Calling: How To Build FaceTime Clone With SwiftUI | by Amos Gyamfi

> 비전 프로용 뮤직앱을 만들어보는 과정을 소개해주네요. 이렇게 따라 만드는 것도 필요하지만, 비전 프로에 적합한 UX가 무엇인가 고민이 더 되는 것 같습니다 Unleash Your Creativity: Building Your Own Music App with SwiftUI for VisionPro — Step by Step Guide! | by The Flutter Way

> Creating custom Link preview instead of LPLinkView with SwiftUI. | by Arseni

> Mastering ScrollView in SwiftUI. Transitions | Swift with Majid

> Property Wrappers Vs Data Access Layer | AzamSharp

> Set a Preview Shape for Views Presenting Context Menus | Swiftjective-C

> SwiftUI apps at scale. It’s been production-ready since 2020 | by Jacob Bartlett

> SwiftUI onChange Deprecation

> SwiftUI: Ready For Prime Time? | by Michael Long

# 프레임워크
다양한 프레임워크를 다루는 예제를 소개하는 글들입니다. 

> Combine 중에 Cancellable에 대한 꽤 상세한 설명입니다 Combine — Role of Cancellable Explained | by DevTechie

> 코어 데이터 구조에서 가장 자주 사용하게 되는 Fecth와 Predicate 관련 설명입니다 NSFetchRequest, NSPredicate and Stored Fetch Requests: Core Data Explained | by Steven Curtis

> print와 NSLog 이제 안 쓰셔도 되는거 아시죠? OSLog and Unified logging as recommended by Apple - SwiftLee

> 유니티에서 비전오에스용 베타 프로그램을 시작했네요. Unity Launches Beta Program for visionOS | Business Wire

> The Ultimate Guide to Building SwiftData Applications | by Mohammad Azam


# 접근성

> Accessibility Identifiers를 다루는 방법을 소개합니다. Xcode에 있는 인스펙터가 제한적이라 Appium Inspector로 할 수 있는 방법도 포함되어 있습니다 Composing Accessibility Identifiers for SwiftUI Components | by Kamil Wyszomierski

# 개발 환경

> SPM 내부 폴더에 어떻게 빌드하고 캐싱하는지 설명해줍니다 How to Use Swift Package Manager to Save Gigabytes of Network Traffic and Disk Space | by Geor Kasapidi

> SPM에 커스텀 폰트를 넣어서 로딩하는 방법입니다 Load custom fonts into your app using Swift Package Plugins

> 당장 쓸 일은 없을꺼 같은데 Makefile을 대체하는 (엄밀하게 대체라기 보다는 빌드보다 더 다양하게 사용할 수 있는 확장에 가깝겠네요) Taskfile을 소개합니다 Taskfile: a modern alternative to Makefile | by Giuseppe Santoro

> Xcode 15부터 저장하는 북마크는 어디에 저장될까요. 이것도 버전관리로 공유해야 하나 말아야 하나 고민이 됩니다 Where are Xcode bookmarks stored? · Jesse Squires

> SPM을 사용한다고 해서 모듈로 나눈 프레임워크를 빌드하고 배포하는 게 쉽지 않습니다. 특히 모듈과 패키지 의존성이 깊을수록 Xcode proejct 과 바이너리 프레임워크 생성하기까지 험난한 과정이 펼쳐집니다. 이건 애플이 해결해주면 좋을텐데 아직은 좀 정리가 덜 된 상황입니다 ㅜㅜ Why is it so damn difficult to create a binary framework for your Swift Package

# 테스트

> AsyncSequence 모킹하는 테스트 방식입니다 Mocking AsyncSequence in Unit Tests | by Max Chuquimia

# 도구/오픈소스 

> 대부분 알고 계시고 사용중일 것 같은 라이브러리들이네요 10 Essential iOS Development Libraries You Need to Know | by Rashad Shirizada

> 매크로 개발을 도와주는 툴킷 오픈소스 프로젝트를 소개하네요. 매크로 매우 좋은 도구일텐데 앞으로 엄청나게 남발(?)될까봐 살짝 두렵기도 합니다 ㅎㅎ Swift Macro Toolkit: Making macro development a breeze - Community Showcase - Swift Forums


# 디자인 

> 💎 오호 이렇게 실생활 사례와 인터액션을 비교해주는 자료는 처음보는 것 같네요 Invisible Details of Interaction Design

> 💎 날씨 앱을 비전프로용으로 바꿔보는 과정을 설명합니다. 이걸 보니 아이폰 앱에서 아이패드 앱으로 넘어갈 때 화면 크기 때문에 고민해야 한다던 얘기가 떠오르네요. 무한대에 가까운 공간에 과연 정보를 어떻게 배치하고 다룰 수 있을까요 Designing a Weather app for visionOS - David Smith, Independent iOS Developer

> 저는 이런 글이 너무 좋은 것 같은데요, 결과만 보여주지 않고 전체적인 변화 과정을 처음부터 보여주고 설명해주기 때문입니다. 위에 글과 같은 블로그인데 함께 보시면 좋겠네요. First Attempt at Designing for visionOS - David Smith, Independent iOS Developer

> App Development Inspiration 185 | Enterprise Company

📲회사에서 iOS 개발자들에게 홍보하고 싶은 내용이 있으신가요? 
news@letswift.kr 로 언제든지 문의해주세요. 
레츠스위프트 뉴스레터
http://letswift.kr
수신거부 Unsubscribe