iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제96호 2024년 2월 11일
까치까치 설날이 지나고 새뱃돈처럼 풍성한 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다. 
지난 주에 비전 프로 구매는 성공했지만, 미국에서 발송에 실패해서 스키 고글 🥽을 찾아보고 있습니다. 배대지 짤리지 않으려고 지인에게 보냈다가 몇 가지를 알게 됐습니다. 미국에서는 제품 금액이 $2500 넘는 경우 원산지 증명과 함께 수출 신고를 해야하고, 전자 제품은 EEI 라는 품목 등록을 해야한다고 합니다. 지인이 해당 서류를 준비하긴 어려워서 결국 포기했습니다 😭 비전 프로 특집은 다음 기회로 미뤄야겠습니다
매월 둘째, 넷째주 일요일에 뉴스레터를 발행하고 있습니다. 
누구나 함께하는 뉴스레터 저장소 👉 만약 링크가 깨지는 경우는 저장소 이슈에서 확인하실 수 있습니다.
메일링 리스트 가입은 >가입하기 링크< 주변에 소개해주세요 🤩
주제/분류별 소식들
국/해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다.
# 애플

> 애플 걱정은 할 필요가 없는 것 같네요 😎 Apple, 1분기 실적 발표 - Apple (KR)

# 하드웨어

> 지난 소식에 이어서 M2 Max GPU와 Nvidia V100 큰 모델과 에너지 효율성에 대한 비교입니다. 성능은 V100이 대부분 좋지만, 에너지 효율성을 고려하면 2~3배 M2 Max가 효율적이라고 하네요. 개인이 쓴다면 괜찮은 선택지가 아닐까요 Apple M2 Max GPU vs Nvidia V100 (Part 2): Big Models and Energy Efficiency | by Fabrice Daniel

> 애플 비전 프로가 나오고 나서도 여전히 우려를 나타내는 글들이 많습니다. 비전프로가 왜 리스크가 높은가 설명합니다. 배터리도 오래 안가는 1세대 제품이 불편하고 앱도 부족한 데 큰 회사들이 아직 출시를 안하기 때문이라고 말합니다 Apple Vision Pro is a high-risk product for Apple | by Tobias Hedtke

> 애플 팬보이임에도 불구하고 왜 비전 프로가 실패할 수 밖에 없는지 설명합니다. 현재 시점에서 공간 컴퓨팅이 전통적인 컴퓨팅 환경을 대체할 것인가라면 당장은 아닐 것 같죠. 그럼에도 당연히 더 작고 가볍고 싼 제품이 나오려면 시간이 걸리겠죠 Why the Apple Vision Pro is Destined to Fail | by The Useful Tech

> 좀 다른 관점의 글로 애플 워치가 아이폰 연결 족쇄에서 벗어나서 독립적으로 활용할 가능성이 높아진다면 진정한 비밀 병기라고 주장합니다 Why the Apple Watch Is Apple’s Secret Weapon | by Mark Ellis


# 일반

> 💎 제가 도스박스에서 예전 프로그래밍 환경을 보고 추억에 젖었다고 하면 욕먹을 것 같지만 Modem 설정이나 AT 명령은 흔히 보지 못하셨을 것 같아서 가져와 봤습니다. 믿기 어렵겠지만 인터넷이 아니라 전화를 걸어서 통신을 했다구요! Re-enacting the dial-up connection with MS-DOS | Medium

> 💎 최근 WWDC 영상과 내용을 화면 캡처한 자료 함께 정리한 웹사이트네요. 영어 문서지만 꽤 상세하게 정리해서 좋습니다 Detailed summaries - Orange digital accessibility guidelines

> 매킨토시 40주년을 맞아 추억을 소환하는 글입니다. 이제는 매킨토시가 애플의 매출에서 차지하는 비중이 많이 낮아졌지만 애플 실리콘 출시 이후에 더 발전하고 있긴 하죠. 40 Years of Macintosh. A Love Affair | by Bill Petro

