2026

차주 위치를 실시간으로 공유하는 운송 추적

2026-07-08

배민·우버처럼 차주 위치를 지도에서 실시간으로 공유하는 운송 추적을, 폴링·SSE·WebSocket 중 무엇을 어디에 쓸지 고르고, 끊겨도 화주가 못 느끼게 재연결과 경로 이탈·지도 렌더까지 설계한 기록.

  • 실시간
  • WebSocket
  • 폴링
  • SSE
  • 재연결

WWDC26 워치파티 후기

2026-06-08

6월 8일 밤 시작해 다음 날 새벽까지 이어진 WWDC26 워치파티 기록.

  • WWDC26
  • Apple
  • iOS
  • 워치파티
  • 후기
DOMAINreact-native-bootsplash 내부 동작 원리

react-native-bootsplash 내부 동작 원리

2026-05-13

OS LaunchScreen과 RN 첫 paint 사이의 공백을 메우는 방법.

  • React Native
  • BootSplash
  • LaunchScreen
  • Cold Boot
  • iOS
DOMAINWKWebView와 Android WebView가 화면을 그리는 방식의 차이

WKWebView와 Android WebView가 화면을 그리는 방식의 차이

2026-04-25

같은 페이지가 iOS WKWebView에서는 fragment 앵커 점프 후 위쪽이 빈 화면으로 보이고 Android WebView에서는 멀쩡히 그려진다. 두 엔진의 tile/painting 모델을 따라가며 왜 한쪽에서만 일어나는지 정리한다.

  • iOS
  • Android
  • WKWebView
  • WebView
  • WebKit
DOMAINWWDC20 10040

Data Essentials in SwiftUI (WWDC20 10040)

2026-04-23

Curt Clifton·Luca Bernardi·Raj Ramamurthy가 SwiftUI의 데이터 소유권·source of truth·@State/@StateObject/@ObservedObject·view life cycle을 한 번에 정리한 세션. 내용·코드·맥락을 한국어로 재구성한다.

  • iOS
  • SwiftUI
  • State
  • Binding
  • StateObject
DOMAINWWDC21 10022

Demystify SwiftUI (WWDC21 10022)

2026-04-23

Matt Ricketson·Luca Bernardi·Raj Ramamurthy의 대표 세션. identity·lifetime·dependencies 세 축으로 SwiftUI의 업데이트 규범을 체계화한다. dependency graph가 곧 SwiftUI의 render tree라는 것까지.

  • iOS
  • SwiftUI
  • Identity
  • Lifetime
  • Dependencies
DOMAINWWDC23 10160

Demystify SwiftUI Performance (WWDC23 10160)

2026-04-23

SwiftUI 앱이 느려지는 원인을 진단하는 법. printChanges로 의존성 추적, body 안의 work 제거, List/Table의 identity 수집 메커니즘까지 — 2021 Demystify가 이론이라면 이 세션은 최적화 매뉴얼이다.

  • iOS
  • SwiftUI
  • Performance
  • printChanges
  • List
DOMAINSwiftUI의 Identity · Lifetime · Dependencies

SwiftUI의 Identity · Lifetime · Dependencies

2026-04-23

