iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제106호 2024년 7월 14일
무더위가 시작된 7월 둘째주 풍성한 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다. 저도 이제 iOS 18 베타3를 설치해서 맥과 아이폰, 아이패드, 비전 프로까지 모두 베타를 써보고 있습니다. 이번 베타들은 그래도 꽤 안정적이네요. 새로운 기능을 써볼수록 마음에 들어하면서도 Swift 6부터 또 달라지는 점이나 Xcode 베타의 불편한 점이 또 답답하기도 합니다.
매월 둘째, 넷째주 일요일에 뉴스레터를 발행하고 있습니다. 
누구나 함께하는 뉴스레터 저장소 👉 만약 링크가 깨지는 경우는 저장소 이슈에서 확인하실 수 있습니다.
메일링 리스트 가입은 >가입하기 링크< 주변에 소개해주세요 🤩

주제/분류별 소식들
국/해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다.
# 애플

> 애플 DR 담당 직원 WWDC에서 소개된 주요 내용들을 주제별로 정리해서 한국어로 설명해주는 전문가와 만남 - WWDC24의 중대 발표 세션 예약이 시작됐습니다. 7월 25일, 26일 이틀 동안 같은 내용을 진행하기 때문에 하루만 선택해서 신청하시면 된다고 합니다. View - Meet with Apple Experts - Apple Developer

> 애플 뉴스레터에 소개된 내용인데요, visionOS용 새로운 샘플 코드가 올라왔습니다. 아직 전부 돌려보지는 않았지만 부족한 샘플 앱 영역을 채워주는 소식입니다 visionOS | Apple Developer Documentation

# 하드웨어

> 퀄검 스냅드레곤 X 엘리트 기반 레노버 요다 노트북과 맥북 에어를 비교하는 글입니다. M2 Pro 맥 미니 성능과 근접한다고 하네요. Apple Silicon vs Qualcomm Snapdragon X Elite | Mac O

> M4 시리즈가 들어간 맥이 아직 없지만, 아이패드처럼 곧 맥 라인에 들어가면 AI를 위한 PC 시장에 선도할 것이라는 전망입니다. 애플 인텔리전스가 서비스로 나오는 시점부터가 아닐까 싶네요 How the M4 Chip Could Revolutionize Mac Performance | by Jacky

> 아직 만들지도 않고 나오지도 않은 폴더블 맥북 루머에 대해 격분한 이 글은 좀 이상하긴 합니다. 과연 애플에서 폴더블 디바이스가 나오긴 할까요 Is Apple Crazy? Foldable MacBook Priced Too High! | by Jacky

> 오 아이폰 SE 4에 대한 루머가 있었나봅니다. USB-C만 들어가도 다른 느낌일 것 같네요 The Elusive iPhone SE 4: What’s Coming and What It Means for Apple Fans | by Jacky

> 한 달 사용하고 나니까 허니문 기간은 끝났지만 처음 쓰는 것처럼 만족하면서 쓰고있다고 하네요 (부럽다) iPad Pro M4 — After the honeymoon | by Lewis J Doyle


# 일반

> 💎 뉴스레터 구독자 분들 중에는 Objective-C도 오래된 언어라 경험이 없으신 분들이 꽤 많고, Objective-C에 문법적인 영향을 준 Smalltalk는 코드를 본적도 없는 분들이 많으실 겁니다. 스몰토크가 왜 독특한가 설명해주는 매력적인(?) 글이라 가져왔습니다. 저도 Objective-C와 Smalltalk를 그리워하는 올드보이라서요 What Makes Smalltalk Unique? | by Aleena

> 스위프트가 아니라 여러 언어에서 비동기 함수 효용성에 대해 비판하는 글입니다. 약간 어그로가 있는 것 같기도 하고 짤은 마음에 드네요 ㅎㅎ 비동기 함수나 비동기 API가 불필요한 것은 아니지만, 모든 함수가 비동기 함수일 필요는 없지 않을까요. Async Await Is The Worst Thing To Happen To Programming | by Andrew Zuo

> 파리에서도 많은 개발자들이 모여서 2시간 정도 WWDC24 내용을 요약 정리하는 행사를 했었나 봅니다. 유럽은 DMA 관련해서 여러 질문이 많을 수 밖에 없는 상황이겠죠 Attending WWDC24 recap at Apple Paris — Dean’s blog

