로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

핵심을 정리한 Swift 3

 [기본 문법부터 옵셔널, 클로저, 동시성과 병렬성까지]
   
지은이 존 호프만   |   출판사 에이콘  |   발행일 2017년 04월 28일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 30,000원27,000원 10%
마일리지 5% 1,500원
발행일 2017-04-28
ISBN 8960779946 | 9788960779945
기타정보 번역서 | 440쪽 | 일반
예상출고일 1일 (근무일기준)
배송비 무료배송
   
일반
종합지수 0p
   
 

[ 요약]

스위프트 3의 전반적인 기능을 설명하고 반드시 알아야 할 내용을 요약해서 정리한 책이다.
적절하고 풍부한 예제들을 곁들어 이해를 돕고 있으며, 처음에는 누구에게나 생소할 수 있는 옵셔널과 클로저 부분도 잘 설명한다.


[ 이 책에서 다루는 내용 ]

■ 연산자와 컬렉션, 흐름 제어, 함수를 포함한 스위프트 3의 핵심 요소
■ 클래스와 구조체, 열거형 생성법
■ 객체 지향 스위프트에 대한 이해와 상속, 프로토콜, 익스텐션 사용법
■ 서브스크립트와 옵셔널, 클로저 이해에 기반한 실용적 개발법
■ 스위프트 3의 신기능인 프로토콜 확장과 에러 처리 사용법
■ Grand Central Dispatch를 사용한 동시성 추가


[ 이 책의 대상 독자 ]

최신 스위프트 버전을 배우고자 하는 개발자를 위한 책이다. 읽고 코딩하면서 배우는 것에 익숙하다면 이 책은 당신을 위한 책이다. 애플 툴에 대한 기본적인 이해가 있다면 도움이 되지만 필수 사항은 아니다.


[ 이 책의 구성 ]

