본문으로 바로가기
태극기이 누리집은 대한민국 공식 전자정부 누리집입니다.
평면표지(2D 앞표지)

SwiftUI와 컴바인을 활용한 비동기 프로그래밍


  • ISBN-13
    979-11-6175-973-9 (93000)
  • 출판사 / 임프린트
    에이콘출판(주) / 에이콘출판(주)
  • 정가
    30,000 원 확정정가
  • 발행일
    2025-05-29
  • 출간상태
    출간
  • 저자
    피터 프리제(Peter Friese)
  • 번역
    Eddie Kwon
  • 메인주제어
    컴퓨터프로그래밍 / 소프트웨어공학
  • 추가주제어
    -
  • 키워드
    #모바일 #비동기 #iOS #애플 #컴퓨터프로그래밍 / 소프트웨어공학
  • 도서유형
    종이책, 반양장/소프트커버
  • 대상연령
    모든 연령, 성인 일반 단행본
  • 도서상세정보
    188 * 235 mm, 444 Page

책소개

이 책은 SwiftUI, Combine, 그리고 async/await를 활용해 Apple 플랫폼에서 선언적이고 반응형 UI를 구축하는 방법을 안내하는 실용서다. SwiftUI의 상태 기반 UI 구성, Combine을 통한 비동기 이벤트 처리, 그리고 async/await를 이용한 네트워크 통신을 체계적으로 설명한다. 초급자부터 중급 개발자까지 단계별로 따라할 수 있는 예제와 함께, 실무에 바로 적용 가능한 아키텍처 설계 방법을 제공한다. SwiftUI와 Combine을 처음 접하는 독자에게도 유용한 입문서로 추천할 수 있다.

