리눅스에서 하는 스위프트 개발 [기본 문법부터 클로저, 프로토콜, HTTP 통신까지]
- 원서명Mastering Swift 3 - Linux: Learn to build fast and robust applications on the Linux Platform with Swift (ISBN 9781786461414)
- 지은이존 호프만(Jon Hoffman)
- 옮긴이권석기
- ISBN : 9791161751238
- 35,000원
- 2018년 02월 28일 펴냄
- 페이퍼백 | 508쪽 | 188*235mm
- 시리즈 : acorn+PACKT
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약
리눅스에서 스위프트를 설치하는 방법부터 시작해, 스위프트의 전반적인 기능을 설명한다. 적절하고 풍부한 예제를 곁들어, 반드시 알아야 할 만한 내용을 정리하고 있어 쉽게 이해할 수 있다. 처음에 누구에게나 생소할 수 있는 옵셔널과 클로저도 잘 설명하는 책이다.
이 책에서 다루는 내용
■ 리눅스 플랫폼에서의 스위프트
■ 스위프트 언어의 강력함
■ 적절한 스위프트 설계 테크닉
■ 스위프트 코어 라이브러리의 이해
■ 유명한 디자인 패턴 구현
■ C 라이브러리 연동
■ 싱글보드 컴퓨터에서 스위프트 사용
■ GCD를 이용한 애플리케이션 동시성 구현
■ 스위프트 제네릭 사용
■ 프로토콜 지향 디자인 패러다임의 이해
이 책의 대상 독자
스위프트는 애플이 만든 현대적이고 빠른 오픈소스 언어다. 이 책은 리눅스 개발자가 데스크톱과 서버, 임베디드 리눅스 플랫폼용 애플리케이션을 빠르게 만들기 위해 스위프트 사용법을 배울 수 있다. 읽고 코딩하면서 배우는 데 익숙하다면 이 책은 당신을 위한 책이다. 모든 주제는 예제 코드를 통해 실력 향상을 도모할 수 있다.
이 책의 구성
1장, '스위프트 첫걸음'에서는 스위프트 언어를 간략히 소개한다. 기본 스위프트 언어 문법과 적절한 언어 스타일도 알아본다.
2장, '변수, 상수, 문자열, 연산자'에서는 변수와 상수 사용법을 알아본다. 스위프트의 여러 가지 데이터 타입과 연산자 사용법도 다룬다.
3장, '스위프트 컬렉션과 튜플'에서는 관련 데이터를 저장하기 위해 컬렉션 타입의 사용법을 알아본다. 컬렉션에는 딕셔너리와 배열, 집합이 있다.
4장, '흐름 제어와 함수'에서는 흐름 제어와 함수에 대해 알아본다. 이후 내용들을 이해하기 전에 4장의 개념을 이해하는 것은 필수적이다. 간단한 Hello World 예제가 이 책의 목표는 아니다. 이 책에서 작성할 모든 애플리케이션은 흐름제어문과 함수에 매우 크게 의존한다.
5장, '클래스와 구조체'에서는 클래스와 구조체를 비슷하게 만들거나 차이 나게 만드는 것이 무엇인지 알아본다. 또한 접근 제어와 객체지향 디자인에 대해서도 살펴본다. 마지막으로 스위프트의 메모리 관리에 대해 다룬다.
6장, '프로토콜과 프로토콜 확장'에서는 프로토콜과 프로토콜 확장을 매우 자세히 알아본다. 프로토콜 관련 개념이 스위프트에서 매우 중요하기 때문에 확실히 이해하면 유연하고 재사용 가능한 코드를 작성하는 데 도움이 된다.
7장, '프로토콜 지향 설계'에서는 스위프트로 작성하는 프로토콜 지향 설계 모범 사례를 알아본다. 또 다른 저서 『Swift 3 Protocol-Oriented Programming』(Packt, 2016)도 간략히 소개한다.
8장, '에러 처리 기능을 가진 안전한 코드 작성'에서는 스위프트의 에러 처리 기능을 알아본다. 이는 안전한 코드를 작성하기 위해 매우 중요한 부분이다. 에러를 처리하고 대응할 때는 일관된 방식이 중요하다. 단, 사용자 타입(custom types)에서는 이 기능을 반드시 사용하지 않아도 된다. 애플 또한 자체 프레임워크에서 에러 처리 기능을 사용하기 시작했다. 여러분의 코드에서도 에러 처리를 사용하길 강력히 추천한다.
9장, '커스텀 서브스크립팅'에서는 클래스, 구조체, 열거문에서 커스텀 서브스크립트(Custom Subscript)를 사용하는 방법을 알아본다. 스위프트 서브스크립트를 사용해 컬렉션 요소를 액세스할 수 있다. 클래스와 구조체, 열거형에서 커스텀 서브스크립트를 정의하는 방법도 다룬다.
10장, '옵셔널 타입'에서는 옵셔널의 정의와 옵셔널을 벗기는 방법, 옵셔널 체이닝에 대해 알아본다. 초보 스위프트 개발자가 처음 만날 가장 혼란스러운 개념 중 하나가 바로 이 옵셔널일 것이다.
11장, '제네릭'에서는 코드 중복을 피하면서도 매우 유연하고 재사용 가능한 코드를 작성할 수 있는 제네릭에 대해 알아본다.
12장, '클로저'에서는 코드에서 클로저를 정의하고 사용하는 방법을 알아본다. 스위프트의 클로저는 오브젝티브C의 블록과 비슷하지만 훨씬 깔끔하고 문법이 쉽다. 클로저 사용 시 강한 참조 사이클을 피하는 방법도 다룬다.
13장, 'C 라이브러리'에서는 스위프트 애플리케이션에서 표준 C 라이브러리를 링크하고 사용하는 방법을 알아본다. 이를 통해 스위프트 개발자는 리눅스 개발자가 사용할 수 있는 동일한 라이브러리를 모두 액세스할 수 있다.
14장, '동시성과 병렬성'에서는 GCD(Grand Central Dispatch)를 사용해 애플리케이션에 동시성과 병렬 처리 기능을 추가하는 방법을 알아본다. 앱에 동시성이나 병렬성을 추가하면 사용자 경험이 매우 향상된다.
15장, '스위프트 코어 라이브러리'에서는 파일 읽고 쓰기 및 네트워크 기본 요소, JSON 파싱을 포함하는 라이브러리에 대해 알아본다.
16장, '싱글보드 컴퓨터와 스위프트'에서는 IoT 디바이스와 로봇 개발에 스위프트를 적용하는 방법을 알아본다. 이때 싱글보드 컴퓨터를 이용한다.
17장, '스위프트 형식과 스타일 가이드'에서는 스위프트 언어 스타일 가이드를 정의하고 사용하는 방법을 알아본다. 이는 스타일 가이드가 필요한 엔터프라이즈 개발자를 위한 템플릿을 만드는 데 도움이 될 것이다. 기업 대부분은 자체 개발한 다양한 언어에 대한 스타일 가이드를 갖고 있기 때문이다.
18장, '스위프트에서 디자인 패턴 적용'에서는 스위프트에서 구현하는 좀 더 일반적인 디자인 패턴을 알아본다. 디자인 패턴은 일반적인 소프트웨어 개발 문제점을 파악하고, 이에 대한 대처법을 제공한다.
목차
목차
- 1장. 스위프트 첫걸음
- 스위프트 소개
- 스위프트 기능
- 리눅스에 스위프트 설치
- 스위프트 언어 문법
- 주석
- 세미콜론
- 괄호
- 중괄호
- 할당 연산자는 값을 반환하지 않는다
- 조건문과 할당문에서 공백문자는 선택 사항
- Hello World
- 스위프트 코드 실행
- 스위프트와 스위프트 REPL
- 스위프트 컴파일러
- 스위프트 패키지 매니저 사용
- 스위프트 편집기
- 요약
- 스위프트 소개
- 2장. 변수, 상수, 문자열, 연산자
- 변수와 상수
- 상수와 변수 선언
- 타입 안전
- 타입 추론
- 명시적 타입
- 숫자 타입
- 불리언 타입
- 문자열 타입
- 옵셔널 변수
- 열거형
- 연산자
- 할당 연산자
- 비교 연산자
- 산술 연산자
- 나머지 연산자
- 복합 할당 연산자
- 삼항 조건 연산자
- 논리 NOT 연산자
- 논리 AND 연산자
- 논리 OR 연산자
- 요약
- 변수와 상수
- 3장. 스위프트 컬렉션과 튜플
- 스위프트 컬렉션 타입
- 가변성
- 배열
- 배열 생성과 초기화
- 배열 요소 액세스
- 배열 카운트
- 빈 배열 검사
- 배열 요소 추가
- 배열 요소 삽입
- 배열 요소 교체
- 배열 요소 제거
- 두 배열 합치기
- 배열 뒤집기
- 배열에서 서브배열 검색
- 배열 요소 한꺼번에 변경
- 배열 알고리즘
- 배열 순회
- 딕셔너리
- 딕셔너리의 생성과 초기화
- 딕셔너리 값 액세스
- 딕셔너리의 키-값 카운팅
- 빈 딕셔너리
- 키-값 업데이트
- 키-값 쌍 추가
- 키-값 쌍 제거
- 집합
- 집합 초기화
- 집합에 항목 삽입
- 집합의 항목 개수
- 집합의 항목 포함 여부 체크
- 집합 순회
- 집합에서 항목 제거
- 집합 연산
- 튜플
- 요약
- 4장. 흐름 제어와 함수
- 지금까지 배운 것
- 중괄호
- 괄호
- 흐름 제어
- 조건 구문
- for 루프
- while 루프
- switch문
- 조건문에서의 case와 where문
- 제어 이동문
- 함수
- 단일 파라미터 함수
- 다중 파라미터 함수
- 파라미터 기본 값
- 여러 값 반환 함수
- 옵셔널 값 반환
- 외부 파라미터명 추가
- 가변 파라미터 사용
- inout 파라미터
- 중첩 함수
- 종합 예제
- 요약
- 지금까지 배운 것
- 5장. 클래스와 구조체
- 클래스와 구조체
- 클래스와 구조체의 유사점
- 클래스와 구조체의 차이점
- 값 타입과 참조 타입
- 클래스 및 구조체 생성
- 프로퍼티
- 저장 프로퍼티
- 연산 프로퍼티
- 프로퍼티 옵저버
- 메소드
- 커스텀 이니셜라이저
- 내부와 외부 파라미터명
- 실패 가능 이니셜라이저
- 상속
- 메소드와 프로퍼티 오버라이딩
- 메소드 오버라이딩
- 프로퍼티 오버라이딩
- 오버라이드 방지
- 프로토콜
- 프로토콜 문법
- 프로퍼티 요구 사항
- 메소드 요구 사항
- 익스텐션
- 메모리 관리
- ARC 작동 방식
- 강한 참조 순환
- 요약
- 클래스와 구조체
- 6장. 프로토콜과 프로토콜 확장
- 타입으로의 프로토콜
- 프로토콜의 다형성
- 프로토콜과 타입 캐스팅
- 프로토콜 확장
- 요약
- 7장. 프로토콜 지향 설계
- 요구 사항
- 객체지향 설계
- 프로토콜 지향 설계
- 프로토콜 상속
- 프로토콜 컴포지션
- Animal: 프로토콜 지향 설계
- 프로토콜과 where문
- 요약
- 8장. 에러 처리 기능을 가진 안전한 코드 작성
- 스위프트 2.0 이전까지의 예러 처리
- 네이티브 에러 처리
- 에러 표현
- 에러 던지기
- 에러 잡기
- 요약
- 9장. 커스텀 서브스크립팅
- 서브스크립트 소개
- 스위프트 배열 서브스크립트
- 서브스크립트 읽고 쓰기
- 읽기 전용 커스텀 서브스크립트
- 연산 서브스크립트
- 서브스크립트 값
- 서브스크립트 외부 이름
- 다차원 서브스크립트
- 서브스크립트를 쓰지 않아야 하는 경우
- 요약
- 10장. 옵셔널 타입
- 옵셔널 소개
- 옵셔널을 사용하는 이유
- 옵셔널 선언
- 옵셔널 사용
- 옵셔널 체이닝
- nil 병합 연산자
- 요약
- 11장. 제네릭
- 제네릭 소개
- 제네릭 함수
- 제네릭 타입
- 연관 타입
- 요약
- 12장. 클로저
- 클로저 소개
- 간단한 클로저
- 클로저 간편 문법
- 스위프트 배열 알고리즘과 함께 사용하는 클로저
- 기능 변경
- 결과에 따른 클로저 선택
- 강한 참조 사이클 생성
- 요약
- 13장. C 라이브러리
- 모듈
- 커스텀 모듈 생성
- Cpcap 모듈 생성
- Cpcap 모듈 사용
- 리눅스 man pages
- 요약
- 14장. 동시성과 병렬성
- 스위프트에서 동시성과 병렬성
- GCD
- 헬퍼 함수
- 요약
- 15장. 스위프트 코어 라이브러리
- 애플 URL 로딩 시스템
- URLSession
- URLSessionConfiguration
- URLSessionTask
- URL
- URLRequest
- HTTPURLResponse
- REST 웹 서비스
- HTTP GET 요청 만들기
- HTTP POST 요청 만들기
- 포매터
- DateFormatter
- NumberFormatter
- FileManager
- 요약
- 애플 URL 로딩 시스템
- 16장. 싱글보드 컴퓨터와 스위프트
- 비글본 블랙
- 비글본 블랙의 확장 헤더
- 스위프트 설치
- SwiftyBones3
- Sources 디렉토리
- SwiftyBuild
- SBDigitalGPIO를 이용한 LED 점멸
- SBAnalog 타입과 TMP36 온도 센서
- 자율 로봇
- 요약
- 17장. 스위프트 형식과 스타일 가이드
- 프로그래밍 스타일 가이드
- 자신만의 코딩 스타일
- 구문 끝에 세미콜론을 쓰지 마라
- 조건문에서 중괄호를 뺀다
- 이름 짓기
- 주석
- self 키워드
- 상수와 변수
- 옵셔널 타입
- 타입 추론 사용
- 컬렉션 간편 선언
- 다중 if문 대신 switch문을 사용하라
- 주석 처리된 코드를 그대로 두지 마라
- 요약
- 18장. 스위프트에서 디자인 패턴 적용
- 디자인 패턴 소개
- 생성 패턴
- 싱글턴 디자인 패턴
- 빌더 디자인 패턴
- 구조 디자인 패턴
- 브리지 패턴
- 파사드 패턴
- 프락시 디자인 패턴
- 행위 디자인 패턴
- 커맨드 디자인 패턴
- 스트래티지 패턴