> 이번 호는 DMA 관련 글이 많네요. 앱 스토어 외에 몇 가지 방식으로 다운로드 하는 경우에 대한 Core Technology Fee 핵심 기술료라고 부르는 방식을 제시했습니다. 참고로 애플 앱 스토어 수익에서 EU 매출은 7% 정도 차지하고, DMA로 인해 손해는 1% 이하가 될 것 같다고 합니다 Apple Has Solved Piracy | by Andrew Zuo

> DMA에 대한 또 다른 글인데, 앱 스토어 이외 다른 시장에서 판매할 수 있다는 점을 강조합니다. 핵심 기술료 방식이 과연 다른 나라에도 영향을 미치게 될까요? Apple’s 1st BIG changes to the App Store and more | by David Lewis

> 2007-2023년까지 애플 수익 구조를 보여줍니다. 여전히 아이폰이 압도적이긴 한데, 악세서리와 서비스 매출이 엄청 커졌네요. 아이폰 매출이 하향세로 접어든다고 가정했을 때 앞으로 어떤 변화가 생길까요 Charted: Apple's Product Revenue (2007-2023) - Voronoi

> 프로그래밍을 배우는 방법은 참 다양한 것 같은데요. 요즘은 대학 입시와 사교육 시장처럼 치열해진 것만 같아서 이런 조언들이 현실과 조금 동떨어진 것 같네요 How to learn programming from scratch? | by Tom Smykowski

> 인디 앱의 가격에 대한 고민을 쓴 글입니다. 누군가에게 너무 비싸고, 누군가에게 적당한 가격이지만 리뷰를 보다보면 가슴 아픈게 사실이죠. Pricing Indie Apps: The Perks of a Wallflower Rule | Swiftjective-C

> 앱 개발 환경을 바꾸는 건 쉬운 일이 아니죠. 중간 정도 규모의 개발팀이 새로운 방식으로 도전하기 위해서 SPM, Tuist, Bazel로 넘어가는 과정을 담은 시리즈 중에 1편입니다. 앞으로 글이 기대되네요 Scaling iOS at Bumble: Part 1/3 — The Challenges | by Jonathan Crooke

> 지난 호에도 Freefrom 소개 글이 하나 있었는 데, 이번 호에도 하나 있네요. 좀 더 구체적으로 사용성을 소개하고 있습니다 The Freeform App is My Productivity Guilty Pleasure | by Will J Murphy

> DMA와 관련해서 게임 업계에도 영향을 줄 것이라고 전망합니다. 앞으로 어떻게 바뀔까요 What Apple’s Recent App Store Policy Changes Mean for the Gaming Industry | by Richard Yao

> 재미없는 주제지만 sh과 bash이 어떻게 무엇이 다른지 설명합니다. 이미 macOS는 zsh이 기본 쉘로 바뀌었지만 bash의 영향력은 남아있는 느낌이죠 What’s the Difference Between sh and Bash? | by Shalin Patel

> Apple’s iOS 17 | by Jason Benskin


# 스위프트

> 이 분은 늘 간결하게 딱 하나씩 짚어주는 게 매력이네요. 비동기 작업 완료 후 hanlder를 호출할 때 Result<>를 안전하게 넘기는 방식을 설명합니다. How to make a completionHandler much safer — Swift with Vincent

> 제 책 <코코아 인터널스>가 생각나는 글이네요 ㅎㅎ 메소드 디스패치 분류와 동작 방식을 설명합니다 The Swift Method Dispatch Deep Dive | by Jacob Bartlett

# 뷰 프로그래밍 : SwiftUI

> 간단하게 트리 형태 뷰를 만드는 과정입니다. 그리고보니 공식적인 TreeView 가 없긴하네요 Building a Dynamic TreeView in SwiftUI | by Emin Emini

> 자주 쓰는 건 아니지만 라이프사이클 관점이나 포커스 정보를 다루는 Property Wrapper를 설명합니다 Exploring Property Wrappers in SwiftUI | ITNEXT

> 애니메이션 코드는 그냥 로띠가 다 해주면 행복할 것 같습니다 Lottie magic in SwiftUI | by Mobile

