iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제89호 2023년 10월 22일
말대신 살찌고 있는 그 느낌 가득한 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다. 분량이 아주 많지는 않고 다양한 이야기들이 포함된 10월 넷째주 소식들입니다. 

지난 10월 13일에 ST센터에서 진행된 레츠스위프트 2023 컨퍼런스는 550명 정도가 참여해주셔서 성황리에 마무리되었습니다. 이렇게까지 들어간다고? 계속 말씀하시면서도 끝까지 즐겁게 참여주시셨던 것 같습니다. 그만큼 iOS 개발자 커뮤니티도 다양하고 성숙한 것을 느낄 수 있었습니다. 이 날 저도 깊숙한 주제를 하나 발표했는 데 재미가 없는 것은 다 Xcode 탓입니다 😎 
매월 둘째, 넷째주 일요일에 뉴스레터를 발행하고 있습니다. 
누구나 함께하는 뉴스레터 저장소 👉 만약 링크가 깨지는 경우는 저장소 이슈에서 확인하실 수 있습니다.
메일링 리스트 가입은 >가입하기 링크< 주변에 소개해주세요 🤩
주제/분류별 소식들
국/해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다.
# 애플

> 💎 애플 개발자 포럼에서 거의 모든 대답을 해주는(?) 에스키모님이 개발자 계정 백업과 복구에 대한 내용을 업데이트했네요. The Care and Feeding of Developer ID | Apple Developer Forums

> Xcode 15.1 베타가 올라왔습니다. @IBDesignable 삭제된다는 게 눈에 띄네요 Xcode 15.1 Beta Release Notes | Apple Developer Documentation

# 하드웨어

> 이제 아이폰에서 USB-C 연결하고 확장이 가능해졌습니다. 허브는 기본이고, 외장하드나 키보드도 바로 연결이 가능해졌죠 5 Unique Ways to Fully Utilize USB-C on the iPhone 15 | by The Useful Tech

> 편리해진 부분도 있지만, 오히려 USB-C 관련 기기들이 너무 난립해서 약간 걱정스러운 부분이 있습니다. USB-C로 넘어갈 준비가 안된 분들도 꽤 많을테구요 ㅜㅜ The USB-C iPhone Backlash Is Coming | by Jonathan Kim

> 액션 버튼 쓰고 계신가요? 저는 아직 제대로 활용하지 못하는 것 같습니다. 자꾸만 캡처할 때 실수로 볼륨업 대신에 누르더라구요 ㅎㅎ The Action Button: Taking Back Your iPhone | by Warner Crocker


# 일반

> 무료도 있지만 대부분 유료 맥 앱을 소개해주고 있습니다. 저도 안 써본 앱이 많네요 12 macOS Apps To Thrust Your Productivity To Its Peaks | by Nikhil Vemu

> macOS라고 해서 바이러스나 악성 코드가 없는 건 아니죠. AMOS 라는 악성 코드에 대한 이야기입니다. MacOS users beware! AMOS Trojan | by Xavier Mirabelli-Montan

> NSSpain 개발자 컨퍼런스 행사 영상이 공개되었습니다 NSSpain XI (2023) on Vimeo

> 생성형 AI를 개인화시키는 것은 여전히 관심들이 많네요. 나만의 코딩 스타일을 배워서 코딩해주는 시대가 얼마 남지 않았겠네요 Your Own Personal LLaMa with Information Retreival | Towards Data Science

> Why You Should Upgrade To macOS Sonoma | by Andrew Zuo


# 스위프트

> 💎 앞으로 스위프트 6부터는 concurrency executor(스레드) 사이에 sendable 한가 아닌가를 판단하거나 마이그레이션을 도와주도록 속성이 추가된다고 하네요 @preconcurrency: Incremental migration to concurrency checking

> 서로 다른 타입을 비교할 때 당연하다고 생각하고 실수할 수 있는 것(예를 들어 ID 타입)을 미리 방지할 수 있도록 개선하는 방법입니다. Bad practice: not using Phantom Types — Swift with Vincent

> 서버가 없이 오프라인 모드인 상태로 데이터를 표시하거나 구현하도록 구현하는 과정을 설명합니다 Decodable SwiftData | by Drew Althage

> 까칠한 그 분(?)이 돌아오셨습니다. 코드 중복 관점에서 IoC나 DI가 오히려 더 중복된 코드를 만들어 내는 게 아니냐 질문을 던집니다. 단지 무엇을 OOO 한다고해서 모든 문제가 해결되는 것은 아니니까요 Destroy dependency injection in Swift | by Jim Lai

> 미리보기 매크로에 대한 간단한 소개입니다 Mastering Preview macro in Swift | Swift with Majid

> 런타임에 속도를 조금이라도 개선할 수 있는 최적화 방법을 소개합니다. Optimizing work in iOS runtime. Photo by Bill Jelen on Unsplash | by Boris

> SwiftSyntax로 코드 생성을 하면서 느꼈전 소감(?) 정도 짧은 글입니다. Pádraig on the Computer — SwiftSyntax Code Generation Notes

> 당분간은 비동기 상황에서 어떤 스레드에서 실행될 것인가, 관점에서 구조적인 동시성 프로그래밍을 연습이 필요할 것 같습니다. 반복문으로 별찍기 연습했던 것처럼 멀티 스레드 환경에 적합한 비동기 별찍기(?)는 무엇일까요 ㅎㅎ Thread dispatching and Actors: understanding execution - SwiftLee

# 설계 구조 : 패턴

> 간단한 TCA 구조를 만드는 과정을 설명합니다 Hey World! A SwiftUI list of countries with TCA | by Marco Taddei