> 새로 소개된 Final Cut Camera 앱에 대한 소개입니다. 저도 이 글을 읽고 나서야 부랴부랴 설치봤는데요 아이폰에서는 잘 되는데, 아이패드 프로 2세대는 안되네요 ㅜㅜ M1 이상의 아이패드가 필요하다고 나옵니다 Final Cut Camera Is Here. Who is it for and will you use it? | by Carl St. James

> 중국에서 근무하는 6000명이 넘는 MS 직원들 업무용 휴대폰을 아이폰으로 지급했다는 뉴스를 들었습니다. 애플이 과연 할인해줬을까요? ㅎㅎ Has Microsoft fallen in love with the iPhone? | by Enrique Dans

> 애플 워치가 아이폰과 불과 33걸음 정도 떨어졌는 데 잃어버린 것이 아닌가 하고 워치가 알림을 띄워준 사연이 흥미롭습니다 ㅎㅎ No, Apple, My iPhone Was Not Left Behind | by Anthony

> 개발과 전혀 관련이 없는 내용인데 가져와봤습니다. 노르웨이에 있는 Halden 감옥에 대한 글입니다. 사회와 격리되지 않고 지역 사회와 연결되어 있다는 철학을 가지고 만든 럭셔리한 감옥이라고 합니다. 범죄자들 사회회를 위해서 무엇이 필요한 것인가 다시 고민해보게 되는 글이었습니다. 물론 댓글은 혼란스럽습니다 ㅎㅎ Scientists Put Prisoners In A Luxury 5-Star Prison, This Is What Happened | by Jano le Roux

> 프랑스 파리에서 10월에 열리는 스위프트 커넥션(이전 FrenchKit)이라는 컨퍼런스 소식입니다. 1891년에 만들어진 파리 극장(?)에서 이틀 동안 진행된다고 합니다. Swift Connection Conference

> 이제야 iOS 18 베타를 사용해보는 저는 아직 다 써먹어보지는 못했는데요 미러링과 패스워드 앱은 앞으로도 자주 사용할 것 같습니다 The 50 New Features Of Apple’s iOS 18 Update You NEED To Know! | by Nikhil Vemu

> 아이폰 16에 대한 루머는 카메라 렌즈나 외형 버튼, AI를 위한 새로운 SoC 칩에 대한 것이네요. 특히 NPU에 대한 기대가 큰 것 같습니다 The Latest Leaks on iPhone 16 are Incredible | by Jacky

> 이미 특허로는 터치형 맥북을 준비했던 것 같다. 터치바 맥북도 있었지만 터치스크린 맥북도 개발중이었다는 루머를 다시 한 번 보여줍니다. 실제로 애플은 아이패드가 대체하지 않을 거라고 얘기했었죠 The Touchscreen MacBook is Here! | by Jacky

> 아이패드가 (성능이 좋아져서) 맥북이 되어야 하는 게 아니라 더 나아진 iPadOS가 필요하다는 제목이 촌철살인이네요. 맥북보다 좋은 M4 칩이 들어가도 딱히 충분히 활용할 수 없는 iPadOS가 힘빠져 보이기도 하죠 The iPad Doesn’t Need macOS. It Needs a Better iPadOS. | by Michael Swengel

> 맥에서 아주 소소한 기능을 담당하는 미니 앱들을 소개합니다 Your Productivity Gets Easier With These 14 Mini macOS Apps | by Nikhil Vemu


# 스위프트

> 스위프트에서 async/await 방식이 들어간 것도 3년이 지났습니다. 이제 제법 사용하는 사례도 많아지고 있습니다만 구조적인 동시성을 제대로 활용하고 있는가는 고민해볼 필요가 있겠습니다 Async await in Swift explained with code examples - SwiftLee

> Swift 1.0부터 Swift 6.0까지 지난 10년을 돌아보고, 앞으로 스위프트 6 시대에 강조되는 부분들을 짚어줍니다. 사용할 곳이 넓어지고 안전하고 좋은 언어지만 C++보다 좋은가는 논란거리가 있겠네요 The Era of Swift 6 Has Arrived! It’s the Best Choice Over C++ | by Dylan Cooper

> 스위프트 6에 들어갈 타입으로 던지기.를 에볼루션 제안 시점부터 예제 코드를 기준으로 상세하게 설명해줍니다. Typed throws in Swift explained with code examples - SwiftLee