> Task modifier로 비동기 작업을 다루는 방법들을 소개합니다. Task와 taskOnReceive() 활용하는 게 중요한 포인트죠 Mastering task modifier in SwiftUI | by Sarathi Kannan

> iOS 17부터 지원하는 navigationDestination()을 하위 버전에서 비슷하게 동작하도록 만드는 과정을 설명합니다 Recreating Navigation Destination (item:destination:) For iOS 16 | by Michael Long

> SDWebImage를 SwiftUI 에서도 잘 쓰나보군요! 10년전과 위상(?)이 조금 달라진 것 같네요. 저는 WebImage와 modifier를 쓰는 게 어색해보이긴 합니다 Revolutionize Your SwiftUI Image Loading with SDWebImage | by Arthur Zavolovych

> Custom Alert in SwiftUI | by Marwa Diab

# 뷰 프로그래밍 : UIKit

> 간단한 팁이지만 UIImage로 로딩할 때 큰 이미지가 오래걸리면 prepareForDisplay() 비동기로 불러오는 방식을 설명합니다 Bad practice: loading a large image on the main thread — Swift with Vincent

> Creating a Collapsible UITableViewCell in Swift | by Steven Curtis

# 프레임워크

> 단축어 앱을 위해서 Intents를 구현하는 방식을 설명합니다. 단축어 활용하는 게 엄청 쓸모가 많은데 정작 앱에 추가하는 건 놓치기 되는 것 같습니다 Getting Started With App Intents

> 패스키 쓰기 시작하셨나요? 저는 2FA 방식 중에서 일부는 패스키로 사용하기 시작했는 데 꽤 편하더군요. 앱에서 패스키를 등록하고 관리하는 방법에 대해 설명합니다 Passkey — Passwordless solution for authentication | by Tim Wang

# 맥 개발/AppKit

> 배지를 이용해서 메뉴에 Pro 버전을 명시하는 방식입니다 Furnace Creek Software | Blog

# 비전 프로 / visionOS

> visionOS 앱을 시뮬레이터에서 비주얼 디버깅하면 3차원 형태로 더 많은 정보들을 볼 수 있다고 하네요. 이거말고 비전 프로로 디버깅하고 싶네요 Debug for visionOS using Xcode simulator visualizations

> SwiftUI가 멀티 플랫폼 개발에 맞춰져 있지만 visionOS에서는 3D 모델이나 입체 볼륨, 집중 공간에 대한 새로운 개념이 필요하다고 말합니다 (어서 개발해보고 싶다구요) Introducing SwiftUI on visionOS | Swift with Majid

> 비전 프로에서 당장 사용해볼 만한 앱들을 추천해줍니다 (왜 갑자기 배가 아프죠) Launch Apps - Donovan's Vision Blog

> ShaderGraph 방식으로 애니메이션을 구현하는 과정을 설명합니다. 3차원 환경에서 애니메이션을 또 다른 학습꺼리와 새로운 감각이 필요한 것 같네요 ShaderGraph in visionOS | by Yasuhito Nagatomo

> 하드웨어로 분류할까 하다가 전반적인 이야기가 있어서 여기로 분류했습니다. 아직 할 수 있는 게 많지 않지만 기대가 많이 되네요 The Apple Vision Pro Is a Magical Device That is Missing an Ecosystem | by Sanjay Singhal

# 접근성

> 💎 Xcode 15에 앱 테스트를 위해 추가된 performAccessibilityAudit() 방식으로 자동으로 접근성 감사를 실행할 수 있다고 합니다 (당연히 접근성 구현은 해놓아야 하겠죠) 그리고 나면 접근성 에러 리포트가 생성됩니다 Automating SwiftUI Accessibility Audits in Xcode 15 - Holy Swift

# 개발 환경

> 💎 Xcode에서 지원하지 않는 부분을 도와주는 도구들을 소개합니다. 대부분 오픈소스 무료 도구라서 흥미롭네요 Xcode’s Missing Piece: Seamless Tools to Boost Productivity | by Abdul Karim

