> 자신의 음악 감상 방식과 스포티파이가 맞지 않아서 떠난다는 글입니다. 어느 때부터인가 구독 서비스가 많아지고 있죠. 그렇지만 나만의 방식으로 콘텐츠를 보고 듣고 소비하는 게 힘들고 플랫폼과 서비스에 맞춰야 하는 게 불편한 지도 모르고 있는 것인가 생각해보게 되는 글이었습니다 Bye Bye, Spotify | by Scott-Ryan Abt
> 최근 구글 맵 품질이 떨어진다는 글을 본적이 있는데, 반면에 (스캇 포스탈이 짤린지 10년이 다 되어가고) 이제는 구글 맵보다 낫다는 평가가 나오나 봅니다. 내비게이션을 카플레이로 연결해보면 정말 편하더라구요 How Apple Maps Won | by Andrew Zuo
> 🇰🇷 KWDC에서도 만나뵐 수 있었던 윤재님이 라인 기술 블로그 글입니다. 발표로 보는 것과 글로 읽는 게 좀 다른 느낌이네요. 인스트루먼츠로 직접 비교해서 보여주는 부분이 너무 좋습니다. 결국 GCD든 Concurrency든 개발자가 실수하면 스레드 폭증하는 현상이 동일하게 발생할 수 있다는 게 놀랍습니다 Swift Concurrency 성능 조사
애플
>
혁신이 없어서(?) 매출 실적은 뭐 여전히 어마어마 하네요. Apple, 3분기 실적 발표 - Apple (KR)하드웨어
>
올해 업데이트되는 macOS 14 Sonoma부터 지원하는 Intel CPU와 주변기기 드라이버가 줄어들어서 결국 해킨토시가 사라질 것 같다는 얘기입니다. Sonoma is the dawn of Hackintosh | by Italo Baeza Cabrera>
아이폰 15에 대한 루머 중에 액션 버튼이 생길꺼라는 루머입니다. 이제 며칠 뒤면 루머를 확인할 수 있겠네요 The iPhone 15 Pro Shutter Button | by M.G. Siegler개발 문화
> 💎
최대한 생산성을 높이기 위한 앱 배치를 고민하는 분 이야기입니다. 이 정도까지 생각하지 못했는데, 아침용 - 업무용 - 개인용 이런 식으로 나눠놓는 것도 괜찮아 보이네요 How I Organized My iPhone Apps for Maximum Productivity | by The Useful Tech>
자신의 음악 감상 방식과 스포티파이가 맞지 않아서 떠난다는 글입니다. 어느 때부터인가 구독 서비스가 많아지고 있죠. 그렇지만 나만의 방식으로 콘텐츠를 보고 듣고 소비하는 게 힘들고 플랫폼과 서비스에 맞춰야 하는 게 불편한 지도 모르고 있는 것인가 생각해보게 되는 글이었습니다 Bye Bye, Spotify | by Scott-Ryan Abt>
최근 구글 맵 품질이 떨어진다는 글을 본적이 있는데, 반면에 (스캇 포스탈이 짤린지 10년이 다 되어가고) 이제는 구글 맵보다 낫다는 평가가 나오나 봅니다. 내비게이션을 카플레이로 연결해보면 정말 편하더라구요 How Apple Maps Won | by Andrew Zuo>
Visual Studio for mac 단종 소식에 주변 분들이 깜짝 놀랐었는데요. VSCode 가 아니라 Xamarin Studio for mac 이었던 Visual Studio for mac이 단종됐습니다. 그만큼 VSCode로 천하통일되는 분위기네요 Microsoft’s phasing out Visual Studio for MacOS, force moves developers to Visual Studio Code | by Tom Smykowski>
맥용 네이티브 앱이 점점 사라지고, 일렉트론이나 웹 앱들이 많아지고 있어서 안타깝다는 글입니다. 애플도 고민이 있겠지만 맥 앱 스토어가 iOS 앱 스토어보다 규모가 작고 활성화되지 못하는 건 아쉽습니다 The death of native Mac apps? | by Dr Vaishak Belle>
UML이 만들어진지도 꽤 옛날 얘기군요. UML을 쓰자말자 보다는 제목처럼 개발자들이 서로의 이해를 돕고 동일한 수준으로 소통할 수 있도록 비주얼 씽킹하고 다이어그램을 그리는 것은 찬성합니다 Visual Thinking for Software Engineers: The Impact of Embracing a Diagram-Oriented Mindset | by Marta Vila Garrido>
앱 스토어에 정말 많은 노트 앱들이 있는데, 종이와 연필의 편리함에 가까운가 실험한 내용입니다. 그럼에도 불구하고 저는 종이와 연필로 메모할 때와 아이패드를 쓸 때를 구분하게 되더군요 Which iPad App Gets Closest to the Convenience of Pen and Paper? | by Will J Murphy>
이 글은 제목보고 너무 뜨끔해서 안 고를 수 없었습니다. 왜 빈 박스를 남겨두게 될까요. 다양한 관점이 재밌네요 ㅎㅎ 여러분들은 어떠신가요? Why do people save their empty Apple boxes? | by Elvis Hsiao설계 구조 : 패턴
> 💎
이번 호에는 유난히 아키텍처에 대한 글이 많은 것 같네요. SwiftUI 뷰 계층에 따라 다층 구조 VM이 필요하게 되면 그걸 ML-MVVM이라고 부르자는 글입니다. 이런 사례가 더 많아지면 좋겠네요 SwiftUI: Multilevel MVVM | by Pedro Alvarez> 💎
조금 극단적이지만 XcodeGen으로 yaml로 프로젝트에 모듈을 추가하면서 작업하는 과정을 전체적으로 보여주네요. How to Modularize an iOS App | by Zafar Ivaev>
스위프트UI를 위한 클린 아키텍처입니다. 다만 계층 구조 설명에서 데이터 계층을 맨 아래로만 설명하는 부분이 아쉽네요 A Beginner’s Guide to Clean Architecture in SwiftUI: Building Better Apps Step by Step | by Wahyu Alfandi>
게임 프레임워크도 iOS 게임을 만들면서 클린 아키텍처를 적용한 경험과 교훈을 공유해줍니다. Clean Architecture in Game Development | by Yan Kalbaska>
MVVM을 정리하고 소개하는 자료입니다. SwiftUI 뷰와 매칭하는 뷰모델을 설계하는 건 뷰 계층 구조에 따라, 모델의 변화율과 메모리 최적화에 따라 점점 복잡해지는 데 그 직전까지만 설명합니다 Introducing MVVM in SwiftUI: How to Easily Implement MVVM in SwiftUI | by Nindya Alita Rosalia>
프로젝트를 하다보면 아키텍처에 대한 고민을 반복해서 하게 되는데요. 여러 가지 관점을 경험해보고 기준을 정하는 것도 좋은 것 같습니다. MVVM이나 TCA가 모든 앱에 적합한 구조가 아닐 수도 있죠 SwiftUI: An In-depth Examination for Real Projects | by Mihail Salari언어 : 스위프트
> 🇰🇷
KWDC에서도 만나뵐 수 있었던 윤재님이 라인 기술 블로그 글입니다. 발표로 보는 것과 글로 읽는 게 좀 다른 느낌이네요. 인스트루먼츠로 직접 비교해서 보여주는 부분이 너무 좋습니다. 결국 GCD든 Concurrency든 개발자가 실수하면 스레드 폭증하는 현상이 동일하게 발생할 수 있다는 게 놀랍습니다 Swift Concurrency 성능 조사> 💎
다양한 정규식을 적용하고 비교해주는 글이라서 좋네요 Named capture groups in Swift regular expressions> 💎
현실적인 예시로 시작해서 액터 모델에 대해 재진입과 간격배치 개념으로 설명합니다. 동작 주체가 여럿일 때 순서와 타이밍을 맞추는 건 간단하지 않으니까요 Advanced Swift Actors: Re-entrancy and Interleaving | by Jacob Bartlett> 💎
스위프트 5.9에 추가되는 것 중에 매크로는 유명(?)하지만, 비교문 말고 비교 표현식이 지원되는 것과 매개변수 팩은 신선하네요 3 Cool new features of Swift 5.9 | by Sagar>
주로 ARC와 관련된 메모리 관리를 간단하게 요약해줍니다 Advanced iOS Memory Management Techniques | Mac O'Clock>
글로벌 static 프로퍼티는 lazy를 넣지 못하는 데, 그 이유가 이미 lazy하게 동작하도록 만들어지기 때문이라는 소식입니다. Hidden feature: static properties — Swift with Vincent>
이제 다음주부터는 분격 매크로를 써먹어 볼 수 있을 것 같습니다. Predicate를 매크로로 다루는 방식을 소개합니다 Predicate Macro in Swift for filtering and searching - SwiftLee>
전반적으로 깔끔한 설명과 간단한 예제 코드로 이해를 도와줍니다. 비슷하지만 동작의 차이점을 비교해주는 부분이 있으면 어땠을까 그 부분이 살짝 아쉽네요 Swift Concurrency | by brenno>
스위프트 사전 타입에서 키는 단지 고유성을 비교하는 게 아니라 캐싱까지 고려해야 하는 게 인상적이네요 Swift High Performance: Dictionary Keys | by Michael Long>
다양한 DSL을 만들기 적합한 Result Buidler를 소개합니다 Swift’s Result Builders. TupleViews and more! | by Steven CurtisSwiftUI
> 💎
약간 지연되서 업데이트되는 상태값에 따라 화면 전환이나 뷰 렌더링이 문제가 될 수 있다는 사례입니다. iOS 17부터는 개선이 된 것 같다고 하는데요, SwiftUI를 하면서 힘들게 하는 부분은 같은 동작이 마이너 버전마다도 달라지는 부분일 겁니다 Issues caused by delayed state updates in SwiftUI | Better Programming>
Complication 시계 화면 만드는 과정을 설명합니다 Adding Complications to Your watchOS App Using SwiftUI | by Amit Srivastava>
앱에@StateObject
를 두고 상태에 따라서 Scene에 rootView를 바꾸는 예제입니다. Changing the Root View in SwiftUI | by Jaykar Parmar>
SwiftUI lazy 그리드와 스택에서 드래그로 재정렬하는 방식을 설명합니다 Enabling drag reordering in SwiftUI lazy grids and stacks | Daniel Saidi>
코어 데이터에 엔트리 데이터가 중복되지 않도록 하기 위한 구조적인 해결 방법을 제안합니다 How To Avoid Creating Duplicate Entries in Core Data in a SwiftUI App: The MVVM Way | by Teresa Bagalà>
타이머로 주기적으로 값을 감시하다가 알려주는 Polling 방식이라니 동작 방식을 이해하는 시도로는 좋지만 저라면 비추할 것 같습니다. 이미 이벤트 루프가 이런 역할을 하니까요 ㅜㅜ Implementing Polling in SwiftUI | by Abdul Karim Khan>
SwiftUI가 스크롤 다루는 게 어려웠는 데, iOS 17부터는 스크롤 관련 새로운 modifier가 추가됩니다 Scroll Programmatically With SwiftUI ScrollView | by Sasha Myshkina>
꽤나 오래된 UndoManager를 SwiftUI에 붙이는 과정을 설명합니다. 중간에 접근성을 고려하는 부분도 인상적이네요 Shake to undo in a SwiftUI app — Dean’s blog>
사이드에 나오는 햄버거 메뉴 구현하고 있습니다. 그 다음에 화면까지는 아니고 딱 메뉴를 보여주는 것까지 입니다 Side Navigation Hamburger/Side Menu In SwiftUI | by Mobile Apps Academy>
UserDefaults를 추상화해주는 AppStorage와 SceneStorage에 대한 설명입니다 Store Codable types in AppStorage | Daniel Saidi>
UIKit과 비슷한 듯 다르게 레이아웃을 처리하는 SwiftUI 뷰들에 대한 예제입니다. Layout 프로토콜로 다룰 수 있는 것을 이해하는 데 도움이 되겠네요 SwiftUI Layout — Cracking the Size | Better Programming>
AnyView 에 대한 꽤 깊이 있는 고민과 사례를 보여줍니다. AnyView 없이도 구현할 수 있지만, 어떤 경우에 필요한 지 설명해줍니다. 중간에 성능 비교도 있으니 살펴보시길 추천드립니다 SwiftUI: Why You Need AnyView | by Michael Long>
iOS 17과 SwiftUI 5에서 추가된 내용들 중에서 Transition과 관련된 내용입니다. Lottie 대신 간단한 애니메이션을 다룰 수 있겠네요 Transition in SwiftUI 5 & iOS 17 | by DevTechie>
저도 처음에 SwiftData가 Core Data에 의존하는 Wrapper인가 싶었는데 조금 다르게 접근했더군요. 필자는 그래서 Core Data의 고급 기능을 다 쓰지 못해서 SwiftDataKit 이라는 Wrapper를 만들었다고 하네요. Unlocking Advanced Core Data Features in SwiftData | ITNEXT>
이제 iOS 17부터 KeyframeAnimator도 도입되서 키프레임 단위로 애니메이션이 가능해집니다 Using KeyframeAnimator in SwiftUI to Create Advanced Animations | by Simon Ng>
키프레임 애니메이션과 함께 추가된 PhaseAnimator로 여러 단계 애니메이션을 처리할 수 있습니다 Using PhaseAnimator to Create Advanced Multi-Step Animations | by Simon Ng>
Dynamic Island & Live Activities in SwiftUI | Medium>
How To Add Search to Your SwiftUI App | by Chase>
How to Embed Photos Picker in iOS Apps with SwiftUI | by Simon Ng>
Mastering SwiftUI & Combine: Building an Effective Login Screen | by Phoenix Developer>
The Mystery of Size | fatbobman>
Theming SwiftUI applications | by Michael KaoUIKit
>
하단에 표시되는 시트 뷰 컨트롤로에 대한 높이를 동적으로 처리하는 방식을 설명합니다 Bottom Sheet View Controller with Dynamic Content Height in iOS | by Mohd Hafiz>
예시는 SwiftUI 입니다만 감각 피드백을 제공하기 위해 UIKit에 추가된 피드백 생성기에 대한 것이라 UIKit에 분류했습니다 SwiftUI Sensory Feedback>
i18n 이라고 써있지만 주로 l10n을 소개하고 있긴 합니다. 새로운 방식에 대한 소개는 아닌 것 같고 LocalizedString을 활용한 방식을 주로 설명하고 있습니다 iOS app Internationalization(i18n) using Swift — Part2 | by Rohit KumarAppKit
>
맥 앱에서 자체적으로 업데이트를 지원할 때 사용하는 Spakle 연동하는 방법입니다 Integrating Sparkle Updater in SwiftUI for macOS | by Alessandro Bortoluzzi비전프로
>
비전 프로에서 동작하는 OpticID 개발 과정을 시작해서 시뮬레이터로 검증하기까지 설명해줍니다. 과연 iOS에도 들어갈려나요? Develop and test OpticID for Vision Pro프레임워크 활용
>
iOS 17부터 사용할 수 있는 팁킷에 대한 소개입니다. 곧 써볼 수 있을려나요 Creating Tips Using the new TipKit Framework in iOS 17 | by Simon Ng>
간단하게 아이클라우드 드라이드에 도큐멘트 파일을 다루기 위한 방법을 소개합니다 How to read write files to iCloud Drive | by Khoa Pham>
Gaining Efficiency with Combine | by Daniel Zhang서버사이드
접근성
개발 환경
> 💎
Xcode 새로운 기능 중에서 UITest를 통해서 접근성 자동 검사(Audit)가 도입된다고 합니다. Xcode 15: Automated accessibility audits>
잘 모르는 LLDB 명령어라고 하는데, LLDB 명령은 잘 쓰다가도 쉽게 잊어버리는 것 같네요. Xcode 15부터 바뀌는 부분은 빠져있긴 합니다 10 Lesser Known LLDB Commands used in iOS App development | by Shubham>
유료 도구지만 엑스코드 내부 빌드 캐시를 전환하도록 도와주는 툴입니다. 브랜치를 바꿀 때마다 인덱스와 빌드 캐시가 따라서 전환되지 못하는 게 꽤 심각한 이슈인데 근본적으로 해결해주는 것인지는 모르겠습니다 Introducing BuildSwitcher: Local Build Caching in Xcode 🚀>
저는 리얼리티 컴포저는 제대로 써본적이 없어서 잘 모릅니다. 꽤나 상세하게 소개해주네요. 그냥 앱이 아니라 3D 콘텐츠를 다뤄야 한다면 흥미로울 만한 내용입니다 Reality Composer Pro. Working in Xcode | by Siamak테스트
> 💎
Quick과 Numbe을 활용해서 BDD로 스펙을 설계하고 테스트하는 과정을 설명입니다. 개인적으로 BDD에서 중요한 것 중에 하나는 통일된 도메인 용어로 스펙을 기술하는 시도인데 기술적인 관점에서만 작성된 것 같긴 합니다. 그래도 BDD가 어떻게 진행되는 지 간접 경험하실 수 있을 것 같네요 An Architecture for Behaviour-Driven Development in Swift | by Manuel Meyer오픈소스/도구
> 💎
스위프트 소스 코드를 파싱하거나 생성하는 도구로 SwiftSyntax 오픈 소스를 활용하는 방식을 소개합니다. 저도 5.5부터 써봤는 데, AST 분석하고 생성하는 용도로 좋습니다. SwiftSyntax: Parse and Generate Swift source code - SwiftLee> 💎
Xcode에서 제공해주는 영문 스펠링 검사기보다 더 광범위하게 검사해주는 명령어 도구를 만들고 있네요 Swift Typo Detector>
테스트할 때 특정 패키지들만 선택해서 테스트하도록 도와주는 오픈소스 도구입니다. XcodeSelectiveTesting | Github디자인
>
코드가 나오긴 하는데 완전 개발이야기도 아니고 완전 디자인 얘기도 아니라서 분류하기 어려웠네요. 제 생각에 좀 더 디자인을 고려하라는 메시지가 중요한 것 같아서 이쪽으로 분류했습니다. Plussing your iOS app | Lickability>
App Development Inspiration 193 | React Native Agency