Top

안드로이드 디자인 패턴과 활용 사례 [신뢰할 수 있고 견고하며 효율적인 안드로이드 앱 만들기]

  • 원서명Android Design Patterns and Best Practices (ISBN 9781786467218)
  • 지은이카일 뮤(Kyle Mew)
  • 옮긴이송무찬
  • ISBN : 9791161750620
  • 30,000원
  • 2017년 10월 20일 펴냄
  • 페이퍼백 | 444쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약

디자인 패턴을 살펴보고, 안드로이드 API가 사용하는 디자인 패턴의 실제 사례를 중심으로 개별 패턴을 이해하기 쉽게 설명한다. 가상 서비스를 개발하면서 마주하는 문제에 대한 해결책으로 패턴을 배울 수 있다. 개별 디자인 패턴은 구체적인 예제와 함께 학습해서 개별 패턴을 쉽게 이해하고 사용할 수 있게 도와준다. 따라서 안드로이드 앱을 개발하는 개발자 대부분에게 도움이 될 것이다.

이 책에서 다루는 내용

■ 간단한 앱 제작 후 실 기기와 에뮬레이터에서의 실행
■ 안드로이드 스튜디오가 제공하는 머터리얼 디자인에 대한 위지익(WYSIWYG)과 XML 접근 방식
■ 터치스크린 리스너, 제스처 감지, 센서를 읽어 사용자 액션 감지
■ 트랜지션과 공유 요소를 적용한 멋진 애니메이션 사용과 모바일 기기에서의 작은 화면을 효율적으로 사용하는 방법
■ 특정 디렉터리를 사용해 앱에 다양한 기기에 어울리는 레이아웃 적용
■ 소셜 미디어에 연결한 앱을 디지털 단어로 소셜화
■ 앱컴팩(AppCompat) 지원 라이브러리를 사용한 많은 기기에서의 사용 방법

이 책의 대상 독자

기본적으로 안드로이드 개발 경험이 있는 개발자가 대상이다. 이 책을 최대한 활용하려면 기본적인 자바 프로그래밍 지식이 필요하다.

이 책의 구성

