iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제117호 2024년 11월 22일
2024년 마지막 소식들을 담은 풍성한 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다.
올해도 애플은 다양한 제품을 내놓고 저도 많은 소식들을 전해드린 것 같습니다. 점점 미디엄 유료 글들이 많아지고 있어서 아쉬움이 있지만, 그만큼 또 다른 글들도 찾으려고 노력중입니다. 어느덧 구독자도 2300명이 넘었습니다. 뉴스레터를 보시는 분들도 공유하고 싶은 소식이 있으면 언제든지 연락주세요 :) 
매월 둘째, 넷째주 일요일에 뉴스레터를 발행하고 있습니다. 
누구나 함께하는 뉴스레터 저장소 👉 만약 링크가 깨지는 경우는 저장소 이슈에서 확인하실 수 있습니다.
메일링 리스트 가입은 >가입하기 링크< 주변에 소개해주세요 🤩
주제/분류별 소식들
국/해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다.
# 애플

> 💎 며칠전에 맥용 앱을 베타 테스트할 겸 직접 배포할 일이 있었는데요, Xcode 최신 버전부터는 (찾아보니 Xcode 15.3 부터라고) notarizing을 직접 해주네요. 앱 스토어에 올리지 않아도 등록된 개발자가 배포하는 것으로 인식하도록 해줍니다. Xcode 16 스샷은 아니지만 관련 개발 문서를 소개합니다 Notarizing macOS software before distribution | Apple Developer Documentation

> 디자인 어워드와 다르게 앱 스토어에서 영향력이 큰 앱에 대한 연말 시상식 느낌으로 앱 스토어 어워드 수상작이 발표됐습니다. Apple, 2024년 App Store Award 수상작 발표 - Apple (KR)

# 하드웨어

> 새로운 M4 Pro 맥을 선택해야 하는 이유를 설명합니다. 가격도 저렴하고 성능도 좋고 기본 메모리도 올라가고 GPU까지 좋아졌으니 안 살 이유가 없다고 하네요 10 Crucial Reasons to Choose the M3 Over the New M4 Pro | Mac O

> M4 맥 미니 또 다른 리뷰글이네요. 맥 장비들도 매년 업그레이드가 빨라지고 있고 성능 개선이 꾸준히만 된다면 앞으로가 더 기대되는 것 같습니다 M4 Pro Mac mini — what’s REALLY inside mine? | by David Lewis

> 과거 카메라들에 비해서 요즘은 HDR 정보나 AI/ML 기술로 보정하는 기능이 좀 과하기 때문에 끄고 찍는 게 더 낫다는 관점입니다 The iPhone 16 Pro’s best camera feature is an ‘off button’ | by James Bareham

> How I Use My AirPods Pro 2 Will Amaze You | by The Evil Geek

# 일반

> 단축어 자주 쓰시나요? 아이폰 뿐만 아니라 맥에서도 자동화 시키기 좋습니다. 베터리가 없을 때 문자보내는 것은 편리할 것 같네요 5 Essential iOS 18 Shortcuts To Automate Your Daily Life | by The Useful Tech

> 2024년에 단종된 제품들을 정리한 글이네요. M1 제품들도 사라지고 라이트닝 케이블도 사라지고 은근 변화가 많네요 Every Product Apple DISCONTINUED in 2024 | by Sareena

> iOS 18.2 정식 버전에서 애플 인텔리전스 이외에 주목할 만한 기능들을 소개합니다. 공식 메일 앱에서 카테고리 분류가 되서 편하더군요 Exciting new FEATURES in iOS 18.2 that aren’t about AI | by Sareena

> 게임 상태와 반복 작용에 대한 내용입니다 Game Mechanics — Interaction Loop and the Game State | by Stanislav Stankovic

> 맥 환경 설정을 얼마나 조정해서 사용하시나요? 생산성을 높여주는 나만의 설정 방법들 - 팁에 해당하는 데 가볍게 살펴보기 좋습니다 MacOS: The Ultimate Productivity Setup | by Andrii

