iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제84호 2023년 8월 13일
한여름 풍성한 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다. 다들 태풍 비피해는 없으셨나요? 
WWDC 이후로 쏟아지던 소식들이 이제 어느 정도 정리가 되어 가고 있습니다. 9월 중순 애플 이벤트가 예정되어 있다고 하고 베타 버전도 차츰 안정화되고 있네요. 
어느덧 레츠스위프트 뉴스레터를 시작한 지도 벌써 3년이 넘었습니다. 구독자가 꾸준히 늘어서 곧 2000명을 앞두고 있습니다 🥳 가볍게 소식을 전하는 것으로 시작했었는 데, 이제 국내 애플 관련 개발자가 2000명 가까이 보고 계시다니 저 혼자 갑자기 감계무량합니다 ㅎㅎ 깃헙 스폰서로 발행을 후원해주시는 분들도 감사드리고, 뉴스레터 보시다가 가끔씩 답장이나 응원해주셔도 좋습니다.
매월 둘째, 넷째주 일요일에 뉴스레터를 발행하고 있습니다. 
누구나 함께하는 뉴스레터 저장소 👉 만약 링크가 깨지는 경우는 저장소 이슈에서 확인하실 수 있습니다.
메일링 리스트 가입은 >가입하기 링크< 주변에 소개해주세요 🤩
주제/분류별 소식들
국/해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다.
# 애플

> 개인 정보 보호를 위해서 특정 API 사용 허용하는 이유를 제출해야 한다고 하네요 Apple News
> TestFlight으로 베타 앱을 외부 테스트할 수 있다고 합니다. Releases - Apple Developer


# 하드웨어

> 💎 비전 프로 랩이 시작됐습니다. 아쉽게도 한국에는 없지만 일본이나 싱가포르 방문 계획을 잡으시면 가능하더군요. 사례들이 올라오고 있는데 미리 준비할 게 좀 있나봅니다. 한국 담당 직원분들이 일본에서 일부 지원하는 날도 있다고 합니다 Tips for Vision Pro Labs - David Smith, Independent iOS Developer

> 구형 맥을 살 때 고려해봐야 할 사항들입니다. 1-2년마다 제품군이 사라지는 그래프가 인상적입니다. 업무용 맥은 3년마다 바꾸다보니 별로 체감하긴 어렵네요 Be Careful Buying An Old Apple Product | by Andrew Zuo


# 일반

> 앱 스토어 신화가 무너지고 있다. 정도로 의역할 수 있겠네요. 에픽과의 소송, EU의 새 법률을 언급하고 있는 데 사실 한국이 앱 스토어 이외 결제는 가장 먼저 적용되기도 했죠 Apple’s App Store Monopoly Is Coming Crumbling Down | by Andrew Zuo

> (어쩌다나 로이터 뉴스를 공유할 줄은 몰랐지만) 중국은 모든 앱에 대해 사업 방식(?)을 승인받도록 강제할 계획이라고 하네요. 앱 스토어도 점점 자유무역이 아닌 시대가 되어가고 있습니다 China to require all apps to share business details in new oversight push | Reuters

> 새로 공개된 Llama 2를 M1에서 돌리면서 학습 시키는 방식입니다. GPU 있는 서버들과 비교해도 M1 이상 장비들이 꽤 성능이 좋더군요 How to Run Llama 2 on Mac M1 and Train with Your Own Data | by Vitalii Shevchuk

> 유명한 Kaleidoscope 4.1부터 git 연동해서 변경된 파일을 바로 diff해줄 수 있다고 하네요. 저는 드물게 필요해서 아직 3.8을 쓰는데 4.x부터 구독형으로 바뀌어서 고민되네요 Kaleidoscope 4.1 and Git – Kaleidoscope Blog

> 스위프트 얘기는 아니구요 동적 타입 패러다임이 다시 돌아올 것인가? The Return of Dynamic Typing: Is It Possible? | by Tarek Amr

> WWDC 변화를 시각적으로 그린 노트입니다. 그림 잘 그리고 싶어지는 자료네요 ㅎㅎㅎ The Visual Summary — WWDC23 Part II: OS updates | by Jonny Daenen

> 옛날 얘기 중에 워즈니악과 관련된 글이라서 가져왔습니다. 여전히 가끔씩 WWDC 행사하면 근처에 오기도 하더라구요 Why Did Steve Wozniak Leave Apple? | by Youssef Mohamed

> iOS 개발자 로드맵이라는 기술 키워드 중심 자료입니다. 제가 예전에 만들었던 자료와 크게 다르지 않지만 저도 업데이트 좀 해야겠습니다 :) iOS Developer Roadmap 2023 | by Andres Carmona Ortiz