> 앱을 구성하는 요소들을 어떤 단위로 어떻게 묶어서 패키지 - 모듈로 묶을 것인가 점차 다양한 이야기가 공유되는 것 같습니다 IOS Microapps Architecture — Part 2 | by Artem Kvasnetskyi

> SOLID 예시 코드인데 길지 않아서 가볍게 읽을 만합니다. 물론 내용은 SOLID라서 가볍지 않지만요 ;) SOLID Principles in Swift With Examples | by Alessandro Manilii


# 뷰 프로그래밍 : SwiftUI

> 💎 애플 내부에서 만들어서 macOS, iOS 에 포함한 바이너리 중에서 Swift와 SwiftUI 비율을 측정하는 분이 iOS 17에 대한 통계를 포함했습니다. iOS 17에는 6030개 바이너리가 있고, 이 중에서 385개 SwiftUI로, Swift 코드는 1516개라고 합니다. 비율로 보면 Swift로 만든 바이너리가 17% 정도를 차지합니다 Apple’s use of Swift and SwiftUI in iOS 17

> 공유 익스텐션을 만드는 과정을 설명합니다 Create an iOS Share Extension with custom UI in Swift and SwiftUI (2023) | by Henri Bredt

> 상태 관리를 위해서 조심해야 할 점과 뷰모델을 기반으로 테스트를 시도하는 것을 설명합니다 Harnessing the Trifecta of State: State Management with SwiftUI on iOS — Part 3/4 | by Christian Gaisl

> 워치 앱에서 시리를 통해서 앱에 데이터를 전달하기 위해 Intents를 사용하는 과정입니다 Siri Intents for WatchOS | by Faaiz D

> Advanced SwiftUI Animations - Part 6: CustomAnimation - The SwiftUI Lab

> Discover What’s New in Lottie 4.3.0 in SwiftUI | by AsyncLearn

> Sensory feedback in SwiftUI | Swift with Majid

> Sync SwiftData with iCloud using CloudKit | by Jakir Hossain

> ‘init(destination:isActive🏷️)’ was deprecated in iOS 16.0: use NavigationLink(value🏷️) inside a NavigationStack or NavigationSplitView’ | by Muhammad naufal adli

# 뷰 프로그래밍 : UIKit

> 아코디언처럼 접혔다 펼쳐지는 뷰를 UIKit 기반으로 만드는 과정을 설명합니다 An Accordion View in Swift and UIKit | by Steven Curtis

> 보기 드문 UIKit 자료로 윈도우 관련 설명이 좋아서 골라봤습니다 What is a Window in an iOS application? | by Ario Liyan

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

> 캐글에서 가져온 문제 데이터셋을 기반으로 CreateML로 모델을 만들고, 얼굴 표정을 분석하는 샘플 앱을 만들었네요. 가볍게 해보기 좋은 것 같습니다 Emotion Classification: iOS App with CoreML model trained by CreateML | by Yeskendir Salgara


# VisionOS

> 비전오에스에서 개발하기 위해 다뤄야 하는 기술 스택을 설명해주고 있습니다 Apple visionOS Tech Stack | by Siamak

> 공간 컴퓨팅 화면 구성과 디자인을 위한 화면 요소 차이를 설명합니다. 해외는 커뮤니티나 개발사들 중심으로 다양한 사례가 공개되고 있는 것 같습니다. visionOS 앱 출시를 위한 스터디라도 해봐야겠네요 Design for Spatial Computing: from iOS/iPadOS to visionOS

# 개발 환경

> 💎 스포티타이 iOS 팀에서 빌드 시스템을 Bazel로 대략 6개월동안 마이그레이션한 경험을 소개합니다. Switching Build Systems, Seamlessly - Spotify Engineering : Spotify Engineering

> CLI가 앱 번들이 아니라서 Info.plist를 추가하고 싶을 때 설정하는 방법을 설명합니다 Adding an Info.plist file to a Swift executable

> 저도 아직 DocC로 문서화를 해서 배포까지는 못 해봤습니다. 이제 코드로 문서화를 만드는 시스템은 정말 좋아진 것 같네요 DocC: Swift Documentation | by Yeskendir Salgara

> 제목만 보고 아키텍처 이야기인가 했는데, 디자인 시스템 중에서 토큰으로 만들어지는 컬러값 같은 JSON 토큰값을 기반으로 Swift 코드를 생성하는 과정을 설명합니다. Swift-Syntax를 다양하게 쓰는 사례인 것 같습니다 How MEGA engineered its iOS design tokens module | by MEGA

> 유료 도구였네요. 바이너리 파일을 접근성 관점에서 분석해서 어떤 요소가 부족한가 이슈화시켜주는 앱이라고 합니다. 저도 써보지는 못한 앱이지만 흥미로왔습니다 Introducing Insights, and new pricing - Reveal

> 맥용 앱을 분석해서 보안 관점에서 취약성을 진단해주는 무료 앱입니다. Mothers Ruin Software | Apparency

# 테스트
> 콤바인이 옛날 세상이고, Observation 프레임워크가 새로운 세상이라고 너무 강조하는 것 같지만, 테스트 관점에서는 또 다른 세상이네요 Unit Test the Observation Framework | by Jacob Bartlett
# 도구/오픈소스 

> 포인트프리에서 SwiftSyntax를 사용할 때 버전 매칭 문제를 지적했습니다. 워낙 새로운 문법과 구조가 추가되다보니 버전을 매칭하는 게 중요하더군요 Being a good citizen in the land of SwiftSyntax

> 그래프 엔진이면서 여러 물체 힘을 시뮬레이션 할 수 있도록 오픈소스 프로젝트를 만들고 계시네요 Grape – Swift Package Index


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