Top

코틀린을 이용한 안드로이드 개발 [안드로이드 앱을 개발하며 배우는 코틀린]

  • 원서명Android Development with Kotlin: Enhance your skills for Android development using Kotlin (ISBN 9781787123687)
  • 지은이마르친 모스칼라(Marcin Moskala), 이고르 워다(Igor Wojda)
  • 옮긴이최민석
  • ISBN : 9791161751627
  • 30,000원
  • 2018년 05월 31일 펴냄
  • 페이퍼백 | 532쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 프로그래밍 언어

책 소개

요약

오늘날 개선된 애플리케이션 개발이라는 말은 단순히 속도가 빠른 애플리케이션 개발을 의미하는 것은 아니며, 개선된 방법으로 코드를 작성하는 것도 중요해졌다. 코틀린은 다양한 플랫폼에서 안드로이드 애플리케이션을 쉽고 효과적으로 작성할 수 있게 도와주는 언어다. 이 책에서는 안드로이드 개발에 사용되는 코틀린의 장점, 개선점, 그리고 새로운 가능성에 대해 알아본다.

이 책에서 다루는 내용

■ 코틀린 애플리케이션의 실행 및 안드로이드 스튜디오와 통합
■ 코틀린을 신규/기존 안드로이드 자바 기반 프로젝트와 통합
■ 코틀린 형식 시스템을 이용해 null 안전성과 불변성을 처리하는 방법
■ 다양한 클래스의 유형과 속성 다루기
■ 컬렉션 정의 및 함수형 기반 방식으로 변환
■ 확장의 정의 및 대리자를 이용해 기존 라이브러리와 안드로이드 프레임워크 클래스에 새로운 동작 추가
■ 제네릭 형식 가변성 한정자를 이용해 제네릭 형식 간의 하위 형식 관계 정의
■ 예제 애플리케이션 작성

이 책의 대상 독자

■ 객체, 클래스, 생성자, 인터페이스, 메소드, 게터, 세터, 제네릭 형식을 비롯한 객체지향 프로그래밍의 기본 개념과 자바에 익숙해야 한다. 이러한 기본 개념에 익숙하지 않다면 이 책을 제대로 이해하기 어려울 수 있으므로, 자바 기본서를 먼저 공부하고 이 책을 읽기 바란다.
■ 안드로이드 플랫폼에 대한 지식이 필수는 아니지만, 이 책에 나온 예제와 코틀린으로 해결할 수 있는 문제를 제대로 이해하는 데 도움이 된다. 안드로이드 애플리케이션을 개발해본 경험이 있는 개발자라면 기본적으로 충분하다. 안드로이드 플랫폼에 대한 지식이 충분하지 않더라도 객체지향 개념에 익숙하다면 큰 문제 없이 이 책을 공부할 수 있다.
새로운 기술을 배우는 데 거부감이 없는 열린 사고를 가지고 있다면 공부하는 데 큰 도움이 된다. 이 책을 공부하는 동안 호기심을 자극하는 구상이 있다면 직접 테스트하고 확인해보기를 권한다.

이 책의 구성

1장, ‘코틀린 시작하기’에서는 독자에게 코틀린 플랫폼을 소개하고 코틀린 언어와 특징, 장점을 설명한다. 또한 코틀린을 안드로이드 개발 프로세스에 적용하는 방법을 알아본다.
2장, ‘기본 개념’에서는 코틀린의 기본 구성요소를 주로 살펴본다. 코틀린의 다양한 구문과 데이터 형식, 그리고 흥미로운 특징을 소개한다.
3장, ‘함수’에서는 함수를 정의하고 호출하는 여러 방법을 설명하며, 함수 식별자에 대해 알아보고, 함수를 정의할 수 있는 여러 위치에 대해 설명한다.
4장, ‘클래스와 객체’에서는 객체지향 프로그래밍과 관련된 코틀린의 특징에 대해 알아본다. 클래스의 다양한 형식에 대해 배우고, 가동성을 개선하기 위한 기능으로 속성 연산자 오버로딩과 중위 호출에 대해 배운다.
5장, ‘일급 객체로서의 함수’에서는 코틀린의 함수형 프로그래밍과 일급 객체로서의 함수 지원에 대해 알아본다. 또한 람다, 상위 함수, 함수 형식에 대해 배운다.
6장, ‘제네릭’에서는 제네릭 클래스, 인터페이스, 함수에 대해 알아본다. 또한 코틀린의 제네릭 형식 시스템에 대해 자세히 살펴본다.
7장, ‘확장 함수와 속성’에서는 기존 클래스에 상속을 사용하지 않고 새로운 동작을 추가하는 방법을 알아본다. 또한 컬렉션과 스트림 처리를 수행하는 더 간단한 방법도 논의한다.
8장, ‘위임’에서는 코틀린의 기본 제공 언어 기능으로 클래스 위임을 간소화하는 방법을 알아본다. 또한 기본 제공 속성 대리자를 사용하는 방법과 맞춤형 대리자를 정의하는 방법을 배운다.
9장, ‘마블 갤러리 애플리케이션 만들기’에서는 지금까지 설명한 거의 모든 기능을 사용해 코틀린으로 완전히 작동하는 안드로이드 애플리케이션을 직접 제작한다.

