장바구니 담기 close

장바구니에 상품을 담았습니다.

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

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

  • 피터 프리제
  • |
  • 에이콘출판
  • |
  • 2025-05-29 출간
  • |
  • 444페이지
  • |
  • 188 X 235mm
  • |
  • ISBN 9791161759739
판매가

30,000원

즉시할인가

27,000

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
27,000

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평

◈ 이 책에서 다루는 내용 ◈

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


◈ 이 책의 대상 독자 ◈

SwiftUI와 컴바인을 사용한 비동기 프로그래밍은 SwiftUI로 애플리케이션을 만드는 모든 사용자를 위한 책이다. SwiftUI 경험이 있고 상태 관리가 어떻게 작동하는지, 뷰 모델과 컴바인을 사용해 앱을 더 효율적으로 만드는 방법을 더 잘 이해하고 싶다면 이 책이 적합할 것이다.


◈ 이 책의 구성 ◈

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


◈ 옮긴이의 말 ◈

SwiftUI, 컴바인(Combine), async/await 기술이 애플 생태계에 도입된 지도 어느덧 수년이 흘렀다. 하지만 번역을 시작할 당시, 국내에서는 컴바인을 본격적으로 다룬 서적을 찾기 어려웠기에 이 책의 번역을 결심하게 됐다.
과거 비슷한 비동기 프로그래밍 개념을 가진 RxSwift가 등장했을 때 많은 개발자가 왜 이러한 기술이 필요한지 이해하기 어려워했던 시기가 있었다. 개념을 이해하더라도 이를 실제 화면 구성에 적용하려면 여러 단계를 거쳐야 했고, 러닝 커브도 상당해 쉽게 접근하기 어려웠던 기억이 난다.
새로운 기술을 익힐 때는 개념뿐만 아니라 실제 화면에서 어떻게 구현되는지, 그리고 왜 이러한 개념이 필요한지를 함께 설명하는 것이 중요하다. 이 책은 이러한 관점에서 매우 효과적으로 구성돼 있다.
특히 이 책은 SwiftUI와 컴바인을 함께 활용하는 방법을 설명하고 있어 비동기 프로그래밍을 좀 더 쉽고 자연스럽게 이해할 수 있게 도와준다. 초급자도 큰 어려움 없이 접근할 수 있는 수준으로 구성돼 있어 SwiftUI와 컴바인을 처음 접하는 경우에도 유용할 것이다.
한 가지 강조하고 싶은 부분은 이 책의 예제를 반드시 직접 타이핑해 따라 해보라는 것이다. 단순히 읽는 것과 실제로 구현해보는 것은 큰 차이가 있다. 대부분의 경우 읽기만 해서는 완벽히 이해하기 어렵다. 직접 예제를 따라 해보면서 개발자의 실력은 더욱 탄탄해진다고 믿는다.
이미 나는 현업에서 SwiftUI, 컴바인, async/await를 적절히 조합해 매우 유용하게 사용하고 있다. 이 책의 목차와 예제를 따라가다 보면 체계적으로 잘 정리된 내용을 통해 실무에 바로 적용할 수 있는 통찰을 얻을 수 있을 것이다.
이 책이 독자 여러분의 개발 여정에 도움이 되기를 바라며, 항상 건강하고 즐거운 개발자 생활을 이어가길 바란다.

목차

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 메서드로 변경
__컴바인에서 비동기 코드 호출
__정리

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.