> 비동기 클로저 타입을 포함하는 고차함수 형태로 선언할 때 필요한 @isolated(any) 함수 타입에 대해 설명합니다. 비동기로 실행될 클로저가 어떤 액터에서 실행되야하는 지 명시해야 하기 때문에 분리할 것인가 안할 것인가 명시해야 하는 상황을 나타냅니다 @isolated(any)Function Types | massicotte.org

# AI/ML

> 라즈베리 파이5에 PCIe 인터페이스로 연결한 하일로 가속기로 인공지능 기능을 활용하는 방식을 소개합니다. How good is Raspberry Pi’s AI Kit | by Gandhi KT

> 특별한 이야기보다는 사용자 데이터를 보호하면서도 API 기능을 강화하려는 애플의 노력에 대해 소감을 적었습니다 My Thoughts on Apple Intelligence | Medium

> 저도 이 글에 동의하는 편입니다. 애플 인텔리전스는 또 다른 ChatGPT가 아니라 우리가 각자 디바이스에 넣어놓은 모든 데이터를 연결하는 비공개 개인 맥락형 AI가 될 것 같습니다. Setting The Record Straight On Apple Intelligence | by Attila Vágó


# 뷰 프로그래밍 : SwiftUI

> 내비게이션을 관리하는 매니저를 두고 마지 뷰 컨트롤러를 내비게이션 하는 것처럼 목적지 뷰를 추가하고 이동하는 방식을 설명합니다. A new perspective on SwiftUI navigation | by Mijick

> 블렌드 모드로 이미지나 색상을 섞는 방식에 대해 설명합니다. 하지만 블렌드 모드가 느려지게 만드는 원인이 될 수도 있으니 남용은 금물입니다 Blend Modes in SwiftUI

> ViewState를 다루는 데이터의 나열이 아니라 변화하는 정리된 하나의 상태로 선언해보라는 조언입니다. 간단한 코드 변화로 안정적인 처리가 가능하도록 도와주는 좋은 팁입니다. 개인적으로 enum 연결타입은 선호하지 않지만 실수를 줄이는 측면에서 좋다고 생각합니다 Consolidated ViewState

> iOS 18에 도입된 스크롤뷰 API에 대한 팁과 트릭을 소개합니다 Some tips & tricks with the new iOS 18 ScrollView API | by Thomas Ricouard

> 처음 제목을 보고 SwiftData 는 뷰 바깥에서 사용하는 아니었던가 다시 고민해보게 하는 글이었습니다 ㅎㅎ SwiftUI: Use SwiftData outside a View (In a Manager Class/ViewModel) | by Itsuki

> 스크롤 컨트롤 API와 관련해서 같이 읽으면 좋은 글입니다 The Evolution of SwiftUI Scroll Control APIs and Highlights from WWDC 2024 | Fatbobman

> 하일라이트 표시한 문장을 렌더링하기 위한 TextRenderer 구현 방법을 설명합니다 Using TextRenderer to create highlighted text | Teabyte

> 새로워진 SwiftUI에 대해 꽤 상사하게 설명한 글입니다. 이걸 보고 더 깊게 찾아가기 좋은 것 같네요 WWDC 2024, What’s new in SwiftUI | by Serhan Khan

> 한 두 줄 정도지만 iOS 18 기능을 위한 새로운 SwiftUI 기능들 한 번씩 살펴보세요 What’s New in SwiftUI for iOS 18 | by Kalidoss Shanmugam

> iOS처럼 다른 OS에서도 확대하면서 트랜지션으로 동작하도록 SwiftUI 랑 UIKit 모두 구현하는 상세한 예제입니다. Zoom transitions

> Creating an Auto Scroll Header — SwiftUI | by Diego Henrick

> Drag and Drop in SwiftUI | by Alessandro Manilii

> Mastering Animatable and AnimatablePair in SwiftUI

> Mixing colors in SwiftUI and Xcode 16 – Donny Wals

> Show and hide SwiftUI inspectors with an identifiable item

> Using PreviewModifier to build a previewing environment – Donny Wals

> Using multi-step animations in SwiftUI

# 뷰 프로그래밍 : UIKit

> 💎 새로운 애플 사진앱에서 검색 관련 UI 부분을 리버스 엔지니어링으로 분석하고 그대로 따라서 만드는 내용입니다. SIP 보호를 풀고 맥용 Photos 앱 프로세스 MobileSlideShow를 디버거에 연결해서 뷰 계층을 분석하는 방식으로 접근했네요 Reverse Engineering Photos' New Search UI