> 이전 글 중에서 패스키가 나쁜 방식이라고 강조했던 글에 대해 이어서 쓴 글이네요. 서버에서 검증하는 다중 인증 방식이 아니라서 보안에 취약할 수 있다고 강조합니다. 간편한 방식일 수록 위험할 수 있을 것 같습니다 Transferrable Passkeys Are A Bad Idea | by Andrew Zuo

> 소프트웨어 프로젝트는 자주 실패합니다. 쉽게 성공만 하려고 하면 쉽게 실패하기 때문이죠. 가장 큰 실수는 성과가 높은 개발자를 채용하려고 하는 게 오히려 ROI 관점에서 나쁘다는 것을 이야기 합니다. Why Hiring High-Performance Developers is the Biggest Mistake for ROI. Do This Instead. | by Eiki Takeuchi

> 애플 생태계는 정말 덫일까요. 사용자들이 바보처럼 덫에 걸려서 사지도 않아도 되는 것을 마구 사는 것은 아닐 겁니다. 기술적으로 하드웨어와 소프트웨어 통합한 서비스 경험은 기술을 중시하는 사용자들에게 최고니까요 Why the Apple Ecosystem Isn’t a Trap — Unless You Think It Is | by Manav Tyagi

> iOS 18.2 와 함께 변경된 내용들 - 새로운 기능들을 정리한 글입니다 iOS 18.2 Released — 25+ Amazing New Features You NEED To Try Now! | by Nikhil Vemu

> 벌써 아이폰 17 루머가 나오는군요. 아이폰 에어가 나오려나요? iPhone 17: Everything we know so far | by Sareena


# 스위프트

> Task로 throw 함수를 감쌀 때 어떻게 하고 계신가요? Task 내부는 비동기니까 에러를 던질 필요가 없는 경우도 있지만 흐름 제어 관점에서는 놓치기 쉬운 실수가 됩니다 Be careful wrapping a throwing function in a Task — Swift with Vincent

> Float 와 CGFloat 차이점에 대해 설명합니다. 타입별 메모리 레이아웃이 다르고, 맥인지 아이폰인지에 따라 다르기 때문에 내용은 알고 써야 할 것 같습니다 Float vs. CGFloat in iOS Swift: An In-Depth Exploration | by Kalidoss Shanmugam

> 함수 실행에 대한 비교입니다. 실행 횟수와 알고리즘 비교 자체도 있지만 익숙하게 선언하는 함수 하나가 발목 잡는 경우가 있으니 조심할 필요는 있겠습니다 How to make a Swift function 10,625,000 times faster | by Herlandro Hermogenes

> 스위프트가 복사하지 못하도록 선언하는 Noncopyable 타입을 선언하고 작성하는 방식을 설명합니다. 컴파일 시점에 바꾸지 못하도록 막히는 경우가 점차 많아질 것 같습니다 Noncopyable types in Swift

> 프로퍼티 래퍼와 매크로를 직접적으로 비교해줍니다. 사용하는 곳, 컴파일 타임과 런타임 동작까지 꽤 구분을 잘 해주네요 Swift Property Wrappers vs. Macros | by Steven Curtis

> 스위프트 동시성을 사용할 때 하지말아야 할 것 4가지를 설명합니다. 간단하지만 실수하기 좋은 요소들이긴 합니다. The 4 don’ts of Swift Concurrency | by Sergey Petrachkov

> let 표기는 가끔씩 거짓말을 한다고 실험적으로 증명하려고 합니다. let 으로 한다고 절대 바뀌지 않는 걸까요? let is a lie (sometimes) — Swift with Vincent

# 설계 구조 : 패턴

> 💎 Lyft 앱 개발팀이 큰 규모의 앱 모듈 의존성을 시각화해서 메모리 구조를 파악하는 과정을 상세하게 설명합니다. 앱 구조을 개선하고 용량을 줄이는 좋은 사례인 것 같습니다 Integrating Extensions into Large-Scale iOS apps | by Max Husar

