iOS/Swift 소식을 전해드립니다 💁
레츠스위프트 뉴스레터  제108호 2024년 8월 11일
뜨겁고 습한 여름날 매미소리만큼 풍성한 iOS / Swift 관련 소식을 모은 뉴스레터가 도착했습니다. 
개인적으로 바쁜 업무들이 끝나고 조금 여유를 되찾은 주말입니다. 소식이 많지는 않아서 제 시간에 마무리할 수 있었습니다. 최근 저는 비전 프로와 ARKit에서 사용하는 STL 파일을 3D 프린팅해보는 재미에 빠져있습니다. 10월에 하는 KWDC24에서도 비전 프로와 관련된 내용을 발표할 예정이라서 기념으로 WWDC 모델을 받아서 모델링 바꿔서 프린트해봤습니다. 가상보다 실물이 더 멋진 건 어쩔 수 없네요 ㅎㅎ 
매월 둘째, 넷째주 일요일에 뉴스레터를 발행하고 있습니다. 
누구나 함께하는 뉴스레터 저장소 👉 만약 링크가 깨지는 경우는 저장소 이슈에서 확인하실 수 있습니다.
메일링 리스트 가입은 >가입하기 링크< 주변에 소개해주세요 🤩
주제/분류별 소식들
국/해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다.
# 애플

> 역시 애플 걱정은 할 필요가 없겠군요! Apple, 3분기 실적 발표 - Apple (KR)

# 하드웨어

> 오호 ESP32 컨트롤러 개발 환경이 좀 귀찮은 게 사실인데요. 임베디드 개발에서도 Swift를 본격 사용해볼 수 있겠네요. 저도 올해중에는 꼭 도전해봐야겠습니다 Embedded Swift Tutorial - Getting Started (Everything you need to know)

> PC 시대를 이끌었던 인텔과 마이크로소프트가 뜨거운 x86 칩을 버리고 ARM으로 넘어가기 시작했다는 점을 주목합니다. 10년정도 지나면 정말 인텔 장비는 사라지는 걸까요 (인텔 주가는 무섭 ㅜㅜ) x86 is so 🔥 | by TechHara


# 일반

> 💎 Foodnoms라는 5년된 앱에서 결제를 기준으로 사용자 전환율을 개선하고 실험한 과정을 설명합니다. 국내외를 막론하고 앱 스토어에서 구독과 유료 결제를 유도하기 위한 사례들이 더 많아지면 좋겠습니다 A Paywall Optimization Success Story

> 수학과 과학에서 사용하는 원주율 Pi와 중력가속도 g 상수값이 관련이 있는 이유에 대해 설명하는 글입니다. 이번주에 reddit에서 토론이 길어졌던 글 중에 하나라고 하네요. 누군가 언급처럼 진자 운동을 기준으로 미터를 정하고 계산한 것이 관련이 있어 보이긴 하네요. A wonderful coincidence or an expected connection: why π² ≈ g.

> 재밌는 제목이라서 끌렸습니다. 금요일에 배포하는 것이 위험한 걸까요? 금요일에 배포하는 것이 위험한 걸까요 ㅎㅎ 운영 관점에서도 주말이나 휴일이 끼어있으면 다른 경우가 있죠 Are you scared of deploying on Fridays? | by Raphael Yoshiga

> 애플이 실적을 발표할 때마다 서비스 매출이 늘어나고 있습니다. 전통적으로 웹 서비스를 잘 못만드는 경향이 있었지만 이제는 서비스 매출이 아이폰 매출 절반이 넘었고 그렇게 커져만 가는 서비스 매출을 우려스럽게 보는 분들도 계십니다 Existential thoughts about Apple’s reliance on Services revenue – Six Colors

> 맥을 쓰다가 리눅스로 전환을 하고 싶은 사람들에게 아주 상세한 설명을 남겨주고 있습니다. 요즘은 리눅스 데스크톱도 사용성이 많이 좋아지고 드라이버도 많아져서 또 다른 선택지로 나쁘지 않은 것 같습니다 From Apple macOS to Linux: Operating System | by Can Artuc

> 인디 개발자로 살아가는 것은 어떤 길이 펼쳐질까요. 한동안 iOS 앱 스토어가 팽창할 때는 다양한 사례가 많았는데 이제 점차 드물어진 것 같습니다. swiftlee 정도면 그래도 꾸준히 가능하지 않을까요 Going Indie: From Side Project to Going Independent