저자/역자 소개

지은이의 말

오늘날 안드로이드 애플리케이션을 개발하기 위한 프로세스에는 아주 다양한 주제가 포함된다. 지난 몇 년간 이러한 개발 프로세스를 돕는 다양한 툴이 출시됐지만, 안드로이드 애플리케이션 개발의 핵심 요소인 자바는 거의 변하지 않았다. 안드로이드 플랫폼은 새로운 버전의 자바를 도입하고 있지만, 이를 사용하려면 새로운 안드로이드 장치가 시장에 완전히 보급될 때까지 오래 기다려야 한다. 또한 자바 자체가 이전 버전과의 호환성 때문에 해결하기 어려운 디자인 문제를 많이 내포하는 오래된 언어이므로, 자바를 이용해 애플리케이션을 개발하려면 여러 가지 부수적인 과제를 극복해야 한다.
코틀린은 자바가 해결하지 못한 여러 문제를 해결할 수 있는 새롭고 안정적인 언어며, 모든 안드로이드 장치에서 사용할 수 있다. 코틀린은 유용성이 입증된 여러 새로운 프로그래밍의 개념을 안드로이드 개발 환경에서 지원하고, 표현력이 우수하며, 더 안정적이고 간결한 코드를 작성할 수 있게 해준다.
이 책은 코틀린을 이용한 안드로이드 개발 프로세스의 속도를 높이고 개선하기 위한 따라 하기 쉽고 실행적인 안내서로서, 자바에 비해 간소하고 개선된 방법으로 일반적인 문제를 해결하는 새로운 방법을 소개한다. 이 책을 모두 공부하면 코틀린의 기능과 툴에 익숙해지고, 코틀린을 이용해 안드로이드 애플리케이션을 개발할 수 있게 된다.

지은이 소개

마르친 모스칼라(Marcin Moskala)

전문 안드로이드 개발자로 초기 베타 시절부터 적극적으로 코틀린 개발자 커뮤니티에 관여하고 있으며, 코틀린과 관련된 업계 매체에 기사를 쓰고 프로그래밍 컨퍼런스에서 강연하고 있다. 또한 프로그래밍과 오픈소스 커뮤니티에서 활발히 활동 중이며, 인지과학과 데이터 과학에도 관심이 많다.
웹사이트(marcinmoskala.com)나 깃허브(MarcinMoskala)에서 그와 만나거나 트위터(@marcinmoskala)에서 팔로우 할 수 있다.

이고르 워다(Igor Wojda)

11년간 소프트웨어 개발 분야에서 일한 전문 소프트웨어 엔지니어며, 안드로이드와 인연을 맺은 후에는 보건 업계에서 선임 안드로이드 개발자로 일하고 있다. 코틀린 1 .0 버전이 정식 출시되기 이전부터 코틀린에 관심을 가지고 코틀린 커뮤니티에서 활발하게 활동했다. 코딩에 대한 열정을 동료 개발자와 공유하는 것을 좋아한다.
미디엄(@igorwojda)에서 그와 만나거나 트위터(@igorwojda)에서 팔로우할 수 있다.

옮긴이의 말