> 기능이 많아지다보면 어딘가 커지는 형태가 생기게 됩니다. ViewController가 아니더라도 ViewModel도 가능하고 그냥 View도 커질 수 있습니다. 이 글을 읽고 크기를 줄인다.는 의미가 무엇인가 생각해보게 되네요 How to Prevent Massive ViewModels in MVVM and Maintain SOLID Principles | by Shobhakar Tiwari

> MVVM-C 형태로 내비게이션을 처리하려면 결국 내비게이터 혹은 코디네이터를 넘겨줄 수 밖에 없겠죠. SwiftUI 는 여전히 내비게이션 해결책이 다양합니다 Practical MVVM-C in SwiftUI. A Clear Separation of Concerns | by Steven Curtis

# AI/ML

> 애플 인텔리전스에 포함된 쓰기 도구를 Grammarly 서비스와 직접적으로 비교한 글이네요. 여러모로 Grammarly 서비스가 최적화도 잘 되어 있고 품질도 좋지만 이제막 베타로 시작한 애플 인텔리전스 쓰기 도구도 쓸만하다는 평가입니다 Apple Intelligence Writing Tools Vs Grammarly: A Comprehensive Comparison | by Aditya Darekar

> 182 애플 인텔리전스 기능 중에 이미지 플레이그라운드 관련해서 개발할 때 필요한 사항을 소개합니다. 이제 모든 앱에서 사용할 수 있는 시점이 가까워졌네요 Exploring Apple Intelligence: Image Generation

> MLX 는 애플에서 제공하는 애플 실리콘에 최적화한 ML 가속 프레임워크로 Swift API도 제공해줍니다. 온디바이스에서 유명한 LLM 모델을 실행하는 것도 가능하기 때문에 살펴보기 좋습니다. Exploring MLX Swift: Adding On-Device Inference to your App

# 뷰 프로그래밍 : SwiftUI

> 데이터 바인딩을 하기 위해 사용하는 프로퍼티 래퍼 @Bindable 과 @Binding 에 대한 간단한 설명입니다. @Bindable vs @Binding | by Paul O

> SwiftUI를 설명할 때 선언적인 뷰 프레임워크라고 부르지만 함께 사용하는 방식이나 상호 작용, 데이터 흐름 관리까지 고려하면 단지 뷰만 다룬다고 하기 너무 광범위한 이야기가 되기도 합니다. 단지 뷰를 다루는 코드 양을 줄이기 위한 접근보다는 효율적으로 동작하고 신뢰할 만한 앱을 만드는 방식 중에 하나라는 것을 강조합니다 Common Misconceptions About SwiftUI | by fatbobman

> 애니메이션과 타이밍 함수를 다루는 방식을 설명합니다 Custom Animations with Timing Curves in SwiftUI: Make Your UI Rock | by Wesley Matlock

> 다양한 형태의 버튼을 만드는 경우에 스타일 변화를 주기 위해서 필요한 사항들을 점검할 수 있어서 좋습니다 SwiftUI Button: Custom Styles, Variants, and Best Practices

> 의존성을 관리하면서 실제로 로그인 하지 않고도 인증을 처리하는 동작을 구현하는 예시입니다. 인증 Repository 구현체가 Mock을 처리하도록 구현하네요 SwiftUI best practices project showcase | by Filip Kisić

> 공유 익스텐션을 만드는 방식과 화면 처리 방식을 설명합니다. 익스텐션 만드는 게 간단하면서도 테스트 하기 어려운 데 에러 메시지를 확인하는 방법은 꼭 알아두는 게 편하더군요 SwiftUI: Make App a Destination App for Share (With Share Extension) | by Itsuki

> Top 10 Libraries to Write Less Code in SwiftUI | by Pavlos Simas