> 애플 공식 트레이드-인 프로그램 사용해서 반납해보셨나요? 저는 2번 정도 해봤는데요 당근에 올리는 것보다는 저렴하지만 프로세스는 복잡하지 않은 편이었습니다. My Old Apple Tech Just Saved Me Money. Cool. | by Michael Swengel

> 직접적으로 iOS 관련 내용은 아니고 서버를 호출하는 과정을 비교한 글입니다. 생각해 볼 여지가 있는 것 같네요 Performance Benchmarking: gRPC+Protobuf vs. HTTP+JSON | by Alex Pliutau

> 아이폰 이벤트 다음 이벤트는 M4 기반 맥북 프로, 맥미니, 아이맥이 아닐까 예측하는 루머입니다. macOS 업데이트와 함께 맞춰지지 않을까 예상해봅니다 The Power of Apple’s M4, Redefining Mac Performance | by Jacky

> 이제 UTM SE 에뮬레이터 앱으로 이전 버전 Windows를 설치할 수 있습니다. Windows 11은 몇 가지 제약이 있었는데요 NTDEV라는 해외개발자가 Windows 11 Tiny 버전을 실행하는 데 성공했다고 합니다. 그 내용으로 이제 애플의 폐쇄성이 예전과는 달라졌다고 이야기합니다 Unbelievable! iPhone Can Run Windows Now! | by Jacky

> askwwdc.com 이라는 개인 개발자가 만든 WWDC 데이터 기반 채팅 서비스입니다. 제가 Xcode에 새롭게 들어간 code prediction에 대해 질문했더니 이렇게 답변해주네요. 좌측 상단에서 홈 버튼을 누르고 사용하시면 됩니다 how about code prediction for xcode? | Ask WWDC

> macOS 세콰이어 퍼블릭 베타 경험담입니다. 사용자 관점에서 와우 요소와 기대하는 점을 살 소개하고 있습니다. 이번 퍼블릭 베타는 개발자 베타와 크게 다르지 않고 버그도 적어서 나쁘지 않습니다. macOS Sequoia Public Beta Experience: It Truly Understands the Working Individual | by Jacky

# AI/ML

> iOS 18.1 후기가 또 있네요. 아직은 아이폰 15 프로 계열에서 북미로 지역을 설정하고, 언어도 영어로만 한 상태에서 베타 사용자 신청을 해야 사용할 수 있습니다. 영어가 포함된 경우만 그런지 모르겠지만 한글로 된 긴 문자를 받았는데 한 줄로 요약해주기도 하더군요 AI Comes to Life in iOS 18.1: Apple's Latest Innovations | by Jacky

> AI 도구들이 많아지면서 API 키를 넣고 사용해야 하는 경우가 많아지고 있는데요, AIProxy 라고 키를 절반씩 나눠서 안전하게 엔드포인트에서 처리하도록 돕는 방식에 대해 설명합니다. 그런 AIProxy를 iOS나 macOS에서 사용하는 방식도 설명합니다 Exploring OpenAI: Creating a Proxy with AIProxy for iOS and macOS Apps

> 레거시 코드를 대하는 자세나 마음가짐도 개발팀마다 다른 것 같습니다. 위대한 유산이 될 것이냐 버려야할 쓰레기가 될 것이냐 양분하지 않고 기준을 정하고 개선해 가는 미디엄 iOS 개발팀의 리팩터링 과정이 인상적입니다. How the Medium iOS team works effectively with legacy code | by Zouhair Mahieddine

> 스위프트에서 ARC가 동작해서 retain count가 숨겨져 있을 뿐 사라진 게 아니죠. ARC 동작을 이해하고 문제점을 찾아내거나 개선해야 할 때 기억해야 할 부분을 짚어줍니다 How to Check ARC Counts and Prevent Retain Cycles in Swift | by Steven Curtis

> iOS 18.1 개발자 베타가 공개되면서 애플 인텔리전스 기능을 일부 사용해볼 수 있습니다. 대부분 로컬에서 동작하기 때문에 비행기 모드에서도 동작이 된다고 하네요 Is Apple Intelligence... Intelligent? | by Carl St. James