코틀린은 널리 사용되는 인텔리제이 IDEA의 개발사인 젯브레인스(JetBrains)에서 2011년에 개발해 공개한 언어다. JVM 기반의 언어이므로 자바와 완벽하게 상호운용할 수 있으며, 특정 플랫폼의 기계어로 컴파일하는 것도 가능하다.
처음부터 자바를 대체하는 것을 염두에 두고 개발됐기 때문에, 자바 언어의 여러 근본적인 문제점을 해결했으며, 최근에 각광받고 있는 최신 언어들의 장점을 모두 흡수한 차세대 언어이기도 하다.
자바 라이선스를 보유한 오라클과 구글의 불편한 관계를 고려할 때, 장기적으로 구글이 안드로이드 개발 환경을 자바에서 코틀린으로 대체할 것이라는 시각이 많았으며, 이런 예상을 현실화하듯이 2017년 5월 구글은 코틀린을 안드로이드의 공식 언어로 발표하기도 했다.
기존의 막대한 자바 코드베이스를 감안할 때, 단시간에 자바에서 코틀린으로 안드로이드 개발 환경이 전환되지는 않겠지만, 애플이 오브젝티브 C 대신 스위프트의 손을 들어줬듯이 앞으로 구글이 자바보다 코틀린에 대한 지원을 강화할 것은 분명해 보인다.
이 책이 코틀린이라는 밝은 가능성의 길로 안내하는 유용한 안내자가 되기를 바란다.

옮긴이 소개

최민석

2005년부터 번역 회사에서 언어 전문가로 일하다 독립한 후 현재는 IT 전문 번역가로 일하고 있다. 10여 년 동안 수백 건의 소프트웨어 현지화와 개발자 웹사이트 한글화 프로젝트를 진행했으며, 지금은 IT 전문 서적을 번역하는 일에 집중하고 있다. 번역한 책으로는 『리액트 디자인 패턴과 모범 사례』(에이콘, 2016), 『Unity 5.x By Example』(에이콘, 2016), 『유니티 5 메카님 캐릭터 애니메이션』(에이콘, 2016), 『네티 인 액션』(위키북스, 2016), 『유니티와 C#으로 배우는 게임 개발 교과서』(위키북스, 2015) 등이 있다.

목차

