iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제95호 2024년 1월 28일
기다리시던 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다. 지난주에 미국 지역뿐이지만 첫 비전 프로 예약 구매가 시작됐습니다. 전세계 많은 분들이 다양한 방식으로 예약 구매를 하셨더라구요. 확실히 기대와 우려가 함께 공존하는 상태인 것 같습니다. 비전 프로 앱 스토어에는 기존 iOS나 iPad 앱을 올릴 수 있고, 새로운 앱도 올릴 수 있다고 합니다만 초반에는 확실히 앱이 부족할 것으로 예상됩니다. 무엇보다 다른 기기보다 시뮬레이터와 다른 사용성이 큰 차이점일 것 같은데요, 앞으로 어떤 킬러 앱이 등장할 지 기대됩니다. 다음 호에는 비전 프로 이야기를 좀 더 중점적으로 다뤄볼 수 있을 것 같네요!
매월 둘째, 넷째주 일요일에 뉴스레터를 발행하고 있습니다. 
누구나 함께하는 뉴스레터 저장소 👉 만약 링크가 깨지는 경우는 저장소 이슈에서 확인하실 수 있습니다.
메일링 리스트 가입은 >가입하기 링크< 주변에 소개해주세요 🤩

주제/분류별 소식들
국/해외 소식들을 비슷한 주제들을 카테고리별로 묶어서 정리합니다
# 애플

> 이제 여러 스트리밍 게임, 미니 앱, 미니 게임 등 앱 내에서 카타로그를 포함하는 하나의 포괄적인 앱을 만들 수 있다고 합니다. 3월부터는 앱 리포트도 좀 더 세분화되고 앱 내 로그인 옵션도 다른 로그인 지침이 추가된다고 합니다 Apple introduces new options worldwide for streaming game services and apps - Apple Developer

> EU쪽 DMA 법 규제로 인해서 iOS, 사파리, 앱 스토어에 변경 사항이 제법있습니다. 3월 이후 적용된다고 하구요 참고로 해당 문서는 아직 한국어 번역은 없습니다. Update on apps distributed in the European Union - Support - Apple Developer

# 하드웨어

> 새로나온 M3 장비들을 포함해서 기계학습 관련 도구나 모델로 벤치마크한 결과입니다. 여전히 최고 성능은 NVIDIA TITAN RTX를 가진 전용장비지만, 다른 MLX를 사용하고 다른 용도를 고려한다면 애플 실리콘 장비도 타협할 만하다고 합니다 Apple M3 Machine Learning Speed Test | by Daniel Bourke

> 비전 프로가 발표되고 사전 예약이 시작했으니 곧 만나보기를 기대하는 글들이 나오고 있습니다. 애플 스토어 직원들은 비전 프로 매장 체험을 위해서 특별 교육 프로그램을 들었다고 합니다. 의외로 많이 팔려서 앞으로 성장이 기대됩니다 Apple Vision Pro — a 1st for us all | by David Lewis

> 아이폰 14 Pro 부터 ProRes 방식으로 촬영하면 라이트닝 케이블로 옮기기 불편했지만, 15 Pro 부터는 USB-C 방식이라서 외장 하드를 연결해서 촬영하기 너무 편하다는 얘기를 많이 듣습니다. 앞으로 USB-C로 주변기기 확장성으로 활용할 곳이 많아질 것 같네요 iPhone 15 Pro Max — a real camera killer | by David Lewis

> 영국에 있는 분들도 비전 프로에 대해서 투정어린 시선이 있네요 I Have a BIG Problem With Vision Pro | by Mark Ellis

# 일반

> 맥을 즐겨 사용하지만 납득하기 어렵거나 불편한 사항을 정리한 글입니다. 동일하게 동작하지 않아서 당황스러운 그래서 꽤 공감가는 내용들이 많이 있습니다 12 Things About macOS That I Love to Hate | by The Useful Tech

> 단축어에 무언가 만들어 넣기 레시피 같은게 종종 공유되는 데, 이번에도 그런 단축어 몇 개를 소개합니다. 맥에서는 단축어 명령을 바로 실행할 수 있어서 자동화가 편하더라구요! 4 Easy-to-Build and Extremely Useful iOS Shortcuts | by Tobias Hedtke

> 맥용 앱 중에서 소소하게 쓸만한 앱 5개를 소개합니다. 맨 아래 BetterDisplay는 이번호 오픈소스 프로젝트로도 소개하고 있습니다 5 Little macOS Apps that Make a Big Difference in 2024 | by a place of mind

> 1월 24일이 매킨토시가 나온지 40주년이었습니다. 유명한 리사와 매킨토시 일화처럼 40년 전에 맥은 잡스를 쫓겨나게 만든 제품이었습니다. 40년이 지나고 맥은 사라지지 않고 사랑은 더 커진 것 같네요 Mac at 40 — is the king dead or as strong as ever? | by David Lewis