1장, 디자인 패턴(Design Pattern): 개발 환경 소개하고, 널리 사용하는 두 개의 패턴인 팩토리(factory)와 추상 팩토리(abstract factory)를 소개한다.
2장, 생성 패턴(Creational Pattern): 머티리얼(material)과 인터페이스 디자인을 다루고, 디자인 지원 라이브러리와 빌더 디자인 패턴을 살펴본다.
3장, 머티리얼 패턴(Material Pattern): 안드로이드 사용자 인터페이스, 그리고 앱 바와 슬라이딩 내비게이션 드로어(sliding navigation drawer) 같은 가장 중요한 머티리얼 디자인 컴포넌트를 일부 소개한다. 메뉴, 액션 아이콘, 그리고 메뉴와 액션 아이콘을 구현하는 방법과 드로어 리스너를 사용해서 사용자 액티비티를 감지하는 방법을 소개한다.
4장, 레이아웃 패턴(Layout Pattern): 이전 레이아웃에서부터 시작해서 안드로이드 레이아웃 디자인 패턴과 다양한 기기에서 동작하는 레이아웃을 만들기 위해 그래비티(gravity)와 웨이트(weight)를 사용하는 방법에 대해서 자세히 설명한다. 그래비티와 웨이트를 사용해서 안드로이드 기기 회전, 화면 크기와 모양의 차이를 다루는 방법에 대해서 알아보고 전략 패턴을 소개, 시연한다.
5장, 구조 패턴(Structural Pattern): 디자인 라이브러리에 대해 더 자세히 살펴보고, 리사이클러 뷰(recycler view)와 더불어 코디네이터 레이아웃이 관리하는 레이아웃을 만드는 방법을 살펴본다. 이 과정에서 어댑터 디자인 패턴을 분석해야 한다. 먼저 내부 버전을 작성한 다음 브리지 패턴(bridge pattern), 파사드(facade) 및 필터 패턴(filter patterns)은 물론 고유의 어댑터 디자인 패턴을 구축한다.
6장, 패턴 활성화(Activating Pattern): 앱에서 디자인 패턴을 직접 적용하는 방법을 보여준다. 콜랩 스 툴바(collapsing toolbar), 스크롤과 구분선(divider) 같은 디자인 라이브러리 기능을 더 많이 다룬다. 사용자 액티비티에 의해 트리거되는 사용자 정의 대화 상자를 생성한다. 팩토리 패턴을 다시 살펴보고, 빌더 패턴을 사용해서 UI를 만드는 방법을 살펴본다.
7장, 패턴 조합(Combining Pattern): 두 개의 새 구조 패턴인 프로토타입과 데코레이터(decorator) 패턴을 소개, 시연하고, 개별 패턴의 유연성에 대해서 살펴본다. 그런 다음 패턴을 사용해 스위치와 라디오 그룹 같은 다양한 복합 버튼으로 구성된 UI를 제어하면서 연습하게 된다.
8장, 컴포지트 패턴(Composing Pattern): 컴포지트 패턴에 집중해 여러 상황에서 컴포지트 패턴을 사용하는 방법과 올바른 상황을 선택하는 방법에 대해서 알아본다. 다음으로 중첩 UI를 보여주기 위한 실제 예제를 계속 사용한다. 이 예제에서는 영구 데이터의 저장과 검색을 살펴보고, 내부 저장소를 사용해 공유 환경변수(shared preference) 형태로 앱 파일과 사용자 설정을 사용하는 방법을 살펴보겠다.
9장, 옵저버 패턴(Observing Pattern): 한 활동에서 다른 활동으로의 전환에 관련된 시각적인 과정을 살펴보고, 이 과정이 단순한 데코레이션 이상의 방법이 되는지 알아본다. 독자는 전환(transitions)과 공유 요소(shared elements)를 적용해 모바일 기기의 최소 화면 공간을 효율적으로 사용하고, 앱 사용과 작업을 단순화하는 방법을 배울 것이다.
10장, 행위 패턴(Behavioral Pattern: 주요 행위 패턴인 템플릿(template), 전략(strategy), 비지터(visitor), 그리고 상태(state) 패턴에 집중한다. 그리고 개별 패턴의 동작 예제를 제공하고 패턴의 유연성과 사용법을 다룬다.
11장, 웨어러블 패턴(Wearable Pattern): 안드로이드 웨어(Android Wear), TV와 오토(Auto)의 작업을 보여주고, 차례대로 설정, 구성하는 방법을 설명한다. 안드로이드 웨어 앱과 핸드헬드(handheld)앱의 차이에 대해서도 살펴본다.
12장, 소셜 패턴(Social Pattern): 웹 기능과 소셜미디어를 추가하는 방법을 살펴본다. 먼저 웹뷰(WebView)와 내부 웹앱을 만드는데 웹뷰를 사용하는 방법을 살펴본다. 다음으로 앱을 페이스북에 연결하는 방법을 분석한다. 12장 마지막에 트위터와 같은 다른 소셜 플랫폼을 검토한다.
13장, 배포 패턴(Distribution Pattern): 안드로이드 앱 배포, 게시와 수익화에 대해서 살펴본다. 독자는 등록과 게시 과정을 거쳐 광고 옵션을 살펴보고, 어떤 목적에 가장 적합한지 확인한다. 마지막으로 배포의 몇 가지 팁과 트릭으로 잠재적인 사용자를 극대화하는 방법을 살펴보겠다.

저자/역자 소개

지은이의 말

이 책은 검증된 프로그래밍 철학인 디자인 패턴을 앱에서 최대한 활용하는 방법에 대한 종합적인 가이드다. 디자인 패턴은 개발자가 직면하는 많은 문제를 해결하는 논리적이고 우아한 접근 방식을 제공하고, 문제에서 해결책에 이르는 명확한 경로를 만드는 가이드 역할을 한다. 디자인 패턴을 적용한다고 모범 사례가 되는 것은 아니지만, 디자인 패턴은 문제를 해결하는 과정을 지원하고 설계 결함을 쉽게 발견하도록 도와준다 . 디자인 패턴은 매우 다양한 플랫폼에서 구현할 수 있고, 많은 프로그래밍 언어로 작성할 수 있다. 어떤 코드 라이브러리는 내부 동작의 일부에 패턴을 적용하기도 한다. 그리고 이미 많은 독자는 자바 옵저버(Observer)와 옵저버블(Observable) 클래스에 대해서 익숙할 것이다. 앞으로 살펴볼 안드로이드 SDK는 팩토리, 빌더와 리스너 같은 다양한 패턴을 최대한 활용하게 한다. 내장된 디자인 패턴을 살펴보겠지만, 책의 대부분은 사용자 정의 패턴을 만들어서 안드로이드 개발에 적용할 수 있는 방법을 살펴볼 것이다. 개별 디자인 패턴을 차례대로 살펴보기보다는 개발자의 관점에서 주제에 맞게 접근하고, 안드로이드 앱을 개발하는 과정에서 발생하는 개별 디자인 패턴을 분석하면서 앱 개발의 측면을 살펴본다. 이 여정을 명확히 하기 위해서 중소기업을 지원하는 가상의 앱에 집중하며, 가상의 앱을 개발하면서 UI 디자인, 내부 로직과 사용자 상호 작용 같은 주제를 다루는 앱을 개념부터 배포까지 할 계획이다. 각 단계에서 처음에는 추상적인 형태로 패턴을 분석하고, 다음으로 특정 상황에 적용해서 개별 과정과 관련된 디자인 패턴을 살펴보겠다. 이 책의 마지막까지 안드로이드 개발의 모든 측면에 디자인 패턴을 적용하는 방법과 모범 사례를 활용하는 방법을 배울 것이다. 특정 패턴 자체보다 디자인 패턴의 개념이 더 중요하다. 패턴은 특정 목적에 맞게 적용할 수 있어야 하고, 이런 방식으로 앱 개발에 접근해 완전히 새로운 자체 패턴을 개발할 수도 있다.

지은이 소개

카일 뮤(Kyle Mew)

80년대 초부터 프로그래밍을 시작했고 여러 기술 웹사이트에 글을 썼다. 또한 3편의 라디 오 극본과 안드로이드 개발에 관한 3권의 책을 썼다.

옮긴이의 말

디자인 패턴은 소프트웨어를 개발하면서 종종 마주하는 문제를 해결하는 경험적인 방법이다. Gof(Gang of four)라 불리는 에릭 감마, 리차드 헬름, 랄프 존슨, 존 블리시디스에 의해서 1994년 『GoF의 디자인 패턴』(프로텍미디어, 2015)이라는 책이 출간되면서 널리 알려지기 시작했다. 안드로이드 앱을 개발하는 상황에서 예를 들어보면 앱에 버튼이 있고, 이 버튼을 클릭하면 다른 액티비티(Activity)로 이동한다고 가정해보자. 앱에 버튼 위젯을 추가하고, 버튼 위젯에 이벤트(클릭, 터치 등) 리스너를 등록하고, 이벤트 리스너 인터페이스를 구현한 클래스에서 다른 액티비티로 이동하는 로직을 구현하는 것이 일반적이다. 그리고 버튼을 클릭하면 리스너에 클릭 이벤트가 전송된다. 이와 같이 종종 마주하는 이런 상황을 해결하는 아주 좋은 경험적인 방법이 옵저버(Observer) 패턴을 사용하는 것이고, 이벤트 리스너의 형태는 옵저버 패턴의 대표적인 예제다. 디자인 패턴을 학습하는 것은 소프트웨어를 개발하는 과정에서 매우 유용하다. 개인적으로 일정 수준의 코드를 개발하면, 리팩토링의 과정으로 모듈이나 특정 상황의 코드를 개선하는 과정을 거친다. 이 과정에서 리팩토링한 코드는 자연스럽게 특정 패턴의 형태를 갖는 경우가 많았다. 또 이 패턴이 모여서 소프트웨어 아키텍처의 일부나 모듈의 설계 방향을 제시하는 경우를 여러 번 경험했다. 그래서 디자인 패턴을 학습하는 것은 특정 영역(모바일, 서버 등)을 벗어나서 소프트웨어 개발 자체에 큰 도움이 된다. 이 책은 안드로이드 API에서 사용한 패턴을 소개한다. 그리고 API에서 왜 이 패턴을 사용했는지에 대한 자세한 설명과 예제를 보여준다. 그래서 안드로이드 앱을 개발하면서 특정 상황에서 필요한 패턴을 알 수 있고, 적절히 사용할 수 있게 도와준다. 마지막으로 패턴 학습으로 앱 소스를 확장이 쉽고, 비교적 유지보수가 쉬운 코드로 개발하고 관리하는 데 도움이 될 것이다.

옮긴이 소개

송무찬

네오위즈, 엔씨소프트 등에서 8년간 서비스를 개발했고, 현재는 미국 실리콘 밸리에 있는 회사에서 서버와 안드로이드 앱을 동시에 개발하고 있다. 서버리스(Serverless) 아키텍처 도입으로 서버에 대한 부담이 많이 줄어든 덕분에 앱 개발에 더 집중하고 있다. 안드로이드가 설치된 IOT 기기나 연관 프로젝트에 관심이 있으며, 서버와 효율적인 통신 방법에도 관심이 있다.
『카산드라 완벽 가이드』(한빛미디어, 2011)를 공동 번역했고, 스레드 작업을 효율적으로 배치해 성능을 개선할 수 있는 『안드로이드 애플리케이션의 성능 개선을 위한 스레드 관리』(한빛미디어, 2015)라는 책을 썼다.

목차

**1장. 디자인 패턴**
이 책의 효과
구현 예제
시나리오
문제점
해결 방안
플랫폼 버전 결정하기
지원 라이브러리
팩토리 패턴
UML 다이어그램
앱 실행과 테스트
실제 기기에 연결하기
가상 기기에 연결하기
기기 모니터링하기
추상 팩토리 패턴
여러 팩토리와 작업하기
요약


**2장. 생성 패턴**
테마 적용하기
색과 텍스트 사용자 정의
팔레트 사용하기
텍스트 사용자 정의
이미지 리소스 추가하기
화면 밀도 관리하기
리소스 지정해서 사용하기
카드뷰 만들기
카드뷰 속성 이해하기
카드뷰 메트릭스 적용하기
팩토리 패턴 개선하기
빌더 패턴 적용하기
요약


**3장. 머티리얼 패턴**
앱 바
이미지 에셋
액션 적용하기
앱 바 구조

태블릿
내비게이션 드로어
드로어 생성
키라인 비율
드로어 활성화하기
프래그먼트 추가하기
오른쪽 드로어
싱글톤 패턴
요약


**4장. 레이아웃 패턴**
선형 레이아웃
가중치와 그래비티
상대 레이아웃
퍼센트 지원 라이브러리
화면 회전
큰 화면 레이아웃
너비 식별자
레이아웃 별칭
전략 패턴
요약


**5장. 구조 패턴**
목록 만들기
목록 항목 레이아웃
머티리얼 폰트 크기
데이터 연결하기
문자열 리소스 번역하기
어댑터와 레이아웃 매니저
어댑터 패턴
브리지 패턴
파사드 패턴
기준 패턴
요약


**6장. 패턴 활성화**
콜랩스 툴 바
데이터 팩토리 패턴 적용하기
항목 레이아웃 배치하기
리사이클러뷰와 팩토리 사용하기
구분선 추가하기
플로팅 액션 버튼 설정하기
대화 상자 빌더
사용자 정의 대화 상자
스와이프와 닫기 액션 추가하기
레이아웃 빌더 만들기
요약


**7장. 패턴 조합**
개요 명세
프로토타입 패턴
프로토타입 설정하기
프로토타입 적용하기
데코레이터 디자인 패턴
데코레이터 설정하기
데코레이터 적용하기
데코레이터 확장하기
샌드위치 빌더 패턴
패턴 적용하기
UI에 연결하기
패턴 선택하기
데코레이터 추가하기
패턴 붙이기
UI에 패턴 연결하기
요약


**8장. 컴포지트 패턴**
컴포지트 패턴
빌더 추가하기
레이아웃 컴포저
컴포넌트 추가하기
컴포지트 만들기
컴포지트 레이아웃 만들기
실행 중에 레이아웃 포매팅
저장소 옵션
정적 파일 만들기
앱 파일 만들고 수정하기
사용자 프리퍼런스 저장하기
액티비티 생명 주기
프리퍼런스 적용하기
고유 식별자 추가하기
요약


**9장. 옵저버 패턴**
옵저버 패턴
패턴 만들기
알림 추가하기
옵저버와 옵저버블 유틸리티
알림
인텐트 설정하기
알림 사용자 정의와 설정하기
가시성과 우선 순위
서비스
요약


**10장. 행위 패턴**
템플릿 패턴
템플릿 확장하기
전략 패턴
비지터 패턴
상태 패턴
요약


**11장. 웨어러블 패턴**
안드로이드 TV
TV 홈 화면
TV MVP 패턴
TV 앱 구조
추천 카드
안드로이드 웨어
웨어러블 기기와 연결하기
화면 모양 관리하기
웨어러블 알림
센서 읽기
안드로이드 오토
자동차 안전 고려 사항
오토 앱 설정하기
요약


**12장. 소셜 패턴**
웹 페이지 추가하기
링크 포함하기
WebSettings과 JavaScript 설정하기
웹뷰에 적합한 HTML 작성하기
페이스북 연결하기
페이스북 SDK 추가하기
페이스북 앱 ID 만들기
‘좋아요’ 뷰 추가하기
콘텐츠 빌더
트위터 통합하기
트윗 보내기
요약


**13장. 배포 패턴**
플랫폼 지원 범위 확장하기
앱 게시하기
서명된 APK 생성하기
개발자 등록하기
구글 플레이 스토어에 앱 게시하기
이메일과 웹사이트에 배포하기
앱 홍보하기와 수익 올리기
앱 홍보하기
앱으로 수익 올리기
인앱 결제
광고 포함하기
요약

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

[p. 174 : 아래서 5행]
(역자님! 번역확인 부탁드립니다)
->
(삭제)