# 스위프트

> 💎 인덱스 개수가 정해진 집합 컬렉션을 다루는 방법을 소개합니다 Verify collections in Swift with sized index sets | by Phlippie Bosman

> Lazy 방식에 대한 골고루 설명해주는 글이네요 Mastering Swift: A comprensive guide on Lazy variables | by Raúl Ferrer

> 기존 카테고리에 옵씨가 전혀 없었는데 이런 소식이 있으니 당황스럽네요 ㅎㅎ 스위프트와 비교해보는 정도로 살펴보시라고 분류했습니다. 내용은 Cocoa Internals 책에 있는 것과 비슷한 편입니다 Objective-C Internals | Always Processing

> State Management Using Protocol-Oriented Programming + Generics | by Boris


# 설계 구조 : 패턴

> 아키텍처 모델링을 할 수 있는 모델링 도구를 위한 메타모델에 대한 글입니다. A new software architecture metamodel inspired by C4, Agile and TOGAF | by Nikola Schou

> TCA 가 3년만에 1.0으로 출시합니다. 145명의 컨트리뷰터가 983번 PR을 반영했다고 하네요. iOS 17 이나 Observable 매크로를 지원하도록 개선할 계획도 있다고 합니다 Composable Architecture 1.0

> 유스 케이스가 쓸모없어지는 썰에 대해 이야기합니다. 그냥 전달만 하는 구조라면 굳이 필요없겠죠 Why Use Cases are useless. I, Refactor | by Jim Lai

> The Prototype Pattern in Swift. Clone it! | by Steven Curtis


# 뷰 프로그래밍 : SwiftUI

> SwiftUI 기준 어썸 시리즈인데 너무 많네요 ㅎㅎㅎ 😳 Awesome SwiftUI Resources. Articles | by ganeshrajugalla

> 또 다른 TipKit 소개 자료네요. 같이 보시면 좋을 것 같습니다 Discover Apple’s New Framework Called “TipKit” | by Alkin Cakiralar

> Blur 이펙트를 주는 GlassView 예시입니다. 저는 개인적으로 키노트 앱에 Blur 효과를 넣어주길 희망하고 있는데 안 넣어주네요 ㅜㅜ GlassView in SwiftUI | by David Lin

> 키프레임 애니메이션을 구현하는 방법이네요 KeyFrame Animation in SwiftUI 5, iOS 17 using KeyFrameAnimator | by DevTechie

> 약간 로컬라이즈 개발하고 테스트하는 게 막상하면 엄청 귀찮죠 Localization testing in Xcode - SwiftLee

> 일반적으로 로컬라이즈를 시작하기 위한 전반적인 내용을 소개합니다 Localize Your Apps to Support Multiple Languages — iOS Localization in SwiftUI | by Pranay Patel

> SwiftUI 는 처음에는 내비게이션을 고려하지 않았던 것일까요. 내비게이션은 여전히 복잡한 상황이 있는데요. 앱 수준에서, 모듈 수준에서, 뷰 수준에서 내비게이션을 다루는 방식을 제안합니다 Modularised Navigation in SwiftUI — An Enum-based Approach | by Marcel Kulina

> 제 생각만큼 딥 다이브는 아니지만 상태 변화를 표시하는 의존성에 대한 설명이 좋습니다 SwiftUI under the hood. Deep dive into SwiftUI performance | by Omar Radwan

> 내비게이션 스택과 스프릿뷰에 대한 상세한 소개입니다 The New Navigation System in SwiftUI | fatbobman

> 여전히 캐캐묵은 글 소재지만 여전히 올라오네요 The Ultimate Showdown: SwiftUI vs UIKit — Revolutionising iOS App Development | by Navdeep Singh

> 미리보기 뷰 작업 핫로딩을 위한 것이지만 점점 계륵처럼 됐다 안됐다 해서 불편한 현실이죠 ㅜㅜ Protocol 로 SwiftUI & Preview 200% 활용하기 | by Lee Di

> Applying metal shader to text in SwiftUI – Augmented Code

> Building an Image Carousel from Scratch with SwiftUI | by Simon Ng

> CoreData, CloudKit integration in SwiftUI a visual guide | by Amit Srivastava

> Create Your Own One Question Survey Using SwiftUI and AirTable | by Chase

> How to show the app icon and version in a SwiftUI view

> ScrollPosition for ScrollView in iOS 17 and SwiftUI 5 | by DevTechie

> Themes in SwiftUI App | by Rajesh Budhiraja

> Working with MapKit and Annotation for SwiftUI | by Simon Ng

# 뷰 프로그래밍 : UIKit

