iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제80호 2023년 5월 28일
이제 WWDC가 일주일 정도 남았습니다. 그 사이에 iOS 16.5 정식 버전이 올라갔고, Xcode도 14.3.1 RC가 나왔지만 아직 자동 업데이트가 되지는 않네요. 애플 엔지니어들 WWDC 빌드를 마감하고 폭풍전야를 보냈을 것 같습니다. 다음주에 새로운 소식들은 무엇일지 벌써부터 기대가 됩니다. 다음주에는 애플 파크를 방문하고 나서 현장에서 호외 특별 레터를 발행하도록 하겠습니다.
그럼 풍성한 iOS / Swift 관련 소식을 모은 뉴스레터를 시작하겠습니다. 
매월 둘째, 넷째주 일요일에 뉴스레터를 발행하고 있습니다. 
누구나 함께하는 뉴스레터 저장소 👉 만약 링크가 깨지는 경우는 저장소 이슈에서 확인하실 수 있습니다.
메일링 리스트 가입은 >가입하기 링크< 주변에 소개해주세요 🤩

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

> 2023년 디자인 어워드 최종 후보가 공개됐습니다. 디아블로가 포함되어 있네요! Apple Design Award finalists announced - Latest News - Apple Developer

> 접근성 기술로 인지, 음성, 시각을 개선하도록 올해말쯤에 나올꺼라고 미리 발표했습니다. WWDC에서 소개하지 않고 미리 발표한 것도 특이하네요 Apple previews Live Speech, Personal Voice, and more new accessibility features - Apple

# 하드웨어

> 세번째 애플 실리콘 M3가 나올 차례인데 맥 프로 스펙과 함께 궁금한 상황입니다 Apple M3 Chip 2023. A Big Jump To 3 nm! | by Youssef Mohamed

> 과연 애플카는 나올까요? 저도 잘 모르겠지만 쉽지 않은 사업 영역 같습니다 Who Killed The Apple Car? | by Andrew Zuo


# 일반

> 앱 스토어에 피처드 받기 위한 10가지 팁이네요 ㅎㅎ 개인 프로젝트로 만든게 피처드 되는 건 모두가 꿈꾸는 희망이죠! 10 Tips to Get Your App Featured on the App Store - SwiftLee

> 자주 사용하지 않지만 재미가 쏠쏠한 기능들을 소개합니다 8 Insanely Useful macOS Productivity Apps You Never Heard of | by The Useful Tech

> 올해 WWDC가 일주일 정도 남았다보니 인공지능 기술에 대해 애플은 어떤 접근을 할 것인지 궁금하긴 하네요 Apple Intelligence | Bitsplitting.org

> ChatGPT를 이용해서 Mermaid 스크립트를 생성해서 배포 다이어그램을 그리거나, Eraser.io DiagramGPT를 활용하는 방식을 소개합니다 Deployment Diagrams, ChatGPT and Eraser.io DiagramGPT | by David R Oliver

> 일반적인 시스템 설계 구조와 문서를 작성하기 위한 가이드라인입니다. System Design Blueprint: The Ultimate Guide | by Love Sharma

> Flutter가 과연 iOS 개발의 미래가 될 수 있을까 잘 모르겠지만 과감한 제목이라 눈에 띄었습니다 The future of iOS development with Flutter | by Leigha Jarett

> 프라이버시에 대한 가치를 이해하자는 취지의 글입니다. 디지털 세상에서 프라이버시는 너무 쉽게 털리거나 사용자 권한이 사라져가는 것 같습니다 Understanding the price of privacy | by Callie Spears

> iOS 16.5 Released — 10 Things You NEED To Know! | by Nikhil Vemu


# 스위프트

> 💎 콤바인과 스위프트 동시성 기능을 함께 쓰기 위한 방식입니다. AsyncPublisher를 만들어서 동시성을 적용하는 시도가 흥미롭습니다 Collaboration between Combine and async/await | fatbobman

> @available 과 @backDeployed 속성에 대한 설명입니다. 버전에 따라 달라지는 API들을 제어하기 좋은 것 같습니다 API availability in Swift | Swift with Majid

