*** 본 리뷰는 한빛미디어로부터 도서를 지원받아 작성하였습니다 ***

IT기술에 대한 관심이 많은 편이라 새로운 언어나 기술에 대한 관심이 많은 편이다.
그래서 하나를 깊게 알기보다는 다양한 분야를 조금씩 아는 편인데, 최근에는 Swift라는 언어와 Deep Learning에 관심이 많이 갔었다.
그런데 마침 한빛미디어로부터 Swift와 관련된 도서를 한권 선물받아서 이 책에 대한 리뷰를 남겨볼까한다.

첫인상

책표지

처음 책표지를 보면 약간은 앱개발 도서라기보다는 드로윙 도서라는 느낌이 든다.
한편으로는 개발자가 아닌 디자이너를 위한 앱 개발 도서의 느낌으로 표지를 디자인한 것이 아닐까 싶다.
그만큼 프로그래밍에 익숙하지 않고 앱 개발을 처음 접하는 사람일지라도 쉽게 접근할 수 있도록 잘 쓰여졌다.

사실 처음에 이 도서에 관심을 갔던 이유는 앱 개발이라는 것보다는 Swift 때문이었다.
그래서 이왕 Swift를 배우려면 눈으로 확인할 수 있는 결과물을 만들면서 하는 것이 좋겠다고 생각했고, 그런 의미에서 이 도서에 관심을 갖게 되었다.

하지만 아쉽게도 본 도서는 Swift보다는 앱 개발에 더 촛점이 맞춰져있어서 나처럼 Swift 때문에 이 도서를 찾은 독자라면 다른 책을 권하고 싶다.
그렇지만 앱 개발을 위한 초보자에게 는 확실히 좋은 입문도서임에는 틀림없다.

누구를 위한 도서인가?

이 도서는 제목과 목차에서 보듯이 초보 개발자를 위한 것이다.

학습목차

위와 같이 내용 구성은 예전에 한창 유행하던 따라하기 시리즈와 비슷하게 되어있다.
그 누구라도 45일만에 열심히 따라하면 간단한 iOS 앱을 만들 수 있다.

각 장의 내용을 보면 Hello World와 같은 지루함도 있지만 처음 접하는 사람이 만들고 싶어할만한 앱도 예제로 설명하고 있다.
그래서 끝까지 흥미를 잃지 않고 따라갈 수 있다.
하지만 앱 개발을 한번이라도 접해본 독자라면 상당부분이 지루할 수 있다.

왜냐하면 초보 개발자로 XCode 조차도 익숙하지 않는 사람을 대상으로 하기 때문에 같은 설명을 반복적으로 하고, 따라하기 식의 설명을 위해 상당히 많은 부분을 스크린샷으로 설명하고 있기 때문이다.
심지어는 1장에서는 친절하게도 아래와 같이 앱 개발이 무엇인지를 알려준다.

앱개발이란

무엇이 좋은가?

학습 목표

이 도서를 접하면서 가장 마음에 들었던 부분은 각 장의 처음에 나오는 학습 목표이다.

학습목표

아마도 어떤 독자들은 학창시절에 풀던 문제집도 아니고 ‘학습 목표가 왜 등장하지?’ 또는 ‘학습 목표가 왜 좋다는 거지?’ 라고 생각할 수 있다.
하지만 나에게는 학습 목표가 일종의 그 장에서 배울 것들에 대한 요약의 느낌이 들었고 최종 결과물과 그 과정에 대해 예측할 수 있게 만들어서 좋았다.

보통 개발을 잘하는 사람들은 컴퓨터 앞에 앉기전에 전에 많은 생각을 하고 그 프로그램의 아키텍처나 구성, 알고리즘에 대한 고민들을 많이 한다.
그래서 불필요한 기능을 만들거나 스파게티 코드, 지저분한 UX를 만들 가능성이 줄어들어 유지보수가 편해진다.

이와 비슷한 맥락에서 무엇인가를 개발 혹은 학습할 때, 내가 하고자 하는 것에 대해 고민하는 시간을 갖는 것이 중요한데, 이 책의 학습 목표를 보며 비슷한 느낌을 받을 수 있었다.

코드와 분리된 주석