# 프레임워크

> Metal API를 활용하고 코어 이미지 관련 고급 주제를 설명하는 글입니다. 이전 글과 이어지는 글입니다 Advanced Core Image | by Jacob Bartlett

> macOS 14.4 와 iOS 17.4 이상에서 추가된 새로운 번역 팝오버 처리 방식에 대한 설명입니다. 시스템에서 제공하던 기능을 이제야 API로 풀어준 셈입니다 Exploring Translation: Using translationPresentation for Translation Popover

> 애플 인텔리전스가 나오기 전에 번역 API를 써볼 수 있는 API가 생겨서 좋네요. 운영체제에서 지원하던 팝업 방식이긴 하지만요 Free, on-device translations with the Swift Translation API

> NFC 태그 앱을 하나 생각중인데 이 글이 반갑게 눈에 띄었습니다. 그나저나 애플페이와 교통 카드 루머가 또 있던데 올 가을에는 기대해볼 수 있을려나요 SwiftUI: NFC Tags Background Reading with Custom JSON Payload and Pass Data to Views | by Itsuki


# 서버사이드

> 서버 프레임워크 Meridian 을 만드는 개발자가 오랜만에 프로젝트가 어떻게 되어 가는지 설명합니다. 매크로와 OpenAPI 방식을 도입하려고 로드맵을 그리고 있다고 하니 기대가 됩니다 Khanlou | The State Of Meridian

> 허밍버드 프레임워크로 웹소켓 방식 채팅 서비스를 구현하는 예시를 보여줍니다. 서버 구축이 뚝딱이군요 ㅎㅎ WebSocket tutorial using Swift and Hummingbird - Swift on Server

# VisionOS

> 💎 애플 디자인 에반젤리스트 Linda Dong 과 Mike Stern이 피그마 발표장에서 비전 프로와 디자인 관련 세션을 진행한 영상입니다. 30분 정도 되는데 디자이너들이 비전 프로로 무한한 캔버스로 사용할 수 있는 아이디어에 대해 소개합니다 Config 2024: An infinite canvas (Mike Stern, Apple & Linda Dong, Apple) | Figma - YouTube

> 비전 화면에서 몰입 환경에서 화면의 내용이 공간에서 어떻게 보이고 반사되는가 미리 살펴보는 도구에 대한 글입니다. 콘텐츠를 볼 때 몰입 환경이 실제처럼 느끼도록 도와주는 핵심적인 요소라고 할 수 있습니다 Diffuse reflection UV computation tool

> 비전에서 볼 수 있는 몰입형 비디오 영상을 촬영하기 위한 카메라에 대한 소개입니다. 애플이 블랙 매직과 함께 제작 가이드를 뿌린다고 하니 몰입형 컨텐츠가 많아지길 기대해봅니다 Immersive Video: Which camera is right? | by Anthony Maës

> 비전용 앱을 만드는 개발자의 개발 블로그라서 소개합니다. 국내에는 아직 비전 내용만 다루는 블로그는 없는 것 같네요 Reset physics in entities - Donovan's Vision Blog

> VR에 대한 흥망성쇠와 기술적인 도전들을 설명합니다. 비전 프로는 VR이 아니었더라. 3D 영화와 같은 몰입형 콘텐츠가 좋기는 하지만 앞으로 어떻게 활용될 지는 장담하기 어렵다고 하시네요 The Rise and Fall and Rise and Fall of Virtual Reality | by Michael Alford

> visionOS 1 정식 출시가 2월이었는데, 벌써 visionOS 2가 베타로 나오면서 1에서 불편했던 점들을 차츰 개선하고 있습니다. 비전 프로 제한을 풀어주길 기대해봅니다 What's new in visionOS 2 • Buttondown

# 접근성

> 💎 이런 관점의 글들이 많아지면 좋겠습니다. 접근성 측면에서 SwiftUI와 UIKit 화면 요소와 접근 방식, 구현 방법 등을 비교하는 글입니다 Navigating Accessibility: A SwiftUI vs. UIKit Comparison | by Ryan

# 개발 환경

> 💎 코코아팟에 취약점을 이용해서 악성 코드가 같이 배포되서 사용하는 소프트웨어 코드에 포함되서 배포될 수 있는 위협이 감지됐다고 하고 패치했다고 합니다. 이제 개발자 패키지들을 공격 루트로 삼는 경우가 꽤 많아지고 있어서 주의가 필요한 것 같습니다 Vulnerabilities in CocoaPods Open the Door to Supply Chain Attacks Against Thousands of iOS and MacOS Applications