목차

  • 1장. SwiftUI: 새로운 시작
    • 왜 새로운 UI 프레임워크인가?
    • SwiftUI 기초
      • 선언적과 명령적
      • 상태 관리
      • 상속 대신 조합
      • 뷰가 아닌 것 빼고는 전부 뷰
      • UI는 해당 상태를 나타낸 함수
    • SwiftUI 빠르게 맛보기
      • 전제 조건
      • 새 SwiftUI 앱 만들기
      • 앱에 인터랙션 추가
      • SwiftUI의 상태 관리를 사용해 UI와 모델 동기화 유지
    • 연습문제
    • 정리

       
  • 2장. SwiftUI 시작
    • 만들 앱
    • 책을 표시하기 위한 뷰 작성
    • 정적 데이터로 뷰 빌드
    • 미리 보기를 사용해 뷰가 의도한 대로 작동하는지 확인
    • 도서 목록 표시
    • 데이터 바인딩 설정
    • 프리뷰 캔버스 조절
    • 코드 재사용
      • Extract Subview를 사용해 코드 리팩터링
      • ContentView 이름 바꾸기
      • 복잡한 코드 방지 작업
    • 뷰와 뷰 수정자
    • 연습문제
    • 팁과 트릭
    • 정리

       
  • 3장. SwiftUI 구성 요소
      • 사용자 인터페이스 뷰
      • 컨테이너 뷰
      • 레이아웃 동작
      • 뷰는 UI에 대한 설명일 뿐이다
    • 뷰 수정자
      • 뷰 구성
      • 하위 뷰에 뷰 수정자 적용
      • 뷰 수정자를 사용해 액션 핸들러 등록
    • 정리

       
  • 4장. 상태 관리
    • SwiftUI에서 상태 관리
    • 바인딩 값 유형
    • 객체 바인딩
    • ObservableObject
    • @StateObject
      • 사용 시기
    • @ObservedObject
      • 사용 시기
    • @EnvironmentObject
      • 사용 시기
    • 정리

       
  • 5장. 리스트에 데이터 표시
    • SwiftUI에서 목록 시작
      • 리스트 행 내부에 또 다른 SwiftUI 뷰 사용
      • 사용자 지정 리스트 행 구축
      • 좀 더 복잡한 리스트 행
    • 동적 리스트
      • 리스트 요소 표시
      • 리스트 항목 수정 허용을 위한 리스트 바인딩
      • 비동기적으로 데이터 가져오기
      • 당겨서 새로 고침
      • 검색
    • 스타일링
      • 리스트 스타일
      • 머리글과 바닥글
      • 리스트 셀
      • 구분선
    • 액션
      • 스와이프 동작으로 삭제
      • 편집 모드를 사용해 항목 이동 및 삭제
      • 스와이프 동작
    • 리스트에서 포커스 관리
      • SwiftUI에서 포커스를 관리하는 방법
      • 목록에서 포커스를 관리하는 방법
      • Enter 키 처리
      • MVVM이란?
      • 빈 항목 없애기
    • 정리

       
  • 6장. 입력 폼 만들기
    • 단순 폼 만들기
    • 폼에 데이터 표시
    • 편집 가능 상태로 만들기
    • 드릴다운 내비게이션
    • 입력 유효성 검사
      • .onChange(of:) 사용
      • 뷰 모델을 사용해 폼 유효성 검사 처리
      • @Binding과 @ObservableObject를 사용해 로컬 소스 오브 트루스를 글로벌 소스 오
      • 브 트루스와 동기화하기
      • 컴바인을 사용해 폼 유효성 검사 수행
    • 정리

       
  • 7장. 컴바인 시작하기
    • 함수형 반응형 프로그래밍이란?
    • 퍼블리셔
    • 서브스크라이버
    • 연산자
    • 연산자 조합
    • 퍼블리셔 합치기
    • 정리

       
  • 8장. 컴바인으로 UI 상태 다루기
    • 컴바인을 이용한 입력 유효성 검사
      • 회원 가입 Form 뷰
      • 뷰 모델
      • 사용자 이름 유효성 검사
      • 유효성 검사 메시지 표시
      • 연산 프로퍼티에 컴바인 파이프라인 캡슐화
      • 비밀번호 검증
      • 모든 코드 종합
    • 연습문제
    • 정리

       
  • 9장. 컴바인을 사용한 네트워크 통신
    • URLSession을 사용해 데이터 읽어오기
    • 컴바인으로 데이터 패치
      • 키 패스를 사용한 튜플 분해
      • 데이터 매핑
      • 컴바인을 사용한 데이터 가져오기의 단순화
    • UI 연결
    • 멀티스레딩 처리
    • 네트워크 접근 최적화
      • 근본 원인 찾기
      • share 연산자를 이용한 퍼블리셔 공유
      • debounce를 사용한 추가적 UX 최적화
      • removeDuplicates를 사용해 동일한 요청을 2번 보내지 않기
    • 하나의 코드로 통합
    • 연습문제
    • 정리

       
  • 10장. 컴바인의 오류 처리
    • 오류 처리 전략
      • 오류 무시
      • 재시도(기하급수적인 백오프 사용)
      • 오류 문구 표시
      • 전체 뷰를 오류 뷰로 덮어버리기
      • 인라인 오류 메시지 표시
    • 일반적인 오류 조건 및 처리 방법
      • 오류 가능성 있는 네트워크 API 구현
      • API 호출과 오류 처리
      • 장치/네트워크 오프라인 오류 처리
      • 유효성 검사 오류 처리
      • 응답 파싱 오류 처리
      • 내부 서버 오류 처리
    • 정리

       
  • 11장. 컴바인 커스텀 연산자 구현
    • 컴바인 연산자란?
    • 사용자 정의 연산자 구현
    • Delay를 이용한 Retry 연산자 구현
    • 조건부 재시도
    • 지수 백오프를 위한 Retry 연산자 구현
    • 정리

       
  • 12장. 기존 API를 컴바인으로 래핑
    • 사례 연구
    • 컴바인으로 파이어스토어에 접근
      • 뷰 모델 및 게시된 프로퍼티 사용
      • 컴바인으로 API 래핑
    • 나만의 퍼블리셔 만들기
      • PassthroughSubject를 이용한 스냅숏 리스너 래핑
      • Future를 사용해 파이어스토어에서 원타임 패치 구현
    • 정리

       
  • 13장. 스케줄러와 SwiftUI 결합
    • 스케줄러란?
    • 스케줄러의 종류
    • 스케줄러 기본 동작 방식
    • 스케줄러 전환
      • subscribe(on:)로 업스트림 퍼블리셔 제어
      • receive(on:)으로 다운스트림 서브스크라이버 제어
      • 스케줄링에 영향을 미치는 기타 연산자
    • 비동기 작업 수행
    • 다른 API와 통합
      • URLSession
      • 파이어베이스
    • 정리

       
  • 14장. async/await 시작
    • 함수를 사용한 동기식 프로그래밍
    • 클로저를 사용한 비동기 프로그래밍
    • async/await 함수를 사용한 비동기 프로그래밍
      • 비동기 함수 정의 및 호출
      • 비동기 함수를 병렬로 호출
    • 정리

       
  • 15장. URLSession을 사용해 비동기적으로 데이터 가져오기
    • URLSession를 사용한 비동기 데이터 가져오기
    • 비동기 코드 호출
    • Task 뷰 수정자
    • 사용자가 버튼을 탭할 때 비동기 코드 호출
    • 당겨서 새로 고침을 사용해 뷰를 비동기적으로 업데이트
    • Searchable 뷰 및 async/await
    • 메인 스레드에서 UI 업데이트
    • 정리

       
  • 16장. 모든 코드 종합: SwiftUI, async/await, 컴바인
    • 컴바인을 사용해 데이터 가져오기
    • async/await를 사용해 데이터 가져오기
    • 이제 컴바인의 시대는 저무는가?
    • UI 연결...
      • ...컴바인 파이프라인까지
      • ...async/await 메서드로 변경
    • 컴바인에서 비동기 코드 호출
    • 정리

