iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제100호 2024년 4월 14일
풍성한 iOS / Swift 관련 소식을 모은 100번째 뉴스레터가 도착했습니다 👏 

흘러가는 소식들과 다양한 관점의 이야기들이 사라지는 게 아까워서 시작했던 뉴스레터가 4년이 지나고 100호를 찍었습니다. 처음에는 어디에서 어떻게 자료를 모으고 정리해야 하나 고민도 많고 정신도 없었습니다. 이제 자료 정리하는 도구도 만들고 분류와 정리하는 방식도 어느 정도 정리가 된 것 같네요. 
2022년 47호부터는 HTML 이외에도 json 형태로 보관해서 앱 데이터로 차곡차곡 쌓아두고 있습니다. 올해에는 꼭 앱으로도 찾아뵐 수 있도록 준비해보겠습니다. 그동안 읽어주시고 소식도 전해주시고 도움주신 모든 분들께 감사 인사를 전합니다. 가끔 한 번씩이라도 관심있는 글 하나라도 있으시면 언제든지 답장주셔도 좋습니다 🙌 
또는 궁금한 것을 질문으로 던져주셔도 좋습니다. 제가 도와드릴 수 있는 것이라면 뉴스레터에 담아볼 수도 있겠죠. 저 혼자가 아니라 함께 풍성하게 채울 수 있으면 더 좋으니까요.
WWDC 24 행사 소식이 공개되었고, 그 사이 행사장에 초대하는 명단도 발표가 됐습니다. 올해는 그 동안 참석하면서 저의 운을 다썼는지 똑 떨어지고 말았습니다. 여기저기 아는 지인들 몇 명이 당첨됐다는 소식을 들으니 대리 만족을 할 수 있을 것 같습니다. 벌써 올해 WWDC에서 발표할 것, 기대한 것들을 적은 글들이 넘쳐나고 있네요. 올해는 비전 프로 쓰고 집에서 봐야할 것 같네요. 그래도 기대됩니다 :) 
매월 둘째, 넷째주 일요일에 뉴스레터를 발행하고 있습니다. 
누구나 함께하는 뉴스레터 저장소 👉 만약 링크가 깨지는 경우는 저장소 이슈에서 확인하실 수 있습니다.
메일링 리스트 가입은 >가입하기 링크< 주변에 소개해주세요 🤩
✋🏻 올해도 애플 개발자 생태계에 있는 커뮤니티분들이 이런저런 행사를 준비중이신 것 같습니다. 레츠스위프트 2024 행사를 함께 만들어갈 준비위원 분들을 모집한다고 합니다. 이전 행사에 참가해보셨고, 또 앞으로 함께 해보고 싶은 게 있는 분들의 관심과 참여를 기다린다고 하네요. 아래 버튼을 눌러서 살펴보세요! 
주제/분류별 소식들
국/해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다.
# 애플

> 근래에 가장 믿어지지(?) 않는 채널이었습니다. 모두가 기다려온 애플 개발자 유투브 채널입니다. Apple Developer - YouTube

> 애플 개발자 학습과 예제 페이지가 개편되었습니다. SwiftUI 예제도 개선되고 VisionOS 앱 예제도 추가됐네요 Learn, Build, and Innovate - Apple Developer

> 여러 임베디드 장치와 MPU에서 동작하는 스위프트 기반 프로그램을 빌드하기 위한 툴체인과 예제 코드를 소개합니다. 임베디드 환경에 적합하게 빌드하기 위한 여러 제약사항들이 눈에 띄네요 Swift.org - Get Started with Embedded Swift on ARM and RISC-V Microcontrollers

> 리눅스 GNOME 플랫폼 앱을 만들기 위한 SwiftUI 와 거의 비슷한 Adwaita for Swift 오픈소스 프로젝트에 대한 소개입니다 Swift.org - Writing GNOME Apps with Swift

# 하드웨어

> 철지난 M1 맥북에어가 월마트에서 저렴하게 판매되고 뒤늦게 그걸 사는 사람들에게 꽤 의미있는 것 같다는 메시지를 전달합니다 If Only We Knew What Apple Silicon Really Meant | by Attila Vágó

> 저도 궁금해서 관심있게 지켜보는 e-Ink 타블렛 reMarkable 2에 대한 글이네요. 전자책 디바이스들 반응속도가 너무 끔찍해서 잘 안쓰게 되는게 필기감이나 디스플레이가 좋다고 하더라구요 The ReMarkable 2 is far more than a writing tablet | by Lewis J Doyle

