알라딘

헤더배너
상품평점 help

분류

이름:강경구

최근작
2022년 12월 <젯팩 컴포즈로 개발하는 안드로이드 UI>

스위프트 4 프로토콜지향 프로그래밍 3/e

스위프트는 Mac과 iOS 앱 개발에 있어 오브젝티브C를 대체하는 언어로 빠르게 자리 잡았다. 그와 동시에 사용자의 니즈에 빠르게 대응해 변화하고 있으며, 프로토콜지향 프로그래밍 패러다임 역시 이러한 흐름에 맞춰 변화해 왔다. 특히 제네릭이 강화되면서 프로토콜지향 프로그래밍 역시 더욱 유연해지고 확장성 있는 패러다임으로 발전하게 됐다. 3판에서는 개선된 스위프트의 내용을 반영해 1판에서 소개하지 못했던 제네릭이 추가됐고 예제 역시 상황에 맞게 개선됐다. 개발을 하다 보면 객체지향 프로그래밍만으로는 해결하기 어려운 문제를 종종 마주치게 된다. 이 책에서는 프로토콜지향 프로그래밍에 대한 내용을 이야기하는 것뿐만 아니라, 기존 객체지향 프로그래밍과 어떠한 차이가 있는지, 객체지향 프로그래밍에서 해결하기 어려웠던 문제를 프로토콜지향 프로그래밍에서는 어떤 방식으로 해결했는지를 설명한다. 또한 다양한 예제를 통해 새로운 패러다임을 자연스럽게 체득할 수 있게 했다.

스위프트와 프로토콜지향 프로그래밍

스위프트는 객체지향 프로그래밍을 지원하는 언어다. 동시에 객체지향 프로그래밍이 가진 문제점을 해결하기 위해 여러 기능을 제공하고 있다. 그중 가장 주목받는 것이 바로 프로토콜지향 프로그래밍(Protocol Oriented Programming)이다. 특히 애플이 WWDC 15에서 스위프트가 프로토콜지향 프로그래밍을 지원하는 언어라고 공식적으로 발표한 이후, 프로토콜지향 프로그래밍에 대한 관심은 계속해서 높아지고 있다. 프로토콜지향 프로그래밍은 스위프트 언어의 근간을 이룬다고 볼 수 있다. 수많은 클래스로 이루어졌던 오브젝티브C와는 달리 스위프트에서는 구조체와 프로토콜이 클래스를 대신하며, 이를 위해 애플은 구조체와 프로토콜에 많은 기능을 부여했다. 스위프트를 잘 활용하려면 기존 객체지향 관점이 아닌 새로운 관점에서 스위프트를 바라봐야 한다. 이 책은 스위프트를 더욱더 잘 사용하고 싶은 개발자를 위한 책으로, 처음부터 객체지향 프로그래밍과 프로토콜지향 프로그래밍의 차이점을 살펴보면서 프로토콜지향 프로그래밍이 가진 강점을 보여준다. 또한 스위프트 2에서 추가된 새로운 에러 처리 패턴과 프로토콜 확장(Protocol Extension)을 통해 스위프트에 더해진 강력한 기능들도 함께 소개한다. 그리고 디자인 패턴과 사례연구를 통해 실무에서 프로토콜지향 프로그래밍을 어떻게 적용할 수 있는지 상세히 알려준다. 애플은 WWDC 16에서 다시 한 번 스위프트에서 프로토콜지향 프로그래밍의 중요성을 강조했다. 값 타입(Value Type)과 프로토콜, 구조체를 기반으로 한 프로그래밍은 기존 객체지향 프로그래밍에 익숙한 개발자에게는 다소 낯설지도 모른다. 이 책은 이러한 독자들이 새로운 프로그래밍 패러다임을 익히는 데 도움이 될 것이다.

젯팩 컴포즈로 개발하는 안드로이드 UI