본문인용

◆ SwiftUI로 간단한 UI부터 점점 더 복잡한 UI까지 구축
◆ SwiftUI의 상태 관리 시스템 이해
◆ 컴바인과 스위프트의 새로운 async/await API를 사용해 네트워크에 접근하고, 그 외 비동기 API에 접근
◆ SwiftUI, 컴바인, async/await을 사용해 애플 플랫폼에서 현대적인 애플리케이션 설계와 구조화

 

1부에서는 SwiftUI와 그 상태 관리를 다룬다. SwiftUI의 선언적 접근 방식으로 사용자 인터페이스를 구축하는 방법과 SwiftUI의 반응형 상태 관리로 여러 화면에서 애플리케이션 상태를 동기화하는 앱을 쉽게 작성하는 방법을 살펴본다.
2부에서는 애플의 반응형 프레임워크인 컴바인에 중점을 두고, 컴바인의 작동 방식과 백엔드와 인터페이스하는 UI 및 코드 모두에 사용하는 방법을 알아본다.
3부에서는 스위프트의 새로운 구조적 동시성(async/await라고 더 잘 알려져 있음)과 컴바인과의 관계, 그리고 이를 사용해 URLSession과 같은 비동기 API 및 파이어베이스와 같은 다른 비동기 API와 인터페이스할 수 있는 앱을 구축하는 방법을 다룬다.

서평