> 시뮬레이터에서 주고받는 네트워크 트래픽을 감시하기 위한 도구들을 소개합니다. 물론 저자가 만드는 RocketSim이 좋다는 결론으로 끝나지만요 ㅎㅎ Inspect network traffic using the Xcode Simulator

> Xcode가 계속하려면 빌드를 다시하라.는 에러를 표시할 때 다시 빌드 명령을 주기 위한 방법을 설명합니다. Xcode 에러를 감시하고 있다가 "Build again to continue"가 나타나면 애플 스크립트로 Xcode 빌드를 다시 누르는 방식이네요 Make Xcode instantly build again when it says “Build again to continue” (part 1) | by Max Chuquimia

> 파이썬 라이브러리에 포함된 itms를 포함하는 OTA 배포 문자열 때문에 리젝된 사연을 소개합니다. 자동화 도구에 걸렸겠지만 배포 관련이라서 깐깐하게 본 케이스가 아닌가 싶긴 합니다 Python Program Banned from Apple App Store Due to a Single String | by Meng Li

> 메모리 때문에 강제 종료되는 상황을 분석하고 해결하기 위한 아이디어를 소개합니다. 크래시 리포트에 OOM 지원을 위한 도구를 포함하기도 한다고 합니다. Reducing Memory Terminations in iOS Apps | by Alex Cohen

> 스위프트 6에서 데이터 레이스 에러가 없는 패키지가 많아지고 있다는 공식 블로그 기고 글입니다. 저도 이제 슬슬 Swift 6로 넘어갈 준비를 해야겠네요 Swift.org - Plotting a Path to a Package Ecosystem without Data Race Errors

> 이게 직접적으로 비교할 수 있는 것인가 싶기는 하지만, SwiftUI 화면과 UIKit 화면 요소를 동일한 수준에서 구현해놓고 인스트루먼트로 메모리 사용량과 성능을 비교한 글입니다. 동작 시간은 얼추 비슷하지만 UIKit이 컴파일도 빠르고 메모리도 적게 사용한다는 것을 보여줍니다. 오히려 SwiftUI가 구조적으로 조심할 부분도 최적화할 부분도 많은 구석이 있긴합니다 SwiftUI vs UIKit: Memory Usage and Performance in Window Management | by Andas Salgara

> oslog를 사용해서 콘솔 로그만 작성하던 것과 다르게 Xcode에서도 구조적으로 형식을 지킨 로그 메시지를 출력하는 다양한 방식을 설명합니다 Utilizing Apple’s oslog for Enhanced Logging in Xcode | by Rohit Saini

> 유료 앱이지만 전에도 한 번 소개했던 칼레이도스코프 비교 전용 앱입니다. 이번에 Git 저장소를 비교하는 방식이 추가되었다고 하네요. 새 버전은 아직 안 써봤는데 업그레이드를 고민해봐야겠습니다 Welcome Kaleidoscope 5 – Kaleidoscope Blog

> Xcode 16부터 (아직은 실험적 기능이지만) 빌드할 때 모듈에 대한 의존성에 따라서 다른 모듈 빌드 시점까지 기다리지 않아도 되는 명시적 모듈 빌드 방식이 도입됩니다. 아직은 더 느리다는 얘기도 있네요 Xcode Explicitly Built Modules

 
# 테스트

> WWDC에서 소개한 스위프트 테스팅 프레임워크에 대한 설명입니다. 주요 구성 요소와 기능들을 잘 설명해주는 글입니다 Introduction to Swift Testing Framework | by Rishita P

> 스위프트 테스팅 프레임워크에 대한 꽤 상세한 글입니다. 갑자기 한자가 등장하긴 하지만 상세한 설명이 좋습니다 Swifter and Swifty - Mastering the Swift Testing Framework | Fatbobman

# 도구/오픈소스 
> 기존 XCTest 코드를 스위프트 테스팅 프레임워크 방식으로 변환해주는 오픈소스 도구입니다. 얼마나 다양한 케이스를 지원하는 지 모르겠지만 이런 도구가 나오는 것은 긍정적이네요. 어쩌면 Xcode 내부에 마이그레이션 버튼이 생길지도 모르겠네요 giginet/swift-testing-revolutionary: A tool converts test cases written in XCTest to swift-testing

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