> UIKit 요소를 SwiftUI처럼 체인닝으로 다루는 예제입니다. 애플이 안해주니까 다양한 방식이 혼재하는 것 같네요 Creating and Modifying UIKit Components Like in SwiftUI | by Boris

> UIKit에 SwiftUI 뷰를 넣을 경우 데이터 전달을 위해서 양방형 소통을 다루는 예시입니다. Embedding SwiftUI view in UIKit views | by Michał Ziobro

# 맥용 AppKit

> 맥용 AppKit과 SwiftUI를 비교하는 보기드문 글이네요. UIKit과 다르게 드물게 AppKit이 업데이트가 되긴 하지만 생각해 볼 만한 부분도 있네요 milen.me — AppKit vs SwiftUI: Stable vs Shiny

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

> 💎 최근에 공유된 SwiftData 관련 글 중에 가장 상세한 글인 것 같습니다 The Ultimate Guide to Building SwiftData Applications | by Mohammad Azam

> Core Data가 Objective-C 런타임이 필요했다면 SwiftData는 스위프트 런타임으로 옮겨놓은 느낌입니다. SwiftData는 CoreData 프레임워크를 사용하지 않더라구요 A Beginner’s Guide to SwiftData in iOS 17 | by Simon Ng

> 점점 앱 스토어에서 앱을 판매할 수 있는 BM이 다양해졌습니다. 단순히 일회성 구매 말고도 구독 모델로 바뀌고 있고, 그러면서 할인해서 써볼 수 있는 무료 또는 유료 기간을 제공해주는 방식도 가능하죠 A Guide to Implement Offer Codes in iOS | by Shilpriya Shah

> 사파리가 있지만 웹뷰로만 접근했던 시절부터 SFSafariViewController가 어떻게 다른지 설명해주는 글입니다 A Simple Guide to Safari View Controller and More (SwiftUI) | by Ed

> 온보딩 화면을 주로 이미지로 처리하는 게 국룰(?)이었다면 이제 TipKit 프레임워크에서 popover 또는 in-line 형식으로 표현할 수 있습니다. 접근성 측면에서 너무 환영할 만한 일입니다 Adding teachable moments to your apps with TipKit

> 콤바인으로 Moya 구조와 비슷한 네트워크 계층 구현하기 예제와 설명입니다 Building a network layer using Combine iOS, with a structure similar to Moya | by Islam Moussa

> 푸시 관련 글이지만 어떻게 보내는지만 있는 건 아니고, 집중 Focus 기능을 고려해서 푸시 보낼 때 단계별로 구분하자는 개념적인 내용이 포함되서 좋습니다 Mindful Notifications: Finding Balance with iOS Focus Feature and APNS Interruption-Level | by Santosh Botre

> VisionOS 앱 만들어 본 짧은 소개글입니다 My First VisionOS Application. Learn some basics of VisionOS | by Sung-Jie Hung 洪崧傑

> 기기간 직접 통신을 도와주는 Multipeer Connectivity 프레임워크 관련 글입니다 Share data across devices without internet access. iOS Multipeer Connectivity | by Boris

> 오프라인 접근을 위해서 WKWebView 내용을 저장해주는 방식이네요 Storing WKWebView content for offline access in your iOS app | by Baha Abisheva

> 이제 새로 나온 프레임워크라 다양한 사례가 공유되야 할 것 같은데요. 자동 저장 또는 중복 저장을 막는 방법을 설명하는 짧은 글입니다 SwiftData Saving Changes

> 애플에서 제공하는 기계 학습 라이브러리와 기술 용어에 대한 간단한 소개입니다. 다만 책 목차 수준이라 내용이 전혀 없네요 The Machine Learning Landscape on iOS | Swiftjective-C


# 접근성

> SwiftUI 콤포넌트에 접근성 설정을 위해 계층별 Id 조합 방법과 아이디어 을 소개합니다 Composing Accessibility Identifiers for SwiftUI Components | by Kamil Wyszomierski

> 올해 소개된 Assistive Access에 대한 소개글입니다. 애플 앱들이 동작하는 것을 보니까 앱 사용의 본질이 무엇인가 생각해보게 됩니다. 내가 만든 앱은 가능할까 고민도 되구요 Exploring Assistive Access | Bas

# 개발 환경

> 💎 Xcode 디버그 콘솔이 개선되면서 OSLog와 구조적 통합 로그 분석이 가능하다는 소개 글입니다. Xcode Debug Console Tour: Exploring All Options - SwiftLee

> 💎 엑스코드 로그를 구조적으로 분석하는 방법인데 중간에 XCLogParser라는 오픈소스도 소개하고 있습니다 How to parse Xcode logs | Better Programming