> 아이폰 15부터 USB-C 포트를 활용할 수 있는 여러 방식들을 소개합니다. 물론 다들 이미 아시는 내용들 일겁니다 You’re (Probably) Underutilizing Your iPhone 15’s USB-C Port | by Nikhil Vemu


# 일반

> 🇰🇷 애자일 방법론이 아니더라도 Lesson Learned 라는 표현을 많이 쓰죠. 성공이든 실패든 우리의 경험이 우리 조직의 경험으로 이어진다면 성장하는 문화가 만들어질 수 있을 것 같습니다 나의 실패경험은 왜 동료에게 도움이 될까?. 지속적인 동료 성장이 가능한 문화 만들기 | DelightRoom

> 💎 제록스 팔로알토 연구소에서 GUI 컴퓨터 알토 시연을 보고 매킨토시와 리사를 만들었다는 일화는 너무나도 유명합니다. 복사기와 프린터를 만든 제록스가 컴퓨터 역사에 큰 영향을 주었지만 과연 실패인가 질문을 던집니다 We Need To Rethink The Myth Of Macintosh And Xerox PARC | by Greg Satell

> 타이탄 프로젝트는 과연 사라진 것일까요. 요즘 자동차는 ECU를 비롯해서 센서 네트워크가 연결된 컴퓨팅 환경을 포함하고 있지만, 애플이 접근하는 방식이 기존 자동차 제조업체들과 쉽게 맞지는 않았을 것 같습니다. Why Apple Killed the $10 Billion Car Project | by Sam Warain

> 와 굉장히 도발적인 제목이군요 ㅎㅎ 이 앱만 있으면 에어드롭은 필요없다.고 강력히 주장합니다. 드래그 앤 드롭으로 왠만한 건 다 처리하나 봅니다 AirDrop is dead. This app has replaced it. | by a place of mind

> 작년부터 애플도 LLM 관련 논문을 계속 내놓고 있습니다. MM1은 Ferret과 또 다른 행보를 보여주네요. 올해는 정말 온디바이스 모델을 공개할까 기대됩니다 Apple Finally Unveils MM1 — A Multimodal AI Model That Can Run On iPhones | by Jim Clyde Monge

> 대화, 화면 정보와 실제 생활 이벤트를 연관시켜서 맥락을 이해하는 모델에 대한 소식도 있었습니다. 다양한 모델을 접해볼 시간이 기대됩니다 Apple’s New ReALM AI Model Is About to Make Your iPhone a Genius | by The Useful Tech

> iOS 18 디자인이 VisionOS 디자인에 영향을 받아서 바뀔 것 같다는 글입니다. 공간에서 사용해야 하는 것과는 다른 느낌이긴 합니다만 ornaments처럼 분리된 영역이 시도될 수도 있다는 생각이 드네요 Exciting iOS 18 Design Leak: Expect VisionOS-Inspired UI Changes on Your iPhone | by Dr. Jason L. Benskin

> 자연어를 원하는 SQL로 바꿔주는 모델을 만드는 과정을 핀터레스트 기술 블로그입니다 How we built Text-to-SQL at Pinterest | by Pinterest Engineering

> 다른 건 몰라도 astropad는 한 번 써보고 싶네요 I Tried 50 New macOS Apps, And These 10 Are Worth Your Time | by The Useful Tech

> WWDC 24 일정이 나오면서 기대하는 분들이 많아졌네요. 이 분은 개발 과정에서 원하는 것들을 모아서 설명하고 있습니다. My Top 10 Wishes for WWDC24 | by Cihat Gündüz

> 올해 초 글이긴 합니다만 중국에서 35세가 넘어가면 개발자로 취업이 어렵다는 다소 충격적인 내용이라 가져와봤습니다. 일반화하기 어렵고 신뢰성 있는 기관에서 발표한 것은 아니지만 35세라는 기준이 참 씁쓸하네요 Programmers over the age of 35 in China are facing unemployment | by Oliver Foster

> 스포티파이가 조용히 있었지만 애플이 결국 EU DMA 관련 변화를 가져오도록 한 것이 아닌가 주장합니다. Spotify Made Apple Do It! | by Andrew Zuo

> 앱 경험을 개선하거나 실험할 때도 그 변화가 통계적인 의미가 있도록 해보자는 글입니다. Statistical significance and its importance with app experiments

> 로직이나 파이널 컷과 다르게 단종된 어퍼처에 대해 아티스트들에게 충분히 매력도 없고 연결되지 못했다고 말합니다 Why Apple KILLED Aperture (But Spared Final Cut Pro) | by Matthew O