> 가면 증후군(임포스터 신드룸) 한 번쯤 들어보셨죠? 자신의 성공조차 주변의 실력 있는 사람들 사이에서 운으로 이루었다고 생각하며 느끼는 불안 심리를 말합니다. 개발팀에서도 그런 감정을 느낄 때가 가끔 있는데요 혼자서 고민하시기 보다는 주변에 다른 개발자들과 이야기 나눠보시는 게 어떨까 싶네요. 아참 글의 내용은 클로저 문법과 확장 때문에 그런 감정이 들었다는 얘깁니다 ㅎㅎ The Meme that gave me Imposter Syndrome - by Jacob Bartlett

> What We Still Don’t Understand About Machine Learning | Towards Data Science


# 스위프트

> 💎 스위프트 동시성 관련해서 전체 도구들 - 문법 요소를 하나씩 설명해주는 좋은 글입니다. 특히 비동기 처리를 하기 때문에 문법과 이론적인 내용과 함께 꼭 동작하는 코드와 상황들을 살펴봐야 하더군요. Emerge Tools Blog | Async await in Swift

> count(where:) 조건에 맞는 개수를 알려주는 고차함수가 무척이나 쓸만해 보입니다 Count the number of objects that pass a test in Swift using count(where:)

> 이제 스위프트 6를 맞이하기 위해서 @sendable과 @isolated를 좀 더 명확하게 이해해야 합니다. 더이상 미룰 수 없이 써야 하는 시점이 되어가니까요 ㅎㅎ Non-Sendable types are cool too you know | massicotte.org

> 위에 동시성 글과 함께 읽어보면 좋을 글입니다. 샘플 코드가 조금더 친절합니다 Swift concurrency: async/await — All you need to know from WWDC 21 to 23 | by Paul Bancarel

> 스위프트 포럼에 공지된 내용 중에 드디어 스위프로만 구현한 Foundation 라이브러리 swift-foundation 구현이 완료되서 Swift 6.0에 포함될 예정이라고 합니다. 물론 100% 완전히 다 넘어간 건 아니고 여전히 C 함수를 호출하거나 CoreFoundation을 호출하는 경우가 드물게 남아있다고 합니다. Swift-foundation now available - Related Projects / Foundation - Swift Forums


# 뷰 프로그래밍 : SwiftUI

> 💎 SwiftUI 개발 워크플로우를 향상시켜주도록 도와주는 오픈소스 패키지를 소개합니다. 익숙한 lint나 fastlane도 포함되어 있고 라이센스 생성을 위한 AckGen도 눈에 띄네요 Useful packages to improve your SwiftUI development workflow | by Mobile

> (아마도 안드로이드 개발자가 없어서) iOS 개발자가 안드로이드 앱을 개발해야 할 때 SwiftUI로 구현해서 크로스 컴파일로 배포하기 위한 과정을 설명합니다. 그럼에도 이런 사례가 많아지는 게 좋은것인가 의문을 갖게 됩니다 ㅎㅎ Build Android and iOS Apps with SwiftUI: A Comprehensive Guide. | by Ashish Jain

> 애플은 주로 장점만 이야기하는 경향이 있어서 SwiftUI에 대한 오해를 하는 경우가 꽤 있죠. 저도 글에 나온 것처럼 SwiftUI에 대한 오해가 꽤 있다고 보고 동의합니다. 오히려 SwiftUI가 학습하기에도 제대로 구현하기에도 더 어렵다고 생각하니까요 Common Misconceptions About SwiftUI | Fatbobman

> UIKit에 TabBarController가 있었다면 SwiftUI에는 TabView가 있다고 할 수 있죠. visionOS부터 이런 스타일로 바뀌었는데 살짝 어색하지만 전체적으로 통일할 필요는 있어 보입니다 Getting Started with the Improved TabView in iOS 18 | by Chase

> SwiftUI: Working with Path: Get All Points and Tangents! | by Itsuki

# 뷰 프로그래밍 : UIKit
> 본래 콘텐츠 크기에 맞춰서 보여줘야 하는 것은 당연하지만 내용에 따라 달라져야 한다면 레이아웃을 유연하게 구성해야 하는데 그게 꽤나 귀찮은 일이었습니다. SwiftUI는 모든 뷰가 이렇게 동작하지만 UIKit에서는 오토레이아웃을 적용하더라도 고민해볼 지점이 있으니까요 Understanding Intrinsic Content Size in iOS Development | by Steven Curtis
# 프레임워크

