Agile Android Software Development
- Etienne Savard
애자일 안드로이드 프로그래밍에 대해 번역본입니다. 번역과 관련한 문의는 http://mnworld.co.kr 혹은 shakejj@gmail.com로 부탁드립니다. 해당 원본 E-Book 파일이 2015년 6월까지 계속 업데이트 되는 상황이라(현재는 pre-order로 원본 구독이 가능합니다), 챕터가 업데이트되면 번역을 업데이트 하도록 하겠습니다.
머리말
안드로이드는 실생활에서 수많은 기기에 탑재되어 다양한 목적으로 사용되고 있다.
구글은 웹 검색엔진회사에서 출발 해 다양한 분야(스마트폰, 음악, 책, 동영상 등)로 진화하고 있다. Android L의 릴리즈와 함께 TV와 웨어러블 분야까지 확장하고 있다. 수년 내로 차량에 안드로이드를 탑재하려는 야심찬 계획을 준비하고 있다.
수많은 스마트폰(삼성, LG, HTC 등)에 안드로이드 OS를 배포하고 있으며, 오픈소스 정책을 통해 OS에 대한 로열티를 지불하지 않는다는 특징을 가지고 있다..
사용자들은 매일 자신도 모르게 많은 순간들을 안드로이드와 함께 한다. 이메일을 보내거나, 사진을 찍거나, 게임을 하는 등 다양한 활동을 한다. 그렇기 때문에 파워 유저뿐 아니라 평범하게 스마트폰을 이용하는 유저들도 완성도가 높고 버그가 없는 어플리케이션을 원한다.
개발자와 회사는 창의적인 아이디어와 아이템을 안드로이드 앱으로 만들어낸다. 어플리케이션 개발과 서비스를 통해 수익을 창출하기도 한다. 그리고 그들은 모바일 어플리케이션을 개발하는 과정에서 반복되는 몇가지 문제에 부딪치게 된다. 코드의 분열, 유지보수가 어려운 코드, 투자 된 리소스에 비해 효율적이지 않은 수익 등의 문제가 이에 해당한다. 이런 문제들은 툴과 애자일을 통한 실무를 통해 해결할 수 있다. 이 책을 통해 좀 더 효율적인 방법에 대해 알게 되고, 안드로이드를 통해 모바일 프로그래밍을 하며 행복감을 느끼길 원한다.
이 책에 대해서
안드로이드 프로그래밍을 시작했을 때, 종종 스스로 질문을 던지곤 했다.
"애자일 프로그래밍 방법을 안드로이드 프로그래밍에 적용한다면 어떻게 해야 할까?"
질문에 대한 해답을 찾기 위해 안드로이드 관련 서적과 다양한 툴을 실무에 적용 및 응용하면서 이에 대한 해답을 찾으려 노력했다. 하지만 정답을 찾는 것은 매우 힘들었다.
좋은 툴을 사용하는 것은 안드로이드 개발에 있어 굉장히 즐거운 경험이다. 많은 툴이 무료거나 오픈 소스 형태로 사용이 가능했지만, 이런 툴에 대해 정리한 서적은 찾기 힘들다. 대부분의 안드로이드 책들은 초보자나 드물게 중간 정도의 수준의 개발자에게 초점을 맞추고 쓰여진 기술 서적이 대부분이다. 이 책을 최대한 효율적으로 응용하기 위해서는(혹시 당신이 안드로이드 프로그래밍을 배우고 싶어 이 책을 읽는 것이라면) 먼저 안드로이드 프로그래밍에 대한 기술 서적을 읽는 것을 추천한다. 만약 안드로이드 개발을 실무에 적용하고 있다면 이 책의 다양한 이야기들을 효율적인 방법으로 적용 및 응용 해 볼 수 있을 것이다.
이 책에서는 Application Lifecyle Management(ALM)과 DevOps 등 다양한 툴에 대해 설명하며, 수익창출, 마케팅 등 상대적으로 안드로이드 개발과 직접적으로 관련이 없는 주제와 경험에 대해서도 이야기 할 것이다.
이 책은 몇가지 주제들을 담고 있는데, 기존의 기술 서적과 같이 당신에게 수없이 긴 예제 코드들을 적지 않으려고 노력했다. 필요한 경우에는 간단한 예제를 통해 설명을 할 것이다. 첫번째 챕터에는 FizzBuzz app에 대한 예제가 나오는데, Fizz Buzz의 알고리즘은 TDD의 훌륭한 표본이다. 이 예제는 매우 간단하지만, 테크닉적인 면보다 문제를 푸는 능력을 키우기에 적합한 예제이다. 다른 챕터들도 당신에게 도움을 줄 수 있는 컨셉으로 주제를 잡았다.
이 책을 읽어야 하는 이유
이 책은 적어도 하나의 객체지향 프로그래밍 언어(C++, C#, 자바 등)를 경험한 개발자를 위한 책이다. 이 책을 완벽히 이해하려면 프로그래밍과 소스 관리(Git과 같은)에 대한 기본적인 이해가 있어야 한다.
이 책에서 이야기할 테크닉적인 면과 툴은 대부분 협업을 위한 것이다. 개인 개발자는 이 책의 내용을 혼자 응용해볼 수 있고, 인원이 많은 팀에도 적용이 가능하지만, 이 책은 소규모의 팀을 염두에 두고 쓰여진 책이다.
이 책을 통해 효율적으로 활용하려면, 한 권 이상의 기초적인 안드로이드 프로그래밍 책을 통해 기본적인 안드로이드에 대한 이해가 있길 바라며. 개발 뿐만 아니라 하나 이상의 앱을 구글 플레이에 서비스한 경험이 있다면 더욱 좋다.
이 책은 안드로이드의 기본적인 문법과 프로그래밍 언어에 대한 내용이 아니다. 그러나 안드로이드 프로그래밍을 하고 있고, 안드로이드 어플리케이션을 서비스하고 있다면 직면하는 다양한 문제에 대해서는 최고의 길잡이가 될 것이다.
즉 이 책은 안드로이드 프로그래밍에 대한 책은 아니다. 이미 안드로이드를 개발하고 있는 소규모의 팀에서 효율적으로 적용할 수 있는 방법에 대해 이야기를 하며, 안드로이드 프로그래밍의 워크 플로우 과정와 툴, 실무에 대한 테크닉, 애자일스러운 개발방법, 그리고 안드로이드 플랫폼을 통해 수익을 창출하는 부분에 대해 도움이 될 것이다.
철학과 가이드라인
면책조항:
이 책은, 굉장히 주관적으로 쓰여진 책이다. 이 책의 핵심은, IT 필드에서 직접 겪은 경험에서 시작하며, 실제로 실무를 하며 고민하고 문제를 해결한 이야기들이다.
이 책의 어떤 주제이든, 다른 생각을 가지고 있거나, 다른 관점을 가지고 있다면 토론을 하고 싶다. 이 책을 위해서 다양한 툴들을 사용하고 실제로 개발을 과정에서 느꼈던 방법에 대해 담겨있다. 사용했던 툴이 최고의 툴이라고 말을 할 순 없지만, 적어도 실무 과정에서 내가 사용한 툴 중에는 최고라고 이야기 할 수 있다. 실무 과정에서 툴을 선택한 과정과 어떻게 사용했는지에 대해 설명할 것이다. 이 책에서 다루는 이야기에 대한 컨셉을 이해를 하고 당신의 실무 과정에서 적용 및 발전되길 바란다.
이 책의 예제들이 리눅스를 기반한 예제들이다 - 윈도우나 맥에서는 테스트해보지 못했다. 그러나 어떤 플랫폼이던 안드로이드(자바) 플랫폼에 기반한 예제들이기에 이해하는 것에는 큰 문제가 없을 것이다. 최선을 다해 툴과 예제를 선택 할 때 플랫폼에 구애받지 않고 웹을 기반으로 한 툴을 선택하려고 노력했다. 그럼에도 불구하고 몇가지 예제들이나 스크립트들이 당신의 개발 환경에서 돌아가지 않을 수도 있다. 혹여나 동작하지 않는 것들이 있다면 나에게 버그 리포트를 보내주길 바란다. 해당 문제에 대해 도와줄 수 있는 것이 있다면 꼭 도움을 주겠다.
이 책에 있는 디자인, 과정, 예제, 컨셉은 다음 과정을 따른다.
- 확장 가능하라
- DRY (Don't repeat yourself) 이론 -반복되는 일을 하지마라!-를 따르며, 자동화하라
- 애자일을 적용하라
- 불필요한 것들(시간, 돈, 리소스 등)을 줄여라
- 개발자의 길을 걸어라
위의 것들은 당신이 앱을 개발하고 서비스하는 시간을 단축시켜 줄 것이다.
이 책의 파트들
이 책은 총 일곱개의 파트로 나뉘어져있다.
1. 기술시장에 대한 분석 및 Agility 에 대해
2. 애자일을 돕는 안드로이드와 관련 된 툴
3. 자동화 101
4. 애자일 방식의 프로젝트 관리 (BDD와 TDD)
5. Lean Start-Up 안드로이드 (안드로이드를 통해 Lean Start-Up을 할 경우 효과적인 피드백을 얻는 과정)
6. 확장 (클라우드 컴퓨팅을 통한 다양한 환경에서의 build와 test)
7. 다양한 문제와 주제 (마케팅과 서비스, 수익 창출)
구글 + 커뮤니티 : https://plus.google.com/u/0/communities/106666596834203709065
이 책의 예제들에 대한 Repository : https://bitbucket.org/esavard/agile-android-software-development
'옛글 > 번역본' 카테고리의 다른 글
애자일 안드로이드 프로그래밍 - 2 기술에 대한 시각과 Agility (0) | 2014.11.25 |
---|---|
프로그래밍 Design Pattern 이해하기 - 10 스테이트 패턴 (0) | 2014.09.28 |
프로그래밍 Design Pattern 이해하기 - 9 이터레이터 패턴 & 컴포지트 패턴 <2> (0) | 2014.09.23 |
프로그래밍 Design Pattern 이해하기 - 8 템플릿메소드패턴 (5) | 2014.09.16 |
프로그래밍 Design Pattern 이해하기 - 7 어댑터패턴&파사드패턴 (2) | 2014.08.31 |