1장, ‘스위프트 소개’에서는 스위프트 프로그래밍을 실험해볼 수 있는 플레이그라운드 실행 방법과 사용법을 알아본다. 기본적인 스위프트 언어의 문법과 적절한 스타일에 대해서도 다룬다.
2장, ‘변수, 상수, 스트링, 연산자’에서는 변수와 상수 사용법을 알아본다. 스위프트의 여러 가지 데이터 타입과 연산자 사용법도 다룬다.
3장, ‘스위프트 컬렉션 및 큐플 타입’에서는 관련 데이터를 저장하기 위해 컬렉션 타입 사용법을 배운다. 컬렉션에는 딕셔너리와 배열이 있다. 스위프트에서 코코아(Cocoa)와 파운데이션(Foundation) 사용법도 살펴본다.
4장, ‘흐름 제어와 함수’에서는 흐름 제어법과 함수에 대해 배운다. 앞으로의 내용을 이해하려면 4장의 개념을 확실히 이해해야 한다. 간단한 Hello World 예제가 목표는 아니다. 이후 작성할 모든 애플리케이션은 흐름 제어문과 함수에 크게 의존한다.
5장, ‘클래스와 구조체’에서는 클래스와 구조체를 비슷하게 혹은 차이가 나게 만드는 것이 무엇인지 알아본다. 또한 접근제어와 객체지향 디자인에 대해서도 살펴본다. 마지막으로 스위프트의 메모리 관리에 대해 다룬다.
6장, ‘프로토콜과 프로토콜 확장’에서는 프로토콜과 프로토콜 확장을 자세히 다룬다. 스위프트에서는 프로토콜 관련 개념이 매우 중요하기 때문에, 확실히 이해하면 유연하고 재사용할 수 있는 코드를 작성하는 데 도움이 된다.
7장, ‘프로토콜 지향 디자인’에서는 스위프트로 작성하는 프로토콜 지향 디자인 모범 사례를 배운다. 내가 저술한 『스위프트와 프로토콜지향 프로그래밍』(에이콘, 2016)도 간략히 소개한다.
8장, ‘Availability와 에러 처리를 통한 안전한 코드’에서는 스위프트의 에러 처리 기능을 다룬다. 이는 안전한 코드를 작성하기 위해 매우 중요한 부분이다. 에러를 처리하고 대응할 때는 일관된 방식이 중요하다. 단 사용자 타입(custom types)에서는 이 기능을 반드시 사용하지 않아도 된다. 애플 역시 자체 프레임워크에서 에러 처리 기능을 사용하기 시작했다. 여러분의 코드에서도 에러 처리를 사용하는 것을 강력히 추천한다.
9장, ‘사용자 정의 서브 스크립팅’에서는 클래스, 구조체, 열거 문법에서의 사용자 정의 서브스크립트(Custom Subscripting) 사용법을 배운다. 서브스크립트를 사용하면 컬렉션에 포함된 요소들을 액세스할 수도 있다.
10장, ‘옵셔널 타입’에서는 옵셔널의 정의와 옵셔널을 벗기는 방법, 옵셔널 체이닝에 대해 배운다. 초보 스위프트 개발자가 처음 만나게 될 가장 혼란스러운 개념 중 하나가 바로 이 옵셔널일 것이다.
11장, ‘제네릭’에서는 제네릭 사용법을 배운다. 제네릭을 사용하면 코드 중복을 피하면서도 유연하고 재사용 가능한 코드를 작성할 수 있다.
12장, ‘클로저’에서는 코드에서 클로저를 정의하고 사용하는 방법을 배운다. 스위프트의 클로저는 오브젝티브C의 블록과 비슷하지만 훨씬 깔끔하고 문법이 쉽다. 클로저 사용 시 강한 참조 사이클을 피하는 방법도 다룬다.
13장, ‘믹스 앤 매치’에서는 믹스 앤 매치(Mix and Match)에 대해 설명하고 오브젝티브C 프로젝트에 스위프트를 포함하는 방법과 그 반대의 경우에 대해서도 설명한다. 오브젝티브C로 작성된 모든 앱과 프레임워크에서 스위프트와 오브젝티브C를 함께 사용하는 것은 매우 중요한 부분이다.
14장, ‘동시성과 병렬성’에서는 Grand Central Dispatch와 Operation Queue를 사용해 애플리케이션에 동시성 및 병렬 처리 기능을 추가하는 방법을 살펴본다. 앱에 동시성 및 병렬성을 추가하면 사용자 경험이 크게 향상된다.
15장, ‘스위프트 포맷과 스타일 가이드’에서는 스위프트 언어 스타일 가이드 정의 및 사용법을 살펴본다. 스타일 가이드가 필요한 엔터프라이즈 개발자를 위한 템플릿을 만드는 데 도움이 될 것이다. 대부분의 기업은 자체 개발한 다양한 언어에 대한 스타일 지침을 가지고 있기 때문이다.
16장, ‘코어 라이브러리’에서는 파일 읽고 쓰기 및 네트워크 기본 요소, JSON 파싱을 포함하는 라이브러리에 대해 설명한다.
17장, ‘스위프트 디자인 패턴’에서는 스위프트에서 구현하는 좀 더 일반적인 디자인 패턴을 설명한다. 디자인 패턴은 일반적인 소프트웨어 개발 문제점을 파악하고 이에 대한 대처법을 제공한다.


[ 지은이의 말 ]

스위프트 팀은 스위프트 3 버전에 들어서면서 개발 경험을 개선시키기 위한 새로운 기능들을 추가했다. 이를 통해 개발자와 사용자 모두 원하는 결과를 좀 더 쉽게 얻을 수 있을 것이다.
본문은 스위프트 3의 주요 기능에 대해 설명하고 있으며 최신 업데이트를 개발에 빠르게 반영하는 방법을 배울 것이다.
오브젝티브C와의 상호 호환성(interoperability) 및 ARC부터 클로져(closure)와 동시성(concurrency)까지 이 고급 스위프트 언어 가이드를 따른다면, 여러분의 전문성은 향상될 것이고 따끈따끈한 스위프트 프로그래밍 언어를 능수능란하게 사용할 수 있을 것이다.
스위프트 개발 요소 중 가장 정교한 프로토콜 확장(protocol extensions)과 에러 처리, 디자인 패턴, 동시성에 대해 깊이 다루고 이를 독자의 애플리케이션에 어떻게 사용하고 적용할지 살펴본다.
더욱 깔끔한 코드 작성과 iOS와 OS X 애플리케이션 성능 향상을 위해서, 까다로운 디자인 패턴과 프로그래밍 테크닉도 사용해 볼 것이다.
책을 다 읽을 때 쯤이면 디자인 패턴과 테크닉을 효과적으로 다룰 수 있을 것이다. 또한 더욱 새롭고 향상된 수준의 iOS와 OS X 애플리케이션을 작성할 수 있을 것이다.