나는 오랫동안 iOS 앱을 개발해왔고, SwiftUI는 2019년에 출시되자마자 배우기 시작했다. UIKit보다 훨씬 더 직관적이라 생각해 하루라도 빨리 사용하고 싶었던 기억이 난다. 처음에는 SwiftUI에 대한 문서가 많지 않았고 출시 즉시 바로 뛰어든 우리는 많은 부분을 스스로 알아내야 했다. 그래서 나는 SwiftUI로 앱을 빌드하면서 배운 내용을 블로그에 공유하기 시작했다. 몇 달 후 애플의 SwiftUI 팀에서 프레임워크 작업에 함께 참여하자고 연락이 왔다. 귀중한 경험이었으며, SwiftUI의 내부 작동 방식과 API 뒤에 숨겨진 결정 사항들에 대한 훌륭한 관점을 얻을 수 있었다. 물론 SwiftUI가 완벽하지는 않고 아직 더 발전할 시간이 필요하지만 이미 많은 개발자가 애플 플랫폼용 앱을 개발하는 데 많은 행복과 흥미를 느끼고 있다. 수많은 고민의 흔적이 SwiftUI API로 단순함과 직관적인 형태로 스며들어가 있는데, 이를 통해 플랫폼마다 올바른 기본 동작을 구현할 수 얻을 수 있다.
나는 2022년 4월에 애플을 퇴사하고 닐 코얼레싱(Nil Coalescing) 사에 공동 창립자이자 소프트웨어 엔지니어로 합류했다. 더 이상 SwiftUI 프레임워크에 직접 기여할 수 없다는 점은 조금 아쉬웠지만 내가 개발에 참여했던 API를 사용할 수 있고 다른 iOS 개발자들과 SwiftUI 지식을 공유할 수 있다는 점에서는 정말 행복했다. 애플이 위젯킷이나 스위프트 차트와 같은 새로운 프레임워크를 도입하면서 SwiftUI에 얼마나 많은 투자를 하고 있는지를 보면 SwiftUI의 잠재력이 크다고 생각한다. 또한 수많은 개발자가 SwiftUI를 사용하기 시작했고 애플과 커뮤니티로부터 훌륭한 SwiftUI 관련 콘텐츠를 사용할 수 있게 된 것도 기쁘다. SwiftUI로 작업할 계획이 있다면 SwiftUI와 컴바인을 사용한 이 책은 여러분의 컬렉션에 추가하기에 가치 있는 책일 것이다. 실제 프로젝트에서 비동기 API를 호출하는 것은 중요한 부분이기 때문에 SwiftUI 애플리케이션에서 비동기 API를 호출하는 데 초점을 맞춘 점이 매력적이다. 그리고 피터 프리제는 파이어베이스(Firebase)의 개발자 옹호자로 일하면서 파이어베이스 비동기 API를 많이 실험하고 SwiftUI와 함께 사용하는 방법을 가르쳤기 때문에 이에 대해 이야기할 수 있는 적임자다. 이 책은 컴바인과 스위프트 비동기/대기 API를 모두 사용하는 실용적인 예제로 가득 차 있으며, 네트워킹 또는 로컬 비동기 데이터 처리가 포함된 SwiftUI 앱을 개발하는 데 훌륭한 기초가 될 것이다.
—나탈리아 판페로바(Natalia Panferova)
『Integrating SwiftUI into UIKit Apps』의 저자이자
닐 코얼레싱 사(https://nilcoalescing.com/about/)의 설립자

저자소개

번역 : Eddie Kwon
약 20여 년간 하드웨어 및 모바일 소프트웨어 엔지니어로 LG, SK, 외국계 은행 프로젝트들을 진행했다. 미국 주재원으로 근무하며 Verizon Wireless, NEC와의 협업을 진행했으며, 현재는 글로벌 암호화폐 거래소에서 시니어 엔지니어로 종사 중이다. 한때 kodeco.com 한국어 번역 공식 멤버로 활동했다.
인공지능 세상에 쏟아지는 정보의 홍수 속 흥밋거리를 찾고 모두에게 도움이 되는 프로그래밍을 하고 싶다.
비정기적인 글을 https://code8282.blogspot.com에 정리한다.
저자 : 피터 프리제(Peter Friese)
Windows, J2EE, 웹, Android, iOS 및 Mac에 이르기까지 다양한 플랫폼용 소프트웨어를 구축한 30년 이상의 경력을 가진 소프트웨어 엔지니어다. 현재 구글의 파이어베이스 팀에서 시니어 개발자 애드보킷으로 일하며 iOS 개발자가 iOS 및 Apple의 다른 플랫폼에서 Firebase SDK를 원활하게 사용할 수 있도록 지원하는 업무를 담당하고 있다. 블로그인 peterfriese.dev에서 SwiftUI, 스위프트, Firebase 개발에 관한 글을 쓰고 있으며, X(구 트위터)에서는 @peterfriese로 활동하고 있다.
상단으로 이동
  • (54866) 전북특별자치도 전주시 덕진구 중동로 63