최근 모바일 프로그래밍의 가장 뜨거운 주제를 고르라면 단연 선언적 UI라고 할 수 있다. 구글은 플러터를 통해 선언적 UI를 선보이는 데 그치지 않고 2021년 안드로이드 네이티브 UI 개발이 가능한 선언적 UI 프레임워크인 젯팩 컴포즈(Jetpack Compose)를 출시했다. 젯팩 컴포즈는 출시 이후 빠르게 성장하고 있으며 안드로이드뿐만 아니라 데스크탑, 웹은 물론 iOS 앱 개발에도 젯팩 컴포즈를 사용하는 것을 목표로 하고 있다. 이를 통해 안드로이드 개발자는 모바일 애플리케이션 개발뿐만 아니라 다른 플랫폼에서도 동일한 환경을 사용해 GUI 애플리케이션을 개발할 수 있게 될 것이다. 이 책은 젯팩 컴포즈를 처음 접하거나 빠르게 익히고자 하는 개발자를 위한 책이다. 저자는 프레임워크가 지원하는 여러 UI 컴포넌트를 소개하는 데서 그치지 않고 젯팩 컴포즈의 동작 원리는 물론, 실무에서 컴포즈를 어떻게 적용할 수 있는지, 기존 View 기반의 애플리케이션에 컴포즈를 어떻게 적용할 수 있는지도 설명하고 있다. 이를 통해 단순히 책을 읽는 데 그치지 않고 바로 실무에서 적용할 수 있게 도와준다. 저자는 빠르게 발전하는 젯팩 컴포즈 버전에 맞춰 예제를 꾸준히 업데이트하면서 독자에게 최신 정보를 주고자 노력하고 있다. 원서의 예제는 컴포즈 1.0.5 버전을 기준으로 작성됐으나 번역 과정에서 저자는 1.2.1 버전까지 업데이트했다. 이 한국어판은 저자가 작성한 가장 최신 버전인 1.2.1을 적용했고, 사용하는 라이브러리나 안드로이드 스튜디오 버전 역시 최신 버전을 사용해 독자로 하여금 최신 환경에서도 원활하게 예제를 따라 할 수 있도록 했다. 최신 버전에서 예제를 작성하다 막히는 부분이 있다면 책에 있는 깃허브 링크를 확인해 최신 버전의 코드를 참고할 것을 추천한다. 유튜브 채널의 'Code In Action'에서 예제 코드를 설명하는 영상도 있으니 함께 참고해보면 도움이 될 것이다.

코틀린 프로그래밍

코틀린은 JVM 진영의 새로운 언어로 많은 관심을 받아왔다. 2017년에는 구글에서 안드로이드 개발 언어로 공식 인정하면서 그 관심과 위상은 어느 때보다 높아진 상태다. 특히 코틀린은 안드로이드 개발에서 기존에 자바 버전 문제로 사용할 수 없었던 기능을 사용할 수 있게 해주며, 여러 보일러플레이트 코드를 없애주기 때문에 많은 안드로이드 개발자의 사랑을 받고 있다. 아쉽게도 이 책에서 안드로이드를 개발하는 내용을 설명하지는 않지만, 그 대신 코틀린을 좀 더 자세히 공부할 수 있도록 많은 내용을 담고 있다. 원서가 출간된 시점에 코틀린 최신 버전은 1.1-M04였다. 번역서가 출간되는 시점에서는 어느덧 1.1이 정식 출시돼 1.1.51까지 나왔다. 이 책은 1.1-M04를 기반으로 집필됐지만 1.1.51을 사용해도 큰 무리는 없으며, 책에서 코틀린을 설치하는 내용은 모두 1.1 기반 버전으로 설치할 수 있도록 수정했다. 다만 바이트 코드를 설명하는 내용에서는 1.1-M04로 돼 있기 때문에 1.1 최신 버전을 설치해 예제를 실행하면 바이트 코드 일부가 다를 수도 있지만 내용이 바뀔 정도는 아니니 안심해도 좋다. 새로운 언어를 공부하는 데 있어 가장 좋은 방법은 직접 사용해보면서 재미를 느끼는 것이라고 생각한다. 그런 면에서 코틀린은 정말 안성맞춤인 언어다. 특히 자바나 스칼라를 사용해본 개발자라면 코틀린을 정말 재미있고 빠르게 습득할 수 있을 것이다.