> 애플이 법무부 고소에 대해 88페이지 분량에 달하는 답변서를 제출했다고 합니다. 여러 가지 새로운 사실이 밝혀지기도 했는데요, "프로젝트 퍼널" 이라는 애플 워치 확장 프로젝트가 결국 중단된 사례를 설명합니다 “Apple’s Strong Response to the US Department of Justice Complaint” | by Nov Tech

> Nothing but Apple Notes: Exploring Hidden Features | by Denis Volkov


# 스위프트

> 💎 스위프트 5부터 강조했던 ABI 안정성으로 매번 스위프트 관련 라이브러리를 같이 배포하지 않아도 되고, 시스템 라이브러리 버전이 달라져도 호환이 가능해졌죠. (물론 특정 버전이 아니면 빌드 시점에 에러가 나기도 합니다) 특히 @frozen 키워드로 변경을 최소화하는 과정을 설명합니다 Exploring ABI stability, @frozen, and library evolution mode

> 뷰 렌더링과 이벤트 핸들링을 처리하는 @MainActor는 독특한 역할을 담당하죠 SwiftUI Views and @MainActor | Fatbobman

> 스위프트 6에서의 큰 변화를 대비해서 업그레이드를 준비하도록 비교적 상세하게 설명하는 글입니다. Swift 6 upgrade Preparation | by Michael Link

> Actor의 중요한 역할 중의 하나인 isolation과 Protocol로 지정할 수 있는 방법까지 정리가 된 글입니다. 명시적으로 작성하지 않아도 추론이 가능하기 때문에 어떤 값이 어디서 isolation되는지 이해하는 건 앞으로도 중요할 것 같습니다 Swift Isolation Intuition | massicotte.org


# 뷰 프로그래밍 : SwiftUI

> 💎 클로저 자체는 비교할 수 없어서, 객체로 만들고 고유한 Id를 넣어서 다루는 관점은 흥미롭습니다. 다만 SwiftUI 렌더링 문제를 이렇게 풀려고 시도한 것은 또 다른 문제가 되지 않을까 싶네요 Closure Is Evil | by Kurt Lee

> 하위에 포함된 자식 뷰와 다르게 내비게이션 스택에 푸시할 때는 다른 값을 사용하는 경우에 environment 변수에 대한 사항을 설명합니다 Environmental Issues In SwiftUI | by Michael Long

> 키 이벤트를 감시하고 처리하는 방식을 설명합니다 Key press events detection in SwiftUI - SwiftLee

> 업계에서도 종종 사용하고 여전히 서버에서 주도적으로 화면 구성을 담당하기 위한 개발 방식을 선호하는 곳이 있습니다. 당연히도 화면 변화와 흐름 동작을 디자인 시스템으로 잘 만들어야겠죠. Server-Driven UI with SwiftUI | by Pubudu Mihiranga

> Building async button in SwiftUI | Swift with Majid

> Crafting Custom Image Sequences Animation in SwiftUI: A Frame-by-Frame Approach | by Steven Curtis

> Custom Button Styling in SwiftUI | by Alessandro Manilii

> How to avoid using AnyView in SwiftUI

> Identifiable protocol in SwiftUI explained with code examples - SwiftLee

# 프레임워크

> 💎 OSLog를 남기는 방식 이외에 OSLog 저장소에 접근해서 원하는 로그를 필터링해서 검색해오는 방식을 설명합니다 Fetching OSLog Messages in Swift

> 앱 리뷰 받는 화면을 띄우는 건 쉽지만, 평점을 높게 받는 것은 쉽지 않죠. 앱을 사용하다가 와우. 좋다 느낌이 들도로 가치를 전달하고 나서 리뷰 요청을 보내도록 제안합니다 How to (Consistently) Get 4.8* App Ratings | by Jacob Bartlett

> 앱 스토어 구독에서 가족 공유 상태에서는 상태가 배열로 넘어오고 예외처리를 해본 경험을 정리한 글입니다 App Store Subscriptions and Family Sharing • furbo.org

> 로컬 네트워크 사용 권한 여부를 요청하기 위해서 NWBrowser를 사용하는 방식을 설명합니다 Request and check local network permission on iOS and visionOS | Nonstrict

> iOS 17부터 지원하는 개인 목소리 Personal Voice 을 AVFoundation API로 구현하는 방법을 설명합니다. 품질은 떨어지지만 그래도 해볼만 한 것 같습니다. 이런 모델도 점점 좋아지겠죠 Using your Personal Voice (along with system and novelty voices) in an iOS app

> Combine 프레임워크에서 Hot 퍼블리셔와 Cold 퍼블리셔 동작과 비동기 처리에 대한 설명입니다. 두 가지 차이를 알아야 원하는 동작을 기대할 수 있을 것 같습니다 iOS Combine: Hot and Cold Publishers explained | by Pedro Alvarez