1장. 스위프트 첫걸음

__스위프트란
____스위프트 기능
__Playgrounds
____Playgrounds 시작
____iOS와 OS X Playgrounds
____Playground에서 이미지 사용
____Playground에서 그래프 표시하기
____Playground를 사용하면 안 되는 경우
____스위프트 언어 문법
____주석
____세미콜론
____괄호
____제어문에 대한 중괄호
____대입 연산자는 값을 반환하지 않는다
____조건문과 대입문에서 공백은 선택사항이다
__Hello World
__요약

2장. 변수와 상수, 문자열, 연산자

__변수와 상수
____상수와 변수 선언하기
____타입 안전
____타입 추론
____명시적 타입
____숫자 타입
________정수 타입
________부동 소수점 타입
____불린 타입
____String 타입
____옵셔널 변수
____열거형
__연산자
____할당 연산자
____비교연산자
____산술연산자
____나머지 연산자
____복합 할당 연산자
____삼항 조건 연산자
____논리 NOT 연산자
____논리 AND 연산자
____논리 OR 연산자
__요약

3장. 스위프트 컬렉션과 튜플

__스위프트 컬렉션 타입
__가변성
__배열
____배열 생성과 초기화
____배열 요소 액세스
____배열 카운트하기
____빈 배열 검사
____배열 요소 추가
____배열 요소 삽입
____배열요소 교체
____배열요소 제거
____두 배열 합치기
____배열 뒤집기
____배열에서 서브배열 검색
____배열 요소 한꺼번에 변경하기
____배열 알고리즘
________Sort
________Sorted
________Filter
________Map
________forEach
____배열 순회
__딕셔너리
____딕셔너리의 생성및 초기화
____딕셔너리 값 액세스
____딕셔너리의 키/값 카운팅
____빈 딕셔너리
____키-값 업데이트
____키-값 쌍 추가
____키-값 쌍 제거
__집합
____집합 초기화
____집합에 항목 삽입
____집합의 항목 개수
____집합의 항목포함 여부 체크
____집합 순회
____집합에서 항목 제거
____집합 연산
__튜플
__요약

4장. 흐름제어와 함수

__여기까지 배운 것들
____중괄호
____괄호
__흐름제어
____조건 구문
________if 문
________if-else 문을 사용한 조건 코드 실행
____for 구문
________for-in 문 사용
____while 루프
________while 루프 사용하기
________repeat-while 루프 사용
____switch 구문
____조건문에서의 case와 where 구문
________where 문으로 필터링하기
________for-case 문으로 필터링하기
________if-case 문
____제어이동 명령
________continue 문
________break 문
________fallthrough 문
________guard 문
__함수
____함수 파라미터
____멀티-파라미터 함수
____파라미터 기본값
____멀티 밸류 반환 함수
____옵셔널 값 반환
____외부 파라미터명 추가
____가변 파라미터 사용
____Inout 파라미터
____네스팅 함수
__종합 예제
__요약

5장. 클래스와 구조체

__클래스와 구조체란
____클래스와 구조체의 유사점
____클래스와 구조체의 차이점
____값 vs 참조타입
__클래스 및 구조체 생성
____프로퍼티
____저장 프로퍼티
____연산 프로퍼티
____프로퍼티옵저버
____메소드
__커스텀 이니셜라이저
____내부와 외부 파라미터 이름
____실패가능-이니셜라이저
__상속
__메소드와 프로퍼티 오버라이딩
____메소드 오버라이딩
____프로퍼티 오버라이딩
____오버라이드 방지
__프로토콜
__프로토콜 문법
____프로퍼티 요구사항
____메소드 요구사항
__익스텐션
__메모리 관리
____ARC 작동 방식
____강한 참조 순환
__요약