프로그래밍 서적을 읽을 때 코드에 대한 설명이 눈에 거슬릴 때가 많다.
크게는 두가지 형태가 있는데, 첫번째는 코드에 직접 주석과 같은 형태로 설명하는 경우고 두번째는 코드를 보여주고 이에 대한 전반적인 설명을 코드 아래에 넣는 경우이다.
전자의 경우는 코드 자체를 읽을 때 주석 때문에 흐름이 끊기기도 하고 주석으로 인해 실제 실행되는 내용은 길지 않은데 길고 장황해보여서 힘들었다.
후자의 경우는 긴 코드의 경우 코드에 대한 설명과 매치시켜서 보기가 힘들거나, 한줄한줄 설명하기 보다는 전반적인 흐름을 설명하기 때문에 세세한 것에 대해 놓치는 경우가 있었다.

주석설명

이 도서는 두 형태의 장점만 취하고 있다. 물론 이 도서외에도 비슷한 형태를 취하고 있는 도서들이 있겠지만, 개인적으로 이런 스타일이 마음에 들었다.
코드는 코드대로 보여주고, 중요한 부분에 표식을 넣은 다음 특정 부분이 궁금하면 해당 표식을 통해 이해할 수 있도록 되어 있어서 코드를 읽기도 수월하고 내용을 이해하기도 좋았다.

그리고 코드의 줄번호가 1부터 시작하는 것이 아닌 실제 예제의 예제파일의 줄번호를 표기함으로 인해 따라하는 사람으로 하여금 조금이나마 찾기 수월하게 해놓았다.
별거 아닌 부분이지만 저자의 세심함이 느껴지는 부분이었다.

충실한 스크린샷과 순서

충실한 스크린샷

이 도서가 입문서로 좋은 이유는 충실한 스크린샷에 있다.
사실 너무 중복적인 설명이 많고 중복적인 스크린샷이 많아서 계속 보다보면 지루한 면이 없지 않아 있지만, 처음 접하는 사람이 앞부분을 읽지 않고 중간에 원하는 부분을 찾아 읽는다거나 앞부분에 읽었던 내용을 잊어버린 경우, 중복해서 설명해주지 않으면 어디서 설명했었는지를 찾는 과정에서 짜증을 경험해본 적이 있을 것이다.

이 책에서는 저자의 배려로 인해 그런 짜증은 느낄 수가 없었다.
그래서 한편으로는 보이는 분량에 비해 진도가 빠르게 나가는 장점 아닌 장점도 지니고 있다.

무엇이 부족한가?

Swift 활용에 대한 예제

이 부분는 일반적인 경우에 해당하는 것은 아닐 수도 있다.
단지 내가 Swift에 관심이 있어서 이 도서를 택했고, 도서 제목에도 Swift가 들어가는 만큼 Swift에 대한 기대감이 있었기 때문에, Swift 자체를 연습할 수 있을만한 예제가 더 있었으면 좋겠다는 생각을 했다.
하지만, 이는 독자에 따라 호불호가 갈릴 수 있는 부분일 수 있다.

연습 문제

아래는 각 장의 마지막에 나오는 연습 문제이다.

연습문제

각 장의 처음에 나오는 학습 목표와 같이 약간은 학창시절의 문제집 같은 설정이다.
아마도 저자는 마지막의 연습 문제를 보며, 그 장에서 실습해본 내용들에 대한 정리를 유도하는 측면에서 이 내용을 삽입하지 않았을까 추측된다.

하지만, 장점으로 얘기했던 학습 목표 비슷한 설정임에도 불구하고 연습 문제는 그렇게 와닿지 않았던 것은 아마도 정보처리기능사의 필기시험 문제 같은 느낌을 가지고 있어서가 아닐까 생각한다.
(절대로 정보처리기능사 혹은 저자를 비난하는 것은 아니다)

무엇인가 실질적인 필요에 의해서라기 보다는 시험을 위해 외워야할 것 같은 느낌의 문제랄까?

그렇다고 해당 부분이 쓸모없다는 것은 아니며, 이 또한 초보자를 위한 배려이고, 나름 의미가 있는 페이지인 것에는 동의한다.
단지 연습문제보다는 해당 장에서 배웠던 것을 이용해서 만들 수 있는 쓸모있는 앱에 대한 기능디자인을 주고 이에 대한 구현을 스스로 해볼 수 있는 프로젝트 형식이었다면, 조금더 독자에게 도움이 되지 않았을까 하는 생각이 들었다.

 총평

Swift보다는 iOS 앱 개발을 하고 싶은 초보자를 위한 입문서적이며, Swift에 관심있거나 앱 개발 경험이 조금이라도 있으신 분들이라면 조금더 전문적인 서적을 찾아보는 것을 권하고 싶다.

하지만 처음 이 분야를 입문하기에는 더할나위없이 좋은 서적이라고 생각한다.