> Writing a Swift Network Layer. It’s pretty good | by Steven Curtis

# 맥 개발/AppKit

> 오래만에 AppKit 글이네요. 검색 과정에서 부드러운 스크롤을 처리하기 위한 내용들을 설명합니다 In Search of a Smooth Scroll | Edvinas Byla

# VisionOS

> 🇰🇷 저와 거의 비슷한 시기에 비전 프로를 구매하신 지인의 글입니다. 비전 프로에서 공간 전시를 경험한다면 어떤 느낌일까요? 그리고 그걸 경험하도록 개발해야 한다면 어떤 공간 디자인을 해야할까요? Vision Pro 가 전해줄 수 있는 전시에 대한 경험 | by 용

> visionOS 앱에 SearchBar를 만들면서 UIKit을 연결한 점이 인상적이네요 ㅎㅎ Recreating Apple's beautiful visionOS search bar

> 사람들이 아직 불편하고 비싸고 낯선 외형 때문에도 비전 프로를 취소하지 않을까 하지만, 저자의 생각은 조금 다르네요. 시간이 조금더 필요하겠지만 공간 컴퓨팅이 필요한 시대가 열리겠죠 Will Apple Cancel Vision Pro?. I have some thoughts. | by Mark Ellis

# 개발 환경

> 2024년 iOS 앱 트렌드라는 솔깃한 글이네요. AI 모델이나 ML API가 없었던 것은 아니지만 개발 환경에 더 밀첩해진 것은 확실한 것 같습니다. AR/VR 기술도 VisionOS를 위해서도 더 편해질 것 같구요. 그 외에도 더 향상될 분야들을 설명하고 있습니다 2024 iOS App Trends: The Future Of iOS App Development | by Kostya Stepanov

> 이제 프라이버시 선언 문서 때문에라도 라이브러리를 선택할 때 고려할 점이 늘어나고 체크리스트로 제안합니다 Checklist Before Adding A Library To Your App | by Elye

> 다이나믹 프레임워크로 분리해서 앱 바이너리 크기를 작게 만드는 방식을 설명합니다. 여전히 SPM과 프레임워크 번들 개념을 혼동하는 경우가 많은 것 같습니다. Emerge Tools Blog | Make Your iOS App Smaller with Dynamic Frameworks

> 앱 스토어 커넥트 API를 연결해서 분석 리포트를 찾아서 다운로드하는 과정을 설명합니다 Generate and read analytics reports from the App Store Connect API

> 프라이버시 선언 파일을 쉽게 작성하도 도와주는 manifest-maker 웹 서비스를 활용하는 방법을 설명합니다 How to quickly get a PrivacyInfo.xcprivacy file for your iOS app | by Mick Byrne

> Foodnoms라는 앱을 리팩토링하면서 25개 패키지로 나누고 분리하는 과정을 설명합니다. 결과적으로 나빠진 지표도 있고 용량도 더 커졌다고 하네요 Splitting Up a Monolith: From 1 to 25 Swift Packages

> Xcode 북마크 기능을 활용하면 북마크에 제목을 넣을 수 있네요 Xcode Bookmarks

> 이제 맥에서 터미널의 기본 쉘은 zsh이죠. zsh를 화려하지 않더라도 편리하게 사용하기 위한 플러그인을 소개합니다. 오마이지쉘 정도는 많이들 쓰실 것 같네요 Zsh Top Plugins for Developers: Boost Terminal Productivity | Codimis

# 도구/오픈소스 

> 💎 스위프트 라이브러리에서 제공하지 않지만 편리한 기능들을 모아놓은 오픈소스HandySwift 메이저 버전이 올라갔네요. 다양한 확장 도구를 추가했다고 합니다 Introducing HandySwift 4.0 | by Cihat Gündüz


# 디자인 

> 멋진 디자인 앱을 보고 제가 만들면 왜 저 느낌이 아닐까요 ㅎㅎ Amazing and Flat Mobile Application Design Ideas | TMDesign

> 인도 정부에서 불법적인 디지털 디자인을 어둠의 패턴이라고 정의하고 소비자를 보호하는 가이드라인을 만들었다고 합니다 Dark Patterns are now illegal in India | by Canvs Editorial

> 웹 앱 디자인이지만 아이패드 느낌도 있어서 같이 살펴보기 좋은 것 같습니다 Top-notch and Vibrant Web App Design Examples | TMDesign

> Bright and Top-notch Application Design Ideas | TMDesign

> High-quality and Top-notch UX Designs | TMDesign

> Innovative and Tech-savvy App Design Ideas | TMDesign

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