> 애플 팬 문화 - 맥 컬트에 대해 이야기합니다. 제목은 맥 컬트지만 iOS를 중심으로 앱 스토어 독점에 동의하는 것이 애플 브랜드에 충성하는 종교적인 신념에 기반한 것처럼 정의합니다. 여러 사례 기사들을 언급하면서 프라이버시와 보안 명분 아래 동조한다고 말합니다. 모든 분야와 문화가 그렇지 않던가요? ㅎㅎ The Cult of Mac | by Cory Doctorow

> 애플 페이가 단지 간편 결제가 아니라는 이야기를 합니다. 특히 결제 과정과 분실시 안전성과 보안성을 설명하는 부분이 인상적입니다. The Genius of Apple Pay. Transforming Mobile Payments | by Jason Benskin

> 전혀 다른 영역인데 깃헙에서 Python 프로젝트 중에서 핫한 프로젝트라고 합니다. 그냥 호기심으로 볼만 합니다 Top 30 GitHub Python Projects At The Beginning Of 2024 | by Christopher Tao

> 애플 시스템 서비스 중에서 일부를 끄면 베터리를 더 오래 쓸 수 있다는 글입니다. 그렇지만 행간을 잘 읽어야 하는 것은 그것을 끄면 뭐가 안되는지, 무엇을 조심해야 하는지 언급이 부족합니다 Turn Off These 14 iOS System Services Right Now For A Bigger Battery | by Nikhil Vemu

> 이걸 넣을까 말까 계속 고민했는데 관심있는 분들만 읽어보시라고 넣었습니다 Which is Cheaper: Serverless or Servers? | by Mikael Vesavuori

> Freeform 앱을 사람들이 무시하거나 잘 모르고 있다는 취지입니다. 저도 써보면 아이패드와 펜슬을 쓰는 환경에서는 정말 좋던데, 아이폰이나 맥에서는 제약이 많아서 불편하더군요 Why Freeform Is the Most Misunderstood App From Apple | by The Useful Tech


# 스위프트

> 💎 스위프트 5.9부터 접근 제어자가 기존 open, public, internal, private, fileprivate 5개에서 package 가 추가되었습니다. 패키지 내부 모듈에서만 접근 가능하도록 범위를 제한하는 module 단위보다 더 큰 패키지 단위가 생긴 셈입니다. A new access modifier in Swift: package

> 💎 스위프트 포럼에 올라온 글들 중에서 하나를 소개합니다. 시작은 @Observable을 붙이면 배열 복잡도가 달라져서 느려지냐? 글이었는데 willSet, didSet 과 배열 복사 등 CoW 까지 다양한 경우를 비교하게 되는 글타래입니다. SwiftUI 뿐만 아니라 모델 혹은 배열에 값을 넣어놓고 변화를 감지하는 것을 자주 쓰게 되는데요, 그럴 때 고려해 볼만한 시사점이 있습니다 @Observable pessimizes arrays - Using Swift - Swift Forums

> 글로벌 변수를 동시에 다뤄야 할 때는 데이터 레이싱을 예방해야 하겠죠. Concurrency-safe 동시 접근시 안전한 글로벌 변수를 처리하는 방식을 설명합니다. 특히 Swift 6부터 좀 더 엄격한 기준을 적용할 수 있으니 고려사항을 이야기합니다 Concurrency-safe global variables to prevent data races - SwiftLee

> Case insensitive string comparison in Swift


# 뷰 프로그래밍 : SwiftUI

> 💎 흔한 모델을 만드는 예시 코드에서 끝은 아니고, Observable을 사용하면서 프로토콜로 추상화해서 sync 방식과 async 방식까지 지원하는 방법을 설명합니다. SwiftUI View Models: A Polymorphic Approach | by Luis Recuenco

> 💎 스크롤뷰 바운스 반동에 반응하는 UI를 종종 만드는 데 특히 SwiftUI에서 뷰 끝까지 도달했을 때 반동을 적용하는 팁을 소개합니다 ScrollView Bounce Behavior configuration in SwiftUI

> 💎 (샘플 코드 자체가) 제 마음에 쏙 드는 것은 아니지만 버튼이 비동기적으로 동작한다면 어떻게 구현할 수 있는지 설명하는 글입니다. 저라면 동작 일부를 하위 타입으로 분리했을 것 같습니다 Asynchronous SwiftUI buttons — Dean’s blog

> 앱 실행 상태를 관리하는 방식을 소개합니다. 어떻게 보면 애플 프레임워크에서 제공해줘도 좋을 것 같은데 말이죠 An Approach to Handling App Launch States in SwiftUI

> 작년에 GPT로 코딩하는 이런 글이 많았는 데, GPT-4 Vision API를 사용하는 예제라서 골라봤습니다. 중간에 코드 생성을 위한 프롬프트가 나와서 참고할 만 합니다 Leveraging OpenAI GPT-4 Vision API for SwiftUI App Generation | by Jake Lin

> 몇 년째 계속해서 반복해서 나오는 장단점 비교글입니다. 물론 대신 선택해주지는 않죠 The Top 5 Pros and Cons of SwiftUI: An In-Depth Exploration | by Rashad Shirizada