> RocketSim 앱을 개발하는 SwiftLee는 시뮬레이터 관련 글도 자주 쓰는 편입니다. 앱 스토어용으로 미리보기 영상을 촬영하는 팁을 설명합니다 App Preview Videos Capturing using the Xcode simulator - SwiftLee

> 코어 데이터 클라우드킷 로깅을 Xcode 콘솔에서 켜거나 끄는 방법을 설명합니다. 이제 로그 스트림으로 콘솔 로그를 다룰 수 있다고 합니다 Disabling Core Data CloudKit Logging

> 젠킨스 Xcode 플러그인이 꽤 오래전부터 있었지만 요즘은 연동할 수 있는 게 더 간편해진 것 같네요 How to Use Jenkins to Build Your iOS App | by Kanagasabapathy Rajkumar

> Airbnb iOS 개발팀이 (메타에서 만든) Buck에서 (구글에서 만든) Bazel로 빌드 시스템 마이그레이션한 과정을 설명하는 자료입니다. 리모트 캐시나 내부 인프라를 공유할 수 있어서 빌드 시간이 개선됐다고 하네요. Migrating Our iOS Build System from Buck to Bazel | by Qing Yang

> 코코아팟에서 스위프트 매크로를 지원하도록 배포하는 방식입니다. 이게 필요한 팀도 있을 수 있을 것 같네요. 다만 이 정도면 SPM을 쓰는 게 나을 것 같기도 하구요 Support Swift macros with CocoaPods | by Soumya Mahunt

> Xcode 테마를 얼마나 바꿔보셨나요? 기본 색상만으로 쓰시는 분들도 많을 텐데요, 다양하게 바꿀 수 있는 방법을 소개합니다. 개인적으로 종류별 또는 타입별로 배경색 지정 좀 지원해주면 좋겠어요 ㅜㅜ Xcode Themes that are Changing the Game! | by Dharam Dhurandhar

# 테스트

> 특별한 비법이 있는 것은 아니지만 크래시를 줄이기 위한 실수들을 줄일 필요는 있죠. 강제 언래핑, 배열 인덱스 오류, 에러 핸들링 오류, lazy 변수와 동시성, 인스턴스 소멸 시점 참조 등 몇 가지 포인트를 짚어줍니다 Common programming patterns to avoid crashes in iOS applications. | by Jatin Mishra

# 도구/오픈소스 

> 스위프트 패키지 인덱스 서비스에서 커뮤니티 추천을 받아서 팟캐스트에 패키지들을 추천하고 있습니다. 자주쓰는 패키지들을 제작자 이외에 다른 사람이 추천하는 방식인데요, 공식 포럼에서 추천을 받고 있습니다 Swift Package Indexing | 40: This downtime was a joint effort

> OpenAI 음성 인식 모델 Whisper를 CoreML에서 사용할 수 있도록 최적화해서 변환하고 API를 사용할 수 있도록 SPM 패키지로 배포하는 오픈소스입니다. 참고로 위스퍼 API 한국어도 잘 되는 편입니다 argmaxinc/WhisperKit: Swift native on-device speech recognition with Whisper for iOS and macOS

# 디자인 

> 💎 여러분들은 체크 박스와 라디오 버튼의 모양을 기억하고 계신가요. 20여년전 아쿠아 인터페이스부터 윈도우즈, 터보 파스칼, 노턴 커맨더까지 체크 박스와 라디오 버튼의 고유한 모양을 나열합니다. 그러면서 iOS와 visionOS에서 체크박스가 동그란 모양이 되어 가는 것이 많이 아쉽다고 말합니다 In Loving Memory of Square Checkbox @ tonsky.me

> 디자이너들 시안을 보면 아이디어가 참 샘솟는 것 같습니다. 물론 구현하려고 한다면 머리가 아플 것 같지만요 Experimental and Flat UI Design Ideas | TMDesign

> TextField나 입력창에 흐릿한 placeholder가 얼마나 불편한가 지적하는 글입니다. UX는 늘 다시 생각해볼 여지가 있는 것 같네요 Why you should stop using placeholders in text boxes | by Daniel Berryhill

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