RxJava Essentials

안드로이드 개발자라면 누구나 비동기 처리로 골머리를 앓은 경험이 있을 것이다. 모바일 디바이스의 하드웨어 성능이 뛰어나다고 하더라도, 매끄럽게 동작하는 앱을 구현하려면 비동기 처리가 반드시 필요하다. 안드로이드에서는 이러한 비동기 처리를 위해 핸들러(Handler)나 비동기 태스크(AsyncTask) 같은 기능을 제공하지만, 고수준의 비동기 동작을 구현하기란 쉽지 않다. Rx자바와 Rx안드로이드는 이러한 비동기 작업을 손쉽게 처리해주고 개발자가 구현해야 하는 로직에 집중하도록 도와준다. 또한 자바 8에서 추가된 스트림(Stream)에서나 사용할 수 있었던 맵(map)이나 필터(filter) 같은 기능도 제공해, 데이터를 원하는 입맛대로 변경하거나 조작할 수도 있다. 하지만 Rx자바는 진입장벽이 높다는 문제 때문에 이를 프로젝트에 적용하는 데 있어 걸림돌이 되기도 한다. 이 책은 Rx자바를 배우면서 안드로이드 프로젝트에 빠르게 적용하고 싶은 독자를 위한 책이다. Rx자바의 기능을 설명하고 Rx안드로이드를 이용한 안드로이드 프로젝트를 만들어봄으로써 Rx자바와 Rx안드로이드의 기능을 빠르게 습득할 수 있게 했다. 더욱이 버터 나이프(Butter Knife)나 레트로 람다(RetroLambda) 같이 실제 실무에서 많이 사용하는 유용한 라이브러리를 함께 사용함으로써 여러 라이브러리의 사용법도 배울 수 있다는 점은 이 책의 또 다른 매력이라고 할 수 있다. 4, 5, 6장에서는 Rx자바의 진수를 핵심만 요약해 설명함으로써 Rx자바가 제공하는 여러 기능을 한눈에 파악할 수 있다. 7장에서는 안드로이드 개발자가 반드시 알아야 할 스케줄러를 이용한 스레드 관리 기법을 설명한다. 마지막 장에서는 안드로이드 진영에서 유명한 스퀘어(Square)의 레트로핏(Retrofit)과 Rx자바를 함께 사용하는 방법을 설명하면서 Rx자바를 사용하는 개발자에게 꼭 필요한 꿀 팁을 제공한다. 원서는 Rx자바 1.0.x 버전과 Rx안드로이드 0.24 버전을 기준으로 쓰였다. 원서가 출간된 후 Rx안드로이드는 1.0.0 을 발표했고 메이저 업데이트가 이루어지면서 많은 변화가 있었다. 그중 일부 기능은 삭제됐고 일부는 다른 프로젝트로 분리되면서 결과적으로 Rx안드로이드는 경량화됐다. 이는 Rx자바와는 별개로 Rx안드로이드의 사용 방법에 변화가 생긴 것이다. 이러한 변경사항을 예제에 직접 적용하다 보면, Rx안드로이드가 추구하고자 하는 방향성을 이해함은 물론 Rx안드로이드를 공부하는 또 다른 방법이 될 것이다. 1.x에서 변경된 사항은 Rx안드로이드의 깃허브(https://github.com/ReactiveX/RxAndroid/wiki)와 댄 루(Dan Lew)의 블로그(http://blog.danlew.net/2015/09/01/how-toupgrade-to-rxandroid-10)에서 확인할 수 있다.

가나다별 l l l l l l l l l l l l l l 기타
국내문학상수상자
국내어린이문학상수상자
해외문학상수상자
해외어린이문학상수상자