6장. 프로토콜과 프로토콜 확장

__타입으로써의 프로토콜
__프로토콜의 다형성
__프로토콜과 타입 캐스팅
__프로토콜 확장
__요약

7장. 프로토콜 지향 설계

__요구사항
__객체지향 설계
____프로토콜 지향 설계
____프로토콜 상속
____프로토콜 컴포지션
____Animal-프로토콜 지향 설계
____프로토콜과 where구문
__요약

8장. Availability와 에러 처리를 이용한 안전한 코드 작성

__스위프트 2.0 이전까지의 에러 처리
__네이티브 에러 처리
____에러 표현
____에러 던지기
____에러 잡기
__availability 속성
__요약

9장. 서브스크립팅

__서브스크립트 소개
__스위프트 배열 서브스크립트
__서브스크립트 읽고 쓰기
__읽기전용 커스텀 서브스크립트
__연산 서브스크립트
__서브스크립트 값
__서브스크립트 외부이름
__다차원 서브스크립트
__서브스크립트를 쓰지 않아야 하는 경우
__요약

10장. 옵셔널 타입

__옵셔널 소개
__옵셔널을 사용하는 이유
____옵셔널 선언
____옵셔널 사용
________옵셔널 강제 언래핑
________옵셔널 바인딩
________함수와 메소드, 서브스크립트의 반환 값으로 사용하는 옵셔널
________옵셔널을 함수나 메소드의 파라미터로 사용하기
________guard 문을 사용한 옵셔널 바인딩
________튜플과 옵셔널 타입
__옵셔널 체이닝
____nil 병합 연산자
__요약

11장. 제너릭

__제너릭 소개
__제너릭 함수
__제너릭 타입
__연관타입
__제너릭을 쓰지 말아야 할 경우
__요약

12장. 클로저

__클로저소개
__간단한 클로저
__클로저 간편문법
__스위프트 배열 알고리즘과 함께 사용하는 클로저
__스탠드얼론 클로저(Standalone closure)와 모범 스타일 가이드라인
__기능 변경
__결과에 따른 클로저 선택
__강한 참조사이클 생성
__요약

13장. 믹스 앤 매치 사용법

__믹스 앤 매치란?
__믹스 앤 매치 적용 사례
__동일 프로젝트 내에 스위프트와 오브젝티브C 함께 쓰기
____project 생성
____오브젝티브C 프로젝트에 스위프트 파일 추가
____오브젝티브C 브릿징 헤더 파일 ? part 1
____프로젝트에 오브젝티브C 파일 추가하기
____Messages 클래스 (오브젝티브C)
____오브젝티브C 브릿징 헤더 파일 ? part 2
____MessageBuilder 스위프트 클래스 - 스위프트에서 오브젝티브C 코드 액세스하기
____오브젝티브C 클래스 ? 오브젝티브C에서 스위프트 코드에서 액세스하기
__요약

14장. 동시성과 병렬성

__스위프트에서 동시성과 병렬성
____Grand Central Dispatch
____Calculation 타입
________큐 생성
________async vs sync
________메인큐 함수에서 코드 실행
________asyncAfter 사용
____Operation과 OperationQueue 타입 사용
________BlockOperation 사용
________오퍼레이션 큐의 addOperation() 메소드 사용
________오퍼레이션 클래스 서브클래싱
__요약

15장. 스위프트 포맷과 스타일가이드

__프로그래밍 스타일가이드란?
__자신만의 코딩스타일
____구문 끝에 세미콜론을 쓰지마라
____조건문에 중괄호를 뺀다
____이름짓기
________커스텀 타입
________함수와 메소드
________상수와 변수
________들여쓰기
____주석
____self 키워드
____상수와 변수
____옵셔널 타입
________옵셔널 바인딩
________옵셔널 바인딩을 사용한 다중 언래핑 대신 옵셔널 체인 사용하기
____타입추론 사용
____컬렉션 간편선언
____다중if 문 대신 switch을 사용하라
____주석처리된 코드를 그대로 두지마라
__요약

16장. 스위프트 코어 라이브러리