Omar Radwan의 SwiftUI Under the Hood 번역. Demystify SwiftUI 세션(WWDC21 #10022 · WWDC23 #10160)의 세 기둥인 identity·lifetime·dependencies를 코드 예제와 함께 정리한다.

  • iOS
  • SwiftUI
  • Identity
  • Lifetime
  • Dependencies
DOMAINWWDC23 10149

Discover Observation in SwiftUI (WWDC23 10149)

2026-04-23

Swift 5.9의 @Observable 매크로는 ObservableObject의 구조적 한계를 뒤집는다. body가 실제로 읽은 property만 추적하는 granular tracking 메커니즘과, @State·@Environment·@Bindable 세 개로 단순화된 property wrapper까지.

  • iOS
  • SwiftUI
  • Observable
  • ObservableObject
  • Bindable
DOMAINA Day in the Life of a SwiftUI View

A Day in the Life of a SwiftUI View

2026-04-23

SwiftUI의 view tree → render tree 변환, .task 재실행 문제와 .id/.task(id:)의 트레이드오프, proposal-reporting 레이아웃 시스템, environment와 preferences의 방향성을 그림 100여 장으로 풀어낸 Chris Eidhof의 강연 정리.

  • iOS
  • SwiftUI
  • RenderTree
  • AttributeGraph
  • Layout
DOMAINVariadic Views in SwiftUI

Variadic Views in SwiftUI

2026-04-23

VStack 안에 여러 뷰를 넣으면 SwiftUI는 그걸 어떻게 들고 있을까. TupleView·_VariadicView.Tree·UnaryViewRoot/MultiViewRoot의 구분, 그리고 List가 행 사이에 Divider를 끼워 넣을 수 있는 이유까지.

  • iOS
  • SwiftUI
  • VariadicView
  • TupleView
  • ViewBuilder
DOMAINRxSwift에서 Combine으로 넘어가며 정리한 것들

RxSwift에서 Combine으로 넘어가며 정리한 것들

2026-04-23

  • iOS
  • Swift
  • RxSwift
  • Combine
  • 반응형 프로그래밍
DOMAINSwiftUI의 내부 동작 원리

SwiftUI의 내부 동작 원리

2026-04-23

View tree, Attribute Graph, _UIHostingView까지 — SwiftUI가 선언형 뷰를 실제 UIKit·Core Animation 위에 매핑하는 내부 구조를 따라간다.

  • iOS
  • SwiftUI
  • CoreAnimation
  • CATransaction
  • AttributeGraph
DOMAINiOS 앱 샌드박스와 Extension 정리

iOS 앱 샌드박스와 Extension 정리

2026-04-22

  • iOS
  • App Sandbox
  • App Extension
  • Entitlements
  • App Group
DOMAINWKWebView의 내부 동작 원리

WKWebView의 내부 동작 원리

2026-04-14

  • iOS
  • WKWebView
  • WebKit2
  • JavaScriptCore
  • IPC
DOMAINUIKit의 내부 동작 원리

UIKit의 내부 동작 원리

2026-04-04

Runloop, CATransaction, Core Animation layer tree 등 UIKit이 화면을 그리기까지의 내부 동작을 파이프라인 단계별로 정리한다.

  • iOS
  • UIKit
  • CoreAnimation
  • CATransaction
  • Runloop
DOMAINAlamofire 제대로 쓰기

Alamofire 제대로 쓰기

2026-03-28

  • iOS
  • Swift
  • Alamofire
  • 네트워킹
  • OAuth
DOMAINKingfisher Under the Hood

Kingfisher Under the Hood

2026-03-28

  • iOS
  • Swift
  • Kingfisher
  • 이미지
  • 캐싱
DOMAINTCA Under the Hood

TCA Under the Hood

2026-03-28

  • iOS
  • Swift
  • TCA
  • Architecture
  • SwiftUI

URLProtocol과 Bonjour로 직접 만든 iOS 실시간 네트워크 디버거

2026-03-24

센디 앱을 개발하면서 네트워크부터 의심해야 하는 순간이 자주 있었습니다. QA에서 올라오는 "API가 느려요" 리포트, 특정 화면에서만 재현되는 빈 응답 같은 문제는 대부분 네트워크 구간을 봐야 답이 나옵니다. 그런데 iOS에서 개발 중인 실기기의 요청을 바로 들여다보는 흐름이 생각보다 매끄럽지 않았습니다. Alamofire나 URLSession에 print 로깅을 달아 놔도 Xcode 콘솔에서 필요한 요청만 골라 읽기…

  • iOS
  • URLProtocol
  • URLSession
  • Alamofire
  • MethodSwizzling
DOMAINiOS 코드 서명 정리

iOS 코드 서명 정리

2026-03-24

  • iOS
  • CI/CD
  • CodeSigning
  • Certificate
  • ProvisioningProfile

GitHub Actions + Fastlane 기반 iOS 배포 자동화

2026-02-14

기능을 만드는 시간보다 빌드를 기다리는 시간이 더 길게 느껴질 때가 있습니다. 코드 한 줄을 고쳐도 확인을 받으려면 앱을 새로 빌드해 전달해야 하고, 이 과정은 수정할 때마다 처음부터 다시 반복됩니다.

  • iOS
  • CI/CD
  • GitHubActions
  • Fastlane
  • Firebase

2025

센디 iOS 앱에 React Native 얹기

2025-11-09

센디는 iOS와 Android 앱을 각각 네이티브로 개발해 왔습니다. 새로운 기능이 추가되면 두 플랫폼에서 동일한 요구사항을 바탕으로 화면과 로직을 구현했습니다.

  • iOS
  • ReactNative
  • 브라운필드
  • 서브모듈
  • 심볼릭링크

Letus Go! 2025 가을 모임 후기

2025-09-27

마루360에서 열린 Letus Go! 가을 모임에 다녀온 기록.

  • Letus Go
  • 개발자 모임
  • iOS
  • 후기
DOMAINReact Native New Architecture의 내부 동작 원리

React Native New Architecture의 내부 동작 원리

2025-08-11

  • iOS
  • React Native
  • New Architecture
  • Fabric
  • JSI
DOMAINReact Native 브라운필드 통합

React Native 브라운필드 통합

2025-07-27

기존 앱에 RN 얹기.

  • iOS
  • React Native
  • Brownfield
  • TurboModule
  • JSI

CRM 캠페인에서 시작한 앱 진입 시스템 구축기 (1): 푸시 알림 수신과 클릭

2025-07-17

앱 진입 시스템 구축기 1편. CRM 캠페인에서 사용한 Notification Service Extension 코드와 2025년 7월 기기 화면 녹화로 이미지 푸시 처리와 탭 이후 흐름을 정리.

  • Push Notification
  • Notification Service Extension
  • ColdStart
  • Rich Push
  • APNs

CRM 캠페인에서 시작한 앱 진입 시스템 구축기 (2): 여러 경로를 모으는 딥링크 라우팅

2025-07-17

앱 진입 시스템 구축기 2편. CRM 캠페인에서 사용한 푸시·Universal Link·OneLink 세 진입 경로를 하나의 매칭 테이블로 모으고, 해석·매칭·내비게이션을 타입별로 분리해 새 캠페인을 테이블 한 줄로 끝낸 라우팅 설계.

  • Deeplink
  • Universal Link
  • URI Scheme
  • AppsFlyer
  • OneLink

CRM 캠페인에서 시작한 앱 진입 시스템 구축기 (3): 웹뷰와 네이티브를 잇는 브릿지

2025-07-17

앱 진입 시스템 구축기 3편. CRM 이벤트 웹뷰 CTA를 네이티브 화면으로 잇는 단일 브릿지 채널과 enum 강제 디코딩으로 무반응을 없애고, 2-depth 웹뷰 스택을 네이티브 네비게이션으로 관리한 기록.

  • WKWebView
  • JSBridge
  • WKScriptMessageHandler
  • 웹뷰 스택
  • Universal Link
DOMAINReact Native iOS 앱 부트스트랩

React Native iOS 앱 부트스트랩

2025-07-13

@main에서 첫 화면까지.

  • iOS
  • React Native
  • Hermes
  • JSI
  • Thread

WWDC25 워치파티 후기

2025-06-10

부산에서 올라와 WWDC25 워치파티에 참석하고 새벽 기차로 돌아온 기록.

  • WWDC25
  • Apple
  • iOS
  • 워치파티
  • 후기

센디 결제카드 스캐너 개발기 (2): 카메라 없이 검증하는 모듈 설계

2025-03-17

카메라와 촬영 화면, 카드 인식 기능을 하나의 모듈에 담고 영상과 합성 이미지로 검증하는 구조를 정리합니다. 입력을 교체하는 지점과 테스트별 확인 범위를 나누고, 실제 기기에 남겨 둔 검증도 설명합니다.

  • iOS
  • SPM
  • 모듈화
  • 테스트
  • CGImage

센디 결제카드 스캐너 개발기 (1): 카메라 프레임에서 카드 정보 추출

2025-02-05

카드 번호를 직접 입력하는 부담을 줄이기 위해 구현한 카메라 스캐너입니다. 프레임 수집과 안내 영역 크롭, Vision 텍스트 인식부터 사용자 확인 화면까지의 처리 과정을 설명합니다.

  • iOS
  • AVFoundation
  • VideoToolbox
  • Vision
  • OCR

제대로 알고 싶었던 한 해 (2024 회고)

2025-01-10

혼자 공부해 온 iOS 지식을 돌아보고, 새싹 과정에서 배우고 설명하며 빈틈을 채운 2024년 회고.

  • 회고
  • iOS
  • 새싹
  • 2024

2024

DOMAINAttributeGraph 풀어 보기

AttributeGraph 풀어 보기

2024-05-28

Apple 이 숨겨 놓은 AttributeGraph 프레임워크를 lldb 로 직접 찔러 본 기록. AG::Graph::print() 심볼을 GraphViz 로 덤프해 state 변경 → dirty 전파 → lazy evaluation → RootDisplayList 갱신까지 실제 그래프로 확인한다. subgraph 가 view tree 의 동적 구조를 어떻게 포장하는지까지.

  • iOS
  • SwiftUI
  • SwiftUI Internals
  • AttributeGraph
  • Debugging

2023

처음 열린 KWDC 2023

2023-08-26

처음 열린 KWDC 2023에 참석해 TCA와 Apple 플랫폼 이야기를 듣고 개발자들을 만난 기록.

  • KWDC
  • TCA
  • localization
  • Apple
  • 컨퍼런스
DOMAINforEach와 IdentifiedArray, 바인딩 변수

컬렉션과 바인딩: forEach와 IdentifiedArray, 바인딩 변수

2023-05-22

  • iOS
  • TCA
  • forEach
  • IdentifiedArray
  • 바인딩
DOMAINiOS 15 대응부터 iOS 16 Stack까지

화면 전환: iOS 15 대응부터 iOS 16 Stack까지

2023-03-27

  • iOS
  • TCA
  • 네비게이션
  • NavigationStack
  • LinkNavigator
DOMAIN배포의 원리와 패키지 관리

배포의 원리와 패키지 관리

2023-03-06

  • iOS
  • xcodebuild
  • ipa
  • CocoaPods
  • 코드서명
DOMAIN의존성 관리와 테스트

의존성 관리와 테스트

2023-01-19

  • iOS
  • TCA
  • 의존성주입
  • 테스트
  • Dependencies

2022

DOMAIN로컬 데이터 저장의 선택지

로컬 데이터 저장의 선택지

2022-11-17

  • iOS
  • UserDefaults
  • FileManager
  • CoreData
  • 저장소
DOMAINState·Action·Reducer·Store와 단방향 흐름

State·Action·Reducer·Store와 단방향 흐름

2022-11-08

  • iOS
  • TCA
  • SwiftUI
  • 상태관리
  • 단방향
DOMAIN실전 구성 팁

실전 구성 팁

2022-09-05

  • iOS
  • SwiftUI
  • ViewBuilder
  • renderingMode
  • LazyVStack
DOMAINSwiftUI 의 diffing algorithm

SwiftUI 의 diffing algorithm

2022-08-18

SwiftUI 가 React 처럼 identifier 나 shortest-edit-script 없이도 대부분의 경우 view 변화를 모호함 없이 판별하는 이유. 비결은 정적 타입. TupleView<(Text, _ConditionalView<A, B>)> 자체가 구조를 드러내므로 같은 타입끼리만 비교하면 된다. Swift 코드로 직접 재구성해 본다.

  • iOS
  • SwiftUI
  • SwiftUI Internals
  • Diffing
  • ViewBuilder
DOMAIN상태로 화면을 제어한다

상태로 화면을 제어한다

2022-07-16

  • iOS
  • SwiftUI
  • State
  • Alert
  • Sheet
DOMAINSwiftUI 의 render loop

SwiftUI 의 render loop

2022-05-09

body 평가와 실제 화면 렌더링은 같지 않다. onAppear 가 왜 깜빡임을 만들지 않는지, preference key 기반 커스텀 layout 에서 body 가 두 번 평가돼도 왜 첫 번째는 화면에 닿지 않는지 — CFRunLoop 의 beforeWaiting observer 와 암묵적 CATransaction 의 관계까지 내려가 설명한다.

  • iOS
  • SwiftUI
  • SwiftUI Internals
  • CFRunLoop
  • CATransaction
DOMAIN데이터 흐름의 두 원칙

데이터 흐름의 두 원칙

2022-05-09

  • iOS
  • SwiftUI
  • State
  • Binding
  • ObservableObject
DOMAINSwiftUI 에서 escaping closure 를 쓰지 말아야 하는 이유

SwiftUI 에서 escaping closure 를 쓰지 말아야 하는 이유

2022-05-01

커스텀 container view 를 만들 때 content 를 @escaping closure 로 받을지, 초기화 때 바로 평가해서 view 로 저장할지. 겉보기엔 closure 쪽이 더 효율적이지만 실제로는 @State 최적화와 memoization 이 동시에 깨진다. Rens Breur 가 왜 view 는 이미 함수인지부터 짚고 시작한다.

  • iOS
  • SwiftUI
  • SwiftUI Internals
  • ViewBuilder
  • Memoization
DOMAINMVC와 MVVM

아키텍처 패턴과 선택 (MVC와 MVVM)

2022-04-23

  • iOS
  • 아키텍처
  • MVC
  • MVVM
  • ViewController
DOMAIN타깃액션과 네트워크 데이터로 화면 채우기

타깃액션과 네트워크 데이터로 화면 채우기

2022-04-11

  • iOS
  • UIKit
  • 타깃액션
  • selector
  • Codable
DOMAIN명령형에서 선언형으로

명령형에서 선언형으로

2022-03-18

  • iOS
  • SwiftUI
  • 선언형UI
  • UIKit
  • State
DOMAIN주요 컴포넌트와 MVC

주요 컴포넌트와 MVC

2022-02-22

  • iOS
  • UIKit
  • UITableView
  • MVC
  • delegate
DOMAIN앱은 어디서 시작하는가

앱은 어디서 시작하는가

2022-02-14

  • iOS
  • UIKit
  • AppDelegate
  • SceneDelegate
  • main
DOMAIN옵셔널과 안전한 nil 처리

옵셔널과 안전한 nil 처리

2022-02-13

  • iOS
  • Swift
  • Language
  • 옵셔널
  • 옵셔널바인딩

팀원과 팀장으로 치른 로봇대회

2022-02-01

2020년에는 팀원으로, 이듬해에는 팀장으로 임베디드SW경진대회에 참가해 최우수상을 받기까지의 기록.

  • 회고
  • 임베디드
  • 대회
  • 팀장

2021

DOMAIN메모리 관리와 ARC

메모리 관리와 ARC

2021-12-19

  • iOS
  • Swift
  • Language
  • ARC
  • 순환참조
DOMAIN오토레이아웃과 코드 기반 UI

오토레이아웃과 코드 기반 UI

2021-12-13

  • iOS
  • UIKit
  • AutoLayout
  • 제약
  • 우선순위
DOMAIN값 타입과 참조 타입

값 타입과 참조 타입

2021-10-26

  • iOS
  • Swift
  • Language
  • 구조체
  • 클래스
DOMAIN뷰컨트롤러 생명주기와 화면 전환

뷰컨트롤러 생명주기와 화면 전환

2021-10-19

  • iOS
  • UIKit
  • UIViewController
  • 생명주기
  • 화면전환
DOMAIN뷰와 뷰 계층

뷰와 뷰 계층

2021-08-24

  • iOS
  • UIKit
  • UIView
  • 뷰계층
  • 좌표계
DOMAIN함수는 1급 객체다

함수는 1급 객체다

2021-08-11

  • iOS
  • Swift
  • Language
  • 클로저
  • 고차함수