> 아주 짧은 글인데요 Core Data에서 인덱스 설정했던 것처럼 SwiftData에서도 인덱스를 추가할 수 있다고 합니다 SwiftData Indexes

# 접근성

> 💎 카드처럼 뷰가 z축으로 쌓여있는 경우에도 접근성을 고려해서 보여주려면 어떻게 해야할까요. 흥미로운 고민거리인 것 같네요. Accessibility Considerations with Stacked Cards Custom Layout | by Eevis Panula

# 개발 환경

> 서버 연결이나 API 간단하게 테스트할 때 curl 종종 쓸 일이 있는데요. 편리한 옵션들이 많은데 막상 자주 쓰는 옵션은 아닌 경우도 많긴 합니다 10 Examples Why cURL is an Awesome CLI Tool | by Martin Heinz

> LMStudio 와 공개된 LLM 모델을 Xcode 플러그인으로 연결해서 주석을 읽어서 코드를 생성하는 방법을 설명합니다. 중간 중간 코드 조각이 이미지라서 보기에는 괜찮은데 따라해보려면 불편할 수 있을 것 같습니다. 맨 아래 코드 링크가 있다고 해서 들어가보니 저렴하게(?) 판매를 하는군요 AI Integration in Xcode: Creating Extensions with Local LLMs | by Rohit Saini

> 앱 개발은 아니지만 아마존과 구글에서 CI/CD를 바라보는 관점이 서로 다르다는 게 신기합니다. 통합 단계별로 다르게 조직적으로 움직이는 것에서 생각이 많아지는 글이라 가져왔습니다. How Amazon and Google view CI/CD in an entirely different way | by Carlos Arguelles

> UI 테스트 과정에서 메모리 누수를 찾는 방법에 대해 설명하고 CI/CD에서 메모리 그래프 결과를 파싱하는 방법을 설명합니다 How to automatically detect memory leaks on CI/CD using UI tests

> 디버깅할 때 브레이크포인트에 조건을 넣을 수가 있는데 이런 경우 엄청 느려지기도 합니다. 앱에서 GRDB 데이터베이스를 포함해서 디버깅하는 과정에서 더 빠르게 하려고 했던 경험을 소개합니다. Reminder: Conditional Breakpoints are Slow

> SwiftLint 프로젝트가 스위프트 초기 지원을 많이 하던 realm에서 주도했었는데 요즘은 조금 느리게 발전하는 것 같습니다. 일부 기능은 꺼놓고 쓸 수 밖에 없거나 CI/CD 환경에 아쉬운 점도 있다는 글입니다. The best SwiftLint stack with a workaround of the baseline < 0.55.1 | by Christopher Saez

# 테스트

> Xcode에서 에러나 이슈로 표시하는 메시지를 다룰 수 있는 Issue Reporting 라이브러리를 공개했습니다. 내부를 살펴봤는데 Xcode 내부 함수를 호출하기도 해서 재밌네요 ㅎㅎ Unobtrusive and testable issue reporting

# 도구/오픈소스 

> 포인트-프리는 이제 비공식 스위프트 라이브러리 개발팀 느낌이네요 ㅎㅎ 아이디어도 좋고 다양한 시도가 정말 최고인 것 같습니다. SwiftUI 뿐만 아니라 UIKit, AppKit 뿐만 아니라 다른 플랫폼에서도 내비게이션을 도와주는 라이브러리를 공개했습니다 Swift Navigation: Powerful navigation tools for all Swift platforms


# 디자인 

> 새로운 컴포넌트를 만들어서 써야하는 경우가 있겠지만 시스템 컴포넌트를 사용하는 것만으로 가질 수 있는 장점에 대해 이야기합니다. 이런 장점을 유지하면서 커스텀 컨트롤들을 만들 수 있는게 중요한 역량이 아닐까 싶네요 (현실은 바빠서 못하는 경우도 많지만요) App design: 5 benefits of using system components

> Clear and Tech Application Design Ideas | TMDesign

> Data-driven and Seamless User Interface Design Ideas | TMDesign

> Examples | TMDesign

> Flat and Professional Branding Works | TMDesign

> Plain and Unique Dashboard UI Design Ideas | TMDesign

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