> 앱 성능 향상을 위해 고려할 방법들을 나열한 글입니다. 무려 170가지를 나열하고 그 중에 일부는 상세하게 설명하고 있습니다. 다음 편이 있는지 까지는 찾아보지 못했는데 고려해볼 만한 부분은 있는 것 같습니다 150+ ways to improve performance of iOS Application — I | by Shrawan K Sharma

> 이번에 새로 추가되는 기능 또는 기술들을 짧게 소개하는 글입니다 8 Tidbits from Apple WWDC23 | Medium

> 빌드 넘버를 자동으로 증가시키기 위한 스크립트 방식을 제안합니다. 저는 예전에 커밋 카운트를 빌드넘버로 썼던 적도 있었습니다. Automating Build Number Increments in Xcode with Custom Format: A Practical Guide | by Mateusz Siatrak

> Xcode Cloud를 비롯한 CI/CD 클라우드 SaaS 경험담 정도입니다. 앱 빌드 비용도 결국 비용이라서 장비가 필요할 수도 있고, 클라우드가 충분할 수도 있죠 (물론 클라우드 비용이 넉넉하지 않다는 건 인정할 만하죠) CI/CD for iOS-projects: device or cloud? What’s better, Doubletapp’s take | by Doubletapp

> SPM 플러그인 기능을 활용하면 명령을 실행하거나 빌드 도구를 다룰 수 있습니다. 예제에서는 보호할 데이터를 암호화하고, 암호화한 파일을 다루는 코드를 생성합니다 Crafting a Swift Package Plugin for App Data Protection | by Geor Kasapidi

> 4월달 글이고 Xcode Playground 라서 어느정도 알고 계신 내용들입니다만, Swift Playground 앱과 조금 다른 부분이 무엇인가 훓어보시기 좋을 것 같습니다 Exploring Xcode Playground (Part 1) | fatbobman

> 맥 미니에 설치형으로 깃랩 CI/CD 환경을 설정하는 과정을 설명합니다 How to set up Gitlab CI/CD with Fastlane for iOS-project on a Mac mini | by Doubletapp

> 푸시 플랫폼 개발자가 SDK 개선하는 과정을 정리한 글입니다. 엄청 상세한 내용은 아니고 일반적인 내용이 많습니다 Refactoring our Swift SDK | by Noah Durell

> Ad-Hoc, 개발자 또는 사내 배포를 위한 OTA 배포 지정 방법이네요 Swift | OTA or Over-The-Air distribution of any iOS Application

> Xcode 15부터 로그도 좀 더 구조화되서 그냥 문자열이 아니라 필터링이 수월해질 것 같네요. 드디어 본격적으로 print 대신 OSLog로 넘어갈 시기가 됐나 봅니다 Why you should use OSLog in 2023 | @samwize

# 테스트

> 테스트 관련 시리즈 글 중에 3번째네요. 다른 글도 괜찮아 보입니다 Unit Testing with async/await | by Jacob Bartlett

# 도구/오픈소스 

> 💎 허깅페이스에서 스위프트로 트랜스포머 모델을 지원하는 라이브러리를 공개했습니다. 토크나이저와 Llama2 나 Falcon을 이용한 데모 앱 swift-chat 도 포함되어 있습니다. Releasing Swift Transformers: Run On-Device LLMs in Apple Devices

> 깃헙 Dependabot에서 스위프트 보안 취약성 점검을 해주기 시작했습니다. 그 활용 사례를 공유해주는 글입니다 GitHub embraces Swift and provides code analysis, security alerts and dependency updates for Swift projects

> Factory 라는 의존성 관리 라이브러리를 활용해서 의존성 관리를 하는 방법에 대한 글입니다. 처음에는 팩토리 패턴인 줄 알았는 데 읽어보니 전혀 다른 내용이네요 iOS Development with Factory: The Power of Dependency Injection — Part 1 | by Nicholaus Adisetyo Purnomo

> TipKit 예제를 모아놓은 오픈 소스입니다 jordibruin/TipKit-Examples: An example project for the TipKit framework

> 메탈 쉐이더를 모아놓은 오픈 소스입니다 rafunderscore/metallurgy: a collection of metal shaders taking advantage of the brand new visual effect added in the iOS 17 beta


# 디자인 

> 이제 Z축으로 깊이를 스크롤하는 시대를 준비해야 할까요? 아직 비전 프로 구경도 못해봤는데 말이죠 ㅎㅎㅎ Get ready for depth scrolling | by Christina Goodwin

> App Design Inspiration 119 | UI UX Design Firm

> App Development Inspiration 186 | Hybrid Mobile Company

> UX Diary: Onboarding without onboarding | Filip Němeček

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