이 책에서 다루는 내용
- 간단한 앱 제작 후 실 기기와 에뮬레이터에서의 실행
- 안드로이드 스튜디오가 제공하는 머터리얼 디자인에 대한 위지익(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 디자인, 내부 로직과 사용자 상호 작용 같은 주제를 다루는 앱을 개념부터 배포까지 할 계획이다. 각 단계에서 처음에는 추상적인 형태로 패턴을 분석하고, 다음으로 특정 상황에 적용해서 개별 과정과 관련된 디자인 패턴을 살펴보겠다. 이 책의 마지막까지 안드로이드 개발의 모든 측면에 디자인 패턴을 적용하는 방법과 모범 사례를 활용하는 방법을 배울 것이다. 특정 패턴 자체보다 디자인 패턴의 개념이 더 중요하다. 패턴은 특정 목적에 맞게 적용할 수 있어야 하고, 이런 방식으로 앱 개발에 접근해 완전히 새로운 자체 패턴을 개발할 수도 있다.