> 오픈소스로 공개된 Foundation 관련 소개글인데 애플 공식 문서 이상은 아닙니다 Apple’s Future Foundation: A Swift, Open Source Evolution | by Ihor Malovanyi

> DI 컨테이너를 간단하게 구현해보면서 의존성을 설명합니다. Swinject 소개도 있어서 좋았습니다 Dependency injection and Singleton. Everything you need to know and a little more | by Ivan Fomenko

> enum 타입의 확장 중에 Associated Values 방식으로 타입을 구조화하는 방법을 설명합니다. 적절한 용도와 문법을 활용하는 것은 필요하지만, 모든 경우에 사용해야 하는 건 아니죠 How to refactor using Associated Values — Swift with Vincent

> 스위프츠 초기에는 NSRange를 대체하는 Range가 없었지만 이제 Range로 다룰 수 있는게 많아졌죠 Ranges in Swift explained with code examples - SwiftLee

> file behavior change in Swift 5.8 | Sarunw


# 뷰 프로그래밍 : SwiftUI

> 💎 뷰 빌더 구조를 직접 구현하면서 어떤 구조인지 설명하는 글입니다. 꽤 상세하고 길지만 쭈욱 따라해보면 SwiftUI 뷰 생성 과정을 이해하기 수월한 것 같습니다 Creating a ViewBuilder imitation | fatbobman

> 어려운 내용이 아니지만 SwiftUI로 작성하다보면 실수하는 것들을 정리한 글입니다 10 More Deadly SwiftUI Mistakes and How to Avoid Them | by Computer Science Diaries

> 앱 컨테이너 바깥에 있는 파일에 접근하는 권한을 판단하는 방식이네요 Accessing Security Scoped Files

> 애플의 여러 플랫폼 상에서 하나의 앱이 동작하도록 만들기 위한 전략을 소개합니다 Building SwiftUI App for Multiple Platforms | Medium

> SwiftUI에서 코어 데이터를 활용하기 위한 연결입니다. 코어데이터를 관리하는 PersistenceManager를 외부에 만들어서 연결하는 구조네요 CoreData in SwiftUI | by Alessandro Manilii

> 포인트프리 유료 가입자 전용 에피소드지만, TCA에서 내비게이션에서 pop할 때 child 효과들을 취소하는 방법을 설명합니다 Episode #236: Composable Stacks: Effect Cancellation

> 텍스트 뷰에서 URL Action을 연결하는 방법인데, 이런 동작을 위해서 view modifier가 계속 추가되야 하는 게 아직은(?) 어색하네요 How to Define Custom URL Actions for SwiftUI Text Views - Swift Senpai

> iOS 16부터 SwiftUI에서도 내비게이션스택을 이용할 수 있어서 MVVM-C로 나눠진 뷰 컨트롤러처럼 다룰 수 있다는 글입니다. How to build UIKit like MVVM-C Coordinator hierarchy with SwiftUI | by Tharindu Ramesh Ketipearachchi

> 이 분 블로그는 엄청 상세하고 예시가 많아서 좋은 것 같습니다. 텍스트 필드에서 포맷과 값 검증에 대한 글입니다 SwiftUI TextField — Formatting and Validation | Medium

> mac용 SwiftUI 앱을 만들 때 NSWindow를 다루기 위해서 NSWindowDelegate 지정하면 메모리 누수가 발생한다는 내용입니다 This Window Is Leaking | Edvinas Byla

> 이런 인터뷰 관련 키워드나 질문-답변을 정리하는 것은 스스로에게만 도움이 되고, 다른 사람이 정리해놓은 것에 의존하는 것은 별로더라구요 Top iOS and Swift Developer Interview Questions for 2023 | by Steven Curtis

> File importing and exporting in SwiftUI | Swift with Majid

> Pop to root view using Tab Bar in SwiftUI | by Timo

> Quiz Game using SwiftUI | by Bartlomiej Lanczyk

> Using Layout protocol to align explicitly positioned views in SwiftUI