__애플 URL 로딩 시스템
____URLSession
____URLSessionConfiguration
____URLSessionTask
____URL
____URLRequest
____HTTPURLResponse
____REST 웹 서비스
____HTTP GET 요청 만들기
____HTTP POST 요청 만들기
__Formatter
____DateFormatter
____NumberFormatter
____FileManager
____JSONSerialization
________JSON 문서 파싱
____JSON 문서 생성
__요약

17장. 스위프트의 디자인 패턴

__디자인 패턴이란?
__생성 패턴
____싱글턴 디자인 패턴
________문제점 이해
________해결책 이해
________싱글턴 구현
____빌더 디자인 패턴
________문제점 이해
________해결책 이해
________빌더 패턴 구현
__구조 디자인 패턴
____브리지 패턴
________문제점 이해
________해결책 이해
________브리지 패턴 구현
____파사드 패턴
________문제점 이해
________해결책 이해
________파사드 패턴 구현
____프락시 디자인 패턴
________문제점 이해
________해결책 이해
________프락시 패턴 구현
__행위 디자인 패턴
____커맨드 디자인 패턴
________문제점 이해
________해결책 이해
________커맨드 패턴 구현
____스트래티지 패턴
________문제점 이해
________해결책 이해
________스트래티지 패턴 구현
__요약