# 뷰 프로그래밍 : UIKit
> iOS 18 버전까지 나왔지만 여전히 앱이 백그라운드에서 무언가 하는 것은 제한적입니다. 백그라운드에서 URLSession 에서 uploadTask로 업로드하는 방식을 설명합니다. Background upload in iOS | by Diana Nareiko
# 프레임워크

> 앱 스토어에서 유료 앱을 무료 사용후 전환하하는 freemium 앱으로 바꾸는 방식에 대한 소개입니다 How to change your app's business model from paid to freemium using StoreKit

> SF 심볼이 벡터 형태로 제공되고 참조하기도 워낙 간단해서 점차 많이 사용하게 되는 것 같습니다. 이제 애니메이션이나 멀티 컬러까지 되기 때문에 더 매력적인 것 같습니다 SF Symbol: How to for Swift & SwiftUI

# 맥 개발/AppKit

> 이거 흥미롭네요. 맥 앱을 iOS 에서 실행할 수 있을까요? 게임을 직접 포팅하면서 여러 래핑 계층을 두고 양쪽에서 동작하는 앱을 구현했나 봅니다. 아쉽게도 세부적인 내용이나 코드가 공개되지는 않았지만 맥용 앱을 옮기는 작업에 대한 아이디어 정도는 얻을 수 있을 것 같습니다 Running macOS apps on iOS | by Samuel Žúbor

> 맥 앱을 만들 때 NSEvent 에서 마우스 움직임을 감지해서 윈도우 위치를 지정하는 방식을 설명합니다 SwiftUI/MacOS: Detect Mouse Location & Show Auxiliary Window | by Itsuki

# VisionOS
> 💎 애플 비전 프로는 정말 공간 컴퓨팅일까요? 최고 사양으로 앞으로 공간 컴퓨팅 가능성을 열어준 것은 맞지만 아직은 눈이나 손의 움직임으로 할 수 있는 것이 제한적이라고 말합니다 Is Apple Vision Pro Truly a Spatial Computer? | Mac O
# 개발 환경

> 💎 SPM 플러그인 기능을 활용해서 동적으로 SwiftUI 뷰와 Modifier를 찾거나 활용할 수 있는 방법을 제안합니다 Xcode Library customization with SPM plugin

# 테스트

> 저도 최근에야 Swift Testing 을 직접적으로 사용해보고 있습니다. XCTest 로 작성한 것을 마이그레이션해야 하나까지는 생각하지 않았는데요. 왜냐하면 Swift Testing 내부에서 동작은 XCTest로 동작하기 때문이죠. 아무튼 마이그레이션이 필요하다고 가정하고 어떻게 옮겨지는 지 살펴보시면 좋습니다 Migrating XCTest to Swift Testing

> 스위프트 테스팅 프레임워크 상세한 소개 버전입니다. 예제가 꽤 상세해서 애플 공식 문서보다 친절하다고(?) 느낄 수 있습니다 Swifter and Swifty: Mastering the Swift Testing Framework | ITNEXT

# 도구/오픈소스 
> iOS 16부터 지원하는 SwiftUI 내비게이터를 구현한 오픈 소스입니다. 항상 이름을 직관적으로 짓는 분이긴 합니다 Now Previewing Navigator! | by Michael Long
# 디자인 

> 기능과 경험 차이점에 대해 설명하고 사용자가 기능을 기계적으로 학습하는 게 아니라 자연스럽게 사용하도록 설계하라는 글입니다. 조금 길긴하네요 Features shouldn’t feel like features | by Avi Siegel

> 디자인 작업에도 인공지능 도구가 효율성을 높여주고 있지만 품질은 떨어지고 희생하게 된다는 논점입니다. 어디서나 자동화가 생산성을 높여주면서도 품질 저하 문제가 있기 때문에 본질적인 디자인 작업도 완전히 사라지지 않을 꺼라는 이야기네요 Quality won’t save designers from AI | by Michael F. Buckley

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