# 뷰 프로그래밍 : UIKit

> 🇰🇷 Bottom Sheet 뷰컨트롤러를 구현한 경험을 소개해주셔서 가져왔습니다. 쉽게 보고 사용할 수 있는 오픈 소스 코드가 있더라도 나의 목적이나 의도에 딱 맞는 걸 찾기는 어렵죠 iOS Bottom Sheet (UIKit) | iOS-BottomSheet-Demo 저장소

> 즉시 동작하는 Pan 제스처를 만들기 위한 과정입니다. Instant Pan Gesture Interactions

> UIKit에서 콤바인을 활용해서 리액티브 프로그래밍을 구현하는 예시를 보여줍니다. Introduction to Reactive Programming with Combine | by Matteo Porcu

> UIKit 뷰 생성이나 설정을 SwiftUI처럼 선언적으로 작성할 수 있도록 도와주는 빌더를 구현한 프로젝트 ViewKit 이라고 합니다. 댓글에 UIKit은 죽었으니 그냥 SwiftUI를 배워. 라는 분이 계시지만 깔끔하게 답변하네요. 뭐든지 강요할 필요는 없지 않을까요 ViewKit: A Declarative Functional Approach to UIKit | Medium

# Mac/AppKit
> 맥 개발 이야기지만 Mac Catalyst로 iOS 앱을 맥 앱으로 확장하는 방법에 대한 소개입니다 Mac Catalyst: Seamlessly Extending Your iOS Apps to macOS | by Afsanafarheen
# 프레임워크

> 샤잠 API를 이용해서 오디오나 음악을 구분하도록 도와주는 샤잠 시그니처를 만드는 방법입니다 Generate a Shazam signature with only one line instead of 120 | by Mobile

> SQLite 드라이버로 직접 접근하는 방식에 대한 소개입니다. 코어 데이터가 아니라 직접 DB를 다뤄도 되는 경우가 종종 있으니까요 Using SQLite Directly with Swift. Don’t Core Data me | by Steven Curtis

> Cryptography in iOS Applications: Techniques and Code Examples | by Kelvin Tan

> Handling WebP Images When Using PHPickerViewController - Swift Senpai


# 접근성

> 애플 뉴스로 올라왔던 접근성 개선 항목들을 좀 더 상세하게 설명해줍니다 Apple’s New Accessibility Features Are Simply Mind-Blowing (iOS 17) | by Nikhil Vemu

> 매일 하나씩 접근성 관련된 내용을 공유해주는 데 벌써 Day 192네요 iOS Dev Space

# 개발 환경

> 🇰🇷 민소네님 업무하면서 경험들을 블로그에 남겨주는 옆팀 형같아서 좋네요 ㅎㅎ Tuist와 System Programming Interfaces (SPI)를 이용하여 모듈 의존성 접근을 제어하기

> 스위프트 패키지를 만들어서 관리하는 방법을 정리한 글이네요 Creating a Swift Package: Quick Start Gotchas | Swiftjective-C

> CI 흐름상 깃헙 액션으로 ChatGPT API를 호출해서 리뷰 코멘트를 만드는 과정을 설명합니다 Integrating ChatGPT with GitHub Actions in your CI/CD Flow | by Adolfo

# 테스트

> 코파일럿을 활용해서 TDD 방식으로 구현하면 어떤 장점이 있는지 소개합니다. 중요한 점은 도움을 주는 도구일 뿐 선택과 개선은 개발자의 몫이라는 거네요 Levelling up TDD Swift Development with GitHub Copilot | by Steven Curtis

# 도구/오픈소스 

> Alamofire를 다루는 방식에 대해 요청부터 캐싱, 인증까지 두루 정리한 글이네요 Alamofire — Networking made easy | by Rashad Shirizada

# 디자인 

> Lyft에서 라이브 액티비티로 다이나믹 아일랜드 개발을 위한 디자인 개선 경험을 공유합니다 “That little island changes everything” | by Alexander Savard

> App Development Inspiration 178 | VR Company

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