목차
  • 1장. 코틀린 시작하기
    • 코틀린 소개
    • 멋진 코틀린 예제
    • 코틀린 코드 다루기
      • 코틀린 플레이그라운드
      • 안드로이드 스튜디오
        • 프로젝트를 위한 코틀린 구성
        • 새로운 안드로이드 프로젝트에서 코틀린 사용
        • 자바-코틀린 변환기(J2K)
        • 코틀린 코드를 실행하는 다른 방법
    • 코틀린의 내부 작동 방식
      • 코틀린 표준 라이브러리
    • 코틀린의 장점
    • 요약

  • 2장. 기본 개념
    • 변수
    • 형식 유추
    • 엄격한 null 안전성
      • 안전 호출
      • 엘비스 연산자
      • non-null 주장
      • let
    • null 가능성과 자바
    • 형변환
      • 안전/불안 형변환 연산자
      • 스마트 형변환
        • 형식 스마트 형변환
        • null 불허 스마트 형변환
    • 기본형 데이터 형식
      • 숫자
      • Char
      • 배열
      • 부울 형식
    • 복합 데이터 형식
      • 문자열
        • 문자열 템플릿
      • 범위
      • 컬렉션
    • 문과 식
    • 제어 흐름
      • if 문
      • when 식
      • 반복문
        • for
        • while 반복문
        • 그 밖의 반복문
        • break와 continue 문
    • 예외
      • try...catch 블록
    • 컴파일 타임 상수
    • 위임
    • 요약

  • 3장. 함수
    • 기본적인 함수 선언과 사용법
      • 매개변수
      • 함수에서 반환
    • vararg 매개변수
    • 단일 식 함수
    • 꼬리 재귀 함수
    • 함수를 호출하는 다른 방법
      • 기본 인수 값
      • 명명된 인수 구문
    • 최상위 함수
    • 최상위 함수의 내부 작동 방식
    • 로컬 함수
    • Nothing 반환 형식
    • 요약

  • 4장. 클래스와 객체
    • 클래스
      • 클래스 선언
    • 속성
      • 읽기 쓰기와 읽기 전용 속성
      • 코틀린과 자바와 속성 접근 구문
        • 증가 및 감소 연산자
      • 맞춤형 게터/세터
        • 게터와 속성 기본 값
      • 지연 초기화되는 속성
      • 속성과 애노테이션
      • 인라인 속성
    • 생성자
      • 속성과 생성자 매개변수의 비교
      • 기본 인수를 갖는 생성자
        • 패턴
    • 상속
      • JvmOverloads 애노테이션
    • 인터페이스
    • 데이터 클래스
      • equals와 hashCode 메소드
      • toString 메소드
      • copy 메소드
      • 구조분해 선언
    • 연산자 오버로딩
    • 객체 선언
    • 객체 식
    • 컴패니언 객체
      • 컴패니언 객체의 인스턴스 생성
    • 열거 클래스
    • 명명된 메소드에 대한 중위 호출
    • 가시성 한정자
      • internal 한정자와 자바 바이트코드
    • 봉인 클래스
    • 중첩 클래스
    • 별칭 임포트
    • 요약

  • 5장. 일급 객체로서의 함수
    • 함수 형식
      • 함수 형식의 내부 작동 방식
    • 익명 함수
    • 람다식
      • 단일 매개변수의 암시적 이름
    • 상위 함수
      • 함수를 작업으로서 제공
      • 관찰자(수신기) 패턴
      • 스레드 작업 후 콜백
    • 명명된 인수와 람다식의 조합
    • 마지막 람다식 인수 규칙
      • 주변 코드 명명
      • LINQ 스타일로 데이터 구조 처리
    • 코틀린의 자바 SAM 지원
    • 명명된 코틀린 함수 형식
      • 함수 형식의 명명된 매개변수
      • 형식 별칭
    • 사용되지 않는 변수를 위한 밑줄
    • 람다식의 구조분해
    • 인라인 함수
      • noinline 한정자
      • 논로컬 반환
      • 람다식의 라벨 반환
      • crossinline 한정자
      • 인라인 속성
    • 함수 참조
    • 요약

  • 6장. 제네릭
    • 제네릭
      • 제네릭의 필요성
        • 형식 매개변수와 형식 인수
    • 제네릭 제약 조건
      • null 가능성
    • 변량
      • 변량 한정자
      • 사용 위치 변량과 선언 위치 변량
      • 컬렉션 변량
      • 변량 생산자/소비자 제한
      • 고정 생성자
    • 형식 삭제
      • reified 형식 매개변수
        • startActivity 메소드
    • 별표 프로젝션
    • 형식 매개변수 명명 규칙
    • 요약

  • 7장. 확장 함수와 속성
    • 확장 함수
      • 확장 함수의 내부 작동 방식
        • 메소드 재정의 불가
        • 수신자 요소 접근
        • 확장은 정적으로 확인된다
      • 컴패니언 객체 확장
      • 확장 함수를 이용한 연산자 오버로딩
      • 최상의 확장 함수의 적절한 사용 위치
    • 확장 속성
      • 확장 속성은 어디에 사용해야 할까?
    • 멤버 확장 함수와 속성
      • 수신자의 형식
      • 멤버 확장 함수와 속성의 작동 방식
    • 제네릭 확장 함수
      • 컬렉션 처리
        • 코틀린 컬렉션 형식의 계층
        • map, filter, flatMap 함수
        • forEach와 onEach 함수
        • withIndex와 indexed 변형
        • sum, count, min, max, sorted 함수
        • 그 밖의 스트림 처리 함수
        • 스트림 컬렉션 처리의 예
        • 시퀀스
    • 수신자가 있는 함수 리터럴
      • 코틀린 표준 라이브러리 함수
        • let 함수
        • 초기화를 위한 apply 함수 이용
        • also 함수
        • run과 with 함수
        • to 함수
      • DSL(domain-specific language)
        • Anko
    • 요약

  • 8장. 위임
    • 클래스 위임
      • 위임 패턴
      • 데코레이터 패턴
    • 속성 위임
      • 위임 속성이란?
      • 미리 정의된 대리자
        • lazy 함수
      • notNull 함수
      • observable 대리자
        • vetoable 대리자
        • Map 형식으로 속성 위임
      • 맞춤형 대리자
        • 뷰 바인딩
        • SharedPreferences 바인딩
        • 대리자 제공
    • 요약

  • 9장. 마블 갤러리 애플리케이션 만들기
    • 마블 갤러리
      • 진행 방법
      • 새로운 프로젝트 만들기
      • 캐릭터 갤러리
        • 뷰 구현
        • 네트워크 정의
        • 비즈니스 논리 구현
        • 구현한 작업을 하나로 묶기
      • 캐릭터 검색
      • 캐릭터 프로필 표시

도서 오류 신고

도서 오류 신고

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

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

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