> 이렇게 세밀하게 alignment 정렬시켜야 하는 경우에는 SwiftUI 장점이 퇴색되는 것 같은 느낌마저 들 때가 있습니다 Unfuddling the SwiftUI Alignment Guide API | Ben Scheirman

> Remove background from image in SwiftUI

> SwiftUI main thread hang detector – Wade Tregaskis

# 뷰 프로그래밍 : UIKit

> 💎 CPU를 소모하게 되는 오프스크린 렌더링 성능에 대한 이야기입니다. 항상 나쁘다고 할 수는 없지만 인지하고 주의할 필요는 있는 요소입니다 Offscreen Rendering in iOS. Performance is important! | by Steven Curtis

> 작은 스타트업에 iOS 개발자로 들어가보니 AppDelegate에 1,000줄 넘는 코드가 있고 심지어 UI도 다루는 상황이다. 그래서 앞으로 그걸 SwiftUI로 개선하려고 한다는 글입니다. 파트1이라 세부적인 내용은 없지만 동병상련(?)이 느껴지는 글이었습니다 Refactoring UIKit Storyboards monolith to SwiftUI: Part 1 | by Ignas Pileckas

# 프레임워크

> 💎 계속해서 SwiftData 시리즈를 작성해고 계시네요. Relationship 설정에서 기본값 설정이 아직 안되고, 역관계를 설정하는 데 모호한 점이 있다고 합니다. 배열을 사용해서 대량의 데이터를 다룰 때 Core Data보다 성능이 느려지는 지점도 설명합니다 Relationships in SwiftData: Changes and Considerations | ITNEXT

> 위젯 개발하면서 네트워크 요청이 캐싱되는 상황을 최적화한 사례를 잘 정리해주셨네요. 아마 현대차 iOS 개발자 분이신데 글은 영어 글입니다 :) Optimizing iOS Widget network calls with temporary caching | by Jaeho Yoo

# VisionOS

> 💎 다음주부터 비전 프로 첫 물량들이 배송될 텐데 아직까지는 초기 앱이 많지 않을 것 같다. 그리고 그마저도 앱들이 시뮬레이터에서만 작업하기 때문에 지루할 정도로 비슷하고 특색이 없다는 내용입니다. Vision Pro Apps look boring • Buttondown

# 개발 환경

> 💎 릴리스 기차를 활용해서 안정적인 릴리스 프로세스를 다루는 과정을 설명합니다. 격주로 릴리스를 하기 위해서 회귀 테스트와 QA 일정 등을 조정한 부분이 인상적이었습니다 Release Train in mobile development | by Max Kach

> 모바일 환경을 위한 DevOps 그 중에서도 iOS는 맥에서만 동작해야 하기 때문에 따로 관리하는 경우가 꽤 많습니다. 자신의 경험을 바탕으로 일반적인 깃헙 액션과 모바일 특화된 Appcircle을 비교한 글입니다. Mobile DevOps for Enterprise that Just Works | by Jacob Bartlett

> 새로운 기능이나 내용을 것을 정리한 것은 아니고, Xcode 빌드 시스템 동작 흐름을 요소별로 잘 설명해준 것 같습니다. 그림과 글씨는 좀 마음에 안들지만요 :) Xcode Build System: Everything Everywhere All at Once | by Yeskendir Salgara

> Debugging SwiftUI View | by Sarathi Kannan

> Developing with Swift in Visual Studio Code - Swift on server

# 도구/오픈소스 

> 재밌는 오픈소스라서 가져와 봤습니다. 터치하거나 제스처에 손 모양 그림자를 그려주는 오픈소스입니다 ㅎㅎ adamwulf/HandShadows: Add shadows to your gestures for better demo videos of your app

> 애플 기본 디스플레이 설정에서 제공해 주지 않는 세밀한 옵션을 지정할 수 있는 BetterDisplay 오픈소스입니다. 프로 버전은 유료로 판매하고 있긴 합니다 waydabber/BetterDisplay | GitHub


# 디자인 

> 💎 이번 호에는 UI/UIX 글이 꽤 있네요. 그 중에서도 이 글은 iOS 7 이후 평평해진 Flat Design에서 특히 버튼이 버튼답지 못하다는 것을 지적합니다. 집적적으로 조작해야 하는 버튼인데 인지하기 어렵다는 점을 강조하고 있습니다. 올드한(?) 저는 어느정도는 동의하는 편입니다 In Praise of Buttons – Part One

> 더 멋진 앱 아이콘을 만들기 위한 과정을 스케치부터 발전 과정을 설명합니다. 개발자가 직접 고민하지는 않겠지만 흥미로운 글이었습니다 Crafting better App Icons

> Adaptive and Fresh UX Design Ideas | TMDesign

> Captivating and Innovative Mobile UI/UX Designs | TMDesign

> Edgy and Intentional Mobile UX Designs | TMDesign

> Expressive and Minimalistic Mobile UI Design Ideas | TMDesign

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