존 호프만(Jon Hoffman)
정보통신 분야에서 20여 년의 경력을 쌓았으며, 시스템 관리, 네트워크 관리, 네트워크 보안, 애플리케이션 개발, 설계 분야에서 일했다. 현재 신테크 시스템즈(Syn-Tech Systems)에서 시니어 소프트웨어 엔지니어로 재직 중이다.
2008년부터 iOS 플랫폼을 기반으로 하는 앱을 개발했다. 그중에는 앱스토어에 등록된 앱도 있고 서드파티 및 수많은 기업용 애플리케이션도 있다. 정보통신 분야의 도전이야말로 삶의 원동력이며, 도전을 이겨내는 것보다 그를 더 신나게 하는 일은 없다.
다음 블로그에서 그를 팔로우할 수 있다. (http://masteringswift.blogspot.com / http://myroboticadventure.blogspot.com)
야구와 농구를 즐겨보며, 태권도를 즐기는데 그와 장녀 케일리(Kailey)는 2014년 초 함께 검은 띠를 땄다. 아내인 킴(Kim)도 2014년 겨울 검은 띠를 땄다. 막내딸도 검은 띠를 따기 위해 열심히 노력 중이다.


★ 옮긴이의 말★
번역을 하면서 가능한 원문의 의도를 곡해하지 않으려 많은 노력을 기울였다. 특히 번역하면 오히려 이상해지는 부분은 원문을 병행 표기했다. 이 책은 백과사전식 나열을 지향하고 반드시 필요한 핵심을 정리한 느낌이다. 읽는 데 큰 어려움은 없겠지만 종종 한번에 이해되지 않는 부분도 있을 수 있으므로, 그런 부분은 반드시 코딩을 해본 후 읽어 보길 바란다. 크게 어려운 개념은 아니지만 코딩해보지 않으면 감이 오지 않는 부분도 있을 수 있다. 원서의 저자도 언급한 사항이지만, 특히 옵셔널 부분은 더욱 실습이 필요한 부분이다. 코딩없이 정독을 하는 것은 피아노 교본만 읽고 연주를 해보지 않는 것과 비슷하다고 생각한다.
이 책은 사실상 입문서에 해당하지만 원제의 ‘Mastering’이 뜻하는 것처럼 얕은 지식 전달에 그치지는 않는다. 특히 옵셔널과 클로저 부분을 주의 깊게 읽고 확실한 기초를 다지길 바란다.
얼마간 오브젝티브C와 스위프트는 공존하겠지만, 애플은 스위프트를 굉장히 강력하게 추진하고 있다. 스위프트가 당장 오브젝티브C를 대체할 수는 없겠지만 생각보다 멀지 않은 미래에 그 날이 올 수도 있다. 애플 과거의 유산을 과감하게 청산하는 회사이기 때문이다. 근래 여러모로 스위프트라는 언어를 배워야 할 이유가 늘어나고 있다. iOS를 계속 개발하려면 결국 스위프트를 배워야 할 시점이 도래할 것이다. 지금도 늦지 않았으니 이 책과 함께 스위프트의 기본을 잘 다질 수 있는 기회를 만들길 바란다.

-기존 오브젝티브 개발자들에게

스위프트는 앞으로도 계속 발전하고 개선 사항이 추가될 것이다. 하지만 최신 문법이 정리될 때까지 기다리면 다른 개발자들에게 뒤쳐질 수밖에 없다. 스위프트 개발에 발 맞춰 사용하다보면 추후 업데이트될 스위프트 관련 자료를 이해할 때도 큰 도움이 될 것이다. 초기 문법 대비 많은 것이 바뀌었고 앞으로도 변경의 가능성은 있지만, 스위프트3부터는 소스 호환성을 유지해준다고 하니 조금씩 실전 개발에 적용하기에 가장 적절한 타이밍이 아닌가 생각된다.
하나의 프로젝트 안에 오브젝티브C와 스위프트를 같이 사용해서 개발할 수 있는 믹스 앤 매치(Mix and Match)도 소개하고 있는데, 분량은 작지만 기존 오브젝티브C 개발자들에게 굉장히 유용한 챕터다. 레거시 프로젝트를 스위프트로 변환 할 때 굉장히 유용할 것이다.

-읽는 방식

1장부터 순서대로 읽어도 큰 무리는 없지만, 스위프트를 처음 접하는 경우나 전체적인 느낌을 알고 싶다면 먼저 빠르게 일독을 한 후 흥미가 가는 부분부터 다시 읽어볼 것을 권한다. 특히 옵셔널, 제너릭, 클로저는 처음 접하는 개발자도 있을 텐데, 그 부분을 먼저 읽어보고 처음부터 진도를 나가는 것도 하나의 방법이 될 수 있다.


★ 옮긴이 소개 ★

권석기
국내에서 하드웨어 및 소프트웨어 엔지니어로 십수 년간 일했고, 3년 가량 미국에 가서 팬택(Pantech)의 시니어 엔지니어로 버라이즌 와이어리스(Verizon Wireless), NEC 등과 함께 일하다가 2016년 귀국했다. 또한 RayWenderlich.com 한국어 번역 공식 멤버로 활동하고 있다.
초등학생 시절 애플 2를 만지면서부터 개발에 흥미를 느끼기 시작했고, 학부 시절에는 삼성소프트웨어 멤버십에서 이것저것 만들었다. 8051 마이컴과 씨름하고 납땜으로 밤샘하던 시절 센세이셔널했던 아이팟을 발견한 순간 바로 습작을 만들어 앱스토어에 올리기 시작했다. 현재는 로엔 엔터테인먼트에서 멜론 iOS 뮤직플레이어 앱을 개발하고 있다. 근래에는 빅데이터, 머신 러닝쪽에도 시간을 투자하고 있으며, 영어 교육에도 지대한 관심이 있다.
피아노 연주와 암벽 등반, 골프가 취미다. 계속 움직이고 뭔가 만들어야 스트레스가 풀리는 전형적인 생산형 인간이다.
hallomuze.github.io, swiftweekly.wordpress.com에 비정기적으로 기술 글 또는 번역물을 올린다.
등록된 서평이 없습니다.
엑셀 데이터 활용+분석...
김경자, 송선영
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
 
전체평균(0)
회원평점   회원서평수 0
존 호프만 의 최근 저서
 
스위프트와 프로토콜지향 프로그래밍
22,500원
(10%↓+5%)
 
에이콘 출판사의 신간
스마트 IoT 프로젝트
아구스 쿠니아완 저
22,500원
(10%↓+5%)
 
Azure와 도커를 활용한 마이크로서비스 구현
보리스 숄, 트렌트 스완슨, 댄 페르난데스 저
27,000원
(10%↓+5%)
 
OpenCV 를 활용한 컴퓨터 비전 프로그래밍
로버트 라가니에 저
36,000원
(10%↓+5%)
 
R 딥러닝의 핵심
조슈아 와일리 저
16,200원
(10%↓+5%)
 
아이오닉 2 블루프린트
인더모한 싱 저
27,000원
(10%↓+5%)
 
이메일주소수집거부