차세대 안드로이드 개발자를 위한: 커니의 코틀린

코틀린의 시대가 열렸습니다.

모바일 데이터베이스 업체 렐름(Realm)에서는 자사 데이터베이스 사용자 10만 명을 대상으로 익명 조사를 실시했다. 이 조사에 따르면, 코틀린을 공식 지원하기 전 자바로 개발하던 앱의 20%가 이제 코틀린으로 개발되고 있다. – 관련기사

 

코틀린, 어떻게 익히면 좋을까요?

코틀린은 러닝커브가 낮다고 합니다. 그래서 경험 있는 자바 개발자들은 코틀린의 기본적인 내용을 파악하는 데 몇 시간만 투자하면 된다고 하는데요. 그렇다면 코틀린 문법을 처음부터 끝까지 나열할 게 아니라 자바와 비교하면서 한눈에 보는 게 낫지 않을까요?

자바가 코틀린 코드로 자동 변환되지만, 그 변환기가 알파고 수준은 아니랍니다(코틀린의 단점 찾았..?). 그렇다면 코틀린다운 코틀린 코드를 작성하는 방법을 익혀, 변환된 코드를 수정하는 방법을 예제로 익히는 게 도움이 되지 않을까요?

게다가 문법만 코틀린인 예제를 위한 예제가 아니라, 실무에서 바로 쓸 수 있는 코틀린다운 코틀린 코드로 구현된 예제라면?

자바에 코틀린 한 조각 넣어보시면 어떤가요?

 

차세대 안드로이드 개발자를 위한 커니의 코틀린

실무에서 쓰는 라이브러리를 활용하여 프로젝트를 개선하는 법까지 한번에!
자바와 비교해 직관적으로 문법을 익힌 후 코틀린다운 코드를 만드는 노하우를 얻는다!

저자: 김태호
출간일: 2017.12.08.

 

1. 어서와, 코틀린은 처음이지?

자바 문법과 코틀린 문법과의 1:1 비교를 통해, 코틀린 문법을 빠르고 쉽게 익힐 수 있도록 도와줍니다.

javakotlin
public class Foo {
  int a;
  char b;
  public Foo(int a, char b) {
     this.a = a;
     this.b = b;
   }
  // a의 값만 인자로 받는 추가 생성자
   public Foo(int a) {
     this(a, 0);
    }
  // 두 인자의 값을 모두 0으로
   // 지정하는 생성자
  public Foo() {
    this(0, 0);
  }
}
class Foo(val a: Int, var b: Char) {




    // a의 값만 인자로 받는 추가 생성자
    // 기본 생성자를 반드시 호출해야 함
    constructor(a: Int) : this(a, 0)

    // 두 인자의 값을 모두 0으로
    // 지정하는 생성자
    constructor(): this(0, 0)
}

2. 코틀린의 유용한 기능 소개

동일한 기능을 구현하더라도, 자바보다 더 간결하고 안전하게 작성할 수 있도록 도와주는 코틀린의 유용한 기능들을 소개합니다.

javakotlin
// 반지름을 지정하지 않을 경우 25로 설정합니다.
void drawCircle(int x, int y) {
  // 원본 메서드를 호출합니다.
  drawCircle(x, y, 25);
}

// 모든 매개변수를 갖는 원본 메서드
void drawCircle(int x, int y, int radius) {
  ...
}

// 중심축이 (10, 5)인 원을 그립니다.
// 반지름을 지정하지 않았으므로 원의 반지름은 25
drawCircle(10, 5);
// 반지름의 기본값으로 25를 갖는 함수
fun drawCircle(x: Int, y: Int, radius: Int = 25) {
  ...
}







// 중심축이 (10, 5)인 원을 그립니다.
// 반지름을 지정하지 않았으므로 원의 반지름은 25
drawCircle(10, 5)
메서드의 매개변수가 많으면 축약된 매개변수를 갖는 메서드와
전체 매개변수를 갖는 메서드를 별도로 만들어 사용했습니다.
매개변수에 아무 값이 대입되지 않을 경우 기본값을 지정할
수 없어서 두 종류의 메서드를 만들어야 했습니다.
코틀린에서는 함수의 매개변수에 기본값을 지정할
수 있습니다. 왼쪽 자바 코드와 역할이 동일합니다.

3. 자바 코드, 코틀린으로 어떻게 변환해야 할까요?

코틀린은 자바와 100% 호환되지만, 올바르게 변환하지 않는다면 예상치 못한 문제를 겪게 될 수 있습니다. 코틀린 실무 적용 경험을 바탕으로 한 ‘올바른 자바-코틀린’ 변환 방법과, 자바-코틀린 혼용시 유의해야 할 사항을 통해 여러분의 앱에 코틀린을 적용할 수 있도록 도와줍니다.

javakotlin(변환 직후)
// 버튼 인스턴스
Button button = ...

// 버튼에 리스너를 설정합니다.
button.setOnClickListener(new View.OnClickListener(){
  @Override
  public void onClick(View v) {
    ...
  }
});
// 버튼 인스턴스
val button = ...

// 버튼에 리스너를 설정합니다.
button.setOnClickListener(object: View.OnClickListener{
  override fun onClick(v: View) {
    ...
  }
})
뷰의 클릭 리스너를 설정하는 예입니다.여기서 View.OnClickListener 인터페이스는 단 하나의 함수만
포함하고 있습니다.

 

kotlin(다시 변경)kotlin(수정 후)
// 버튼 인스턴스
val button = ...
// onClick() 함수는 View를 인자로 받고 아무 인자도
// 반환하지 않으므로(void)
// 다음과 같이 함수형으로 표현할 수 있습니다.
button.setOnClickListener({ view: View -> Unit
  ...
})



// 함수형 인자를 전달하므로 괄호를 생략하고
// 간략히 표현할 수 있습니다.
button.setOnClickListener {
  ...
}
이 경우 SAM 변환이 지원되므로, 인터페이스 구현 대신
onClick() 함수만 전달할 수 있습니다.
setOnClickListener() 함수의 인자로 인터페이스 대신
함수 구현을 전달하도록 변경한 코드입니다.
onClick() 함수의 인자가 하나이므로 람다 표현식에서 인자를
생략할 수 있고, 람다 표현식에서 Unit을 반환하므로 반환 타입
또한 생략할 수 있습니다. 또한, setOnClickListener() 함수의
유일한 인자이자 마지막 인자로 함수형 인자가 전달되므로,
괄호를 생략할 수 있습니다.

4. 실무에 바로 쓰는 예제

‘예제를 위한 예제’가 아닌, 실무 프로젝트에 바로 적용할 수 있는 수준의 예제를 제공합니다. 예제에서는 안드로이드 애플리케이션에서 사실상 표준으로 사용하는 라이브러리인 Glide, Retrofit, RxJava, 안드로이드 아키텍처 컴포넌트(Android Architecture Components), 대거(Dagger)를 코틀린과 함께 사용하는 방법을 다룹니다.

 

코틀린은 단순히 안드로이드 개발만을 위해 존재하는 게 아닙니다. iOS 앱뿐 아니라 풀스택 웹 개발, 임베디드와 IoT 등 다양한 플랫폼에서 모든 개발을 코틀린으로 할 수 있도록 하는 목표를 가지고 태어난 언어입니다.

코틀린. 이제 <커니의 코틀린>으로 시작해 보세요.

yes24 / 교보문고 / 알라딘 / 인터파크

* 예제 Github 저장소: https://github.com/kunny/kunny-kotlin-book
* 페이스북 페이지: https://www.facebook.com/kunny.kotlin
* 페이스북 커뮤니티: https://www.facebook.com/groups/kunny.kotlin

* 출간 전, 저자(김태호)와의 인터뷰 글을 보시려면 여기로

 

광활한 파이썬 세계를 여행하는 히치하이커를 위한 안내서

 

입체표지
파이썬을 여행하는 히치하이커를 위한 안내서
(케네스 라이츠·타냐 슐로서 지음 | 김은지 옮김 | 376쪽)

광활한 파이썬 세계를 여행하다 보면, 어느 방향을 선택해야 할지 고민하는 순간이 옵니다. 최선을 고민하는 히치하이커에게 나침반 역할이 되어 줄 종합 안내서를 소개합니다. 파이썬 커뮤니티의 집단지성으로 완성된 ‘파이썬스러운’ 가이드! 《파이썬을 여행하는 히치하이커를 위한 안내서》입니다.

Untitled-1

http://docs.python-guide.org

《파이썬을 여행하는 히치하이커를 위한 안내서》는 파이썬 사용자 사이에서 널리 알려진 웹사이트「The Hitchhiker’s Guide to Python」를 책으로 정리한 버전입니다. 오픈 소스 프로젝트로 시작해 백 명이 넘는 커뮤니티 일원이 공동으로 힘을 모아 정리한 《파이썬을 여행하는 히치하이커를 위한 안내서》는 기존 파이썬 도서나 자료와는 성격이 다릅니다. 파이썬 언어 자체에 초점을 맞추지 않았습니다. 파이썬 설치부터 개발 환경 구성, 파이썬스럽게 코드를 작성하는 방법, 상황별 사용 가능한 라이브러리 등 파이썬을 둘러싼 방대한 내용을 일목요연하게 정리한 가이드 북입니다.

본문 미리보기

 1. 나에게 최적화된 개발 환경 설정하기!

파이썬을 막 시작한 분이라면 처음부터 명쾌하지 않은 질문에 대한 답을 고민하게 됩니다. 파이썬 2와 파이썬 3 중 어느 버전을 선택해야 할까요? 파이썬 3가 대세임에도 불구하고, 여전히 파이썬 2에 머물러 있는 분야가 있습니다. 이 책은 두 버전의 차이와 어떤 경우에 2 또는 3을 선택하는 게 좋을지를 경험자의 입장에서 설명해  주며 가이드를 제시합니다. (파이썬으로 처음 프로그래밍에 입문한 사람이나 버전을 신경 쓰지 않아도 되는 개발자라면, 파이썬 3를 사용하길 권장하고 있습니다.) 또한 파이썬 코드를 수정하고 테스트 및 디버그하는 과정에서 자주 쓰는 텍스트 편집기와 통합 개발 환경(IDE), 기타 개발 도구를 소개함으로써, 코딩 취향과 목적을 토대로 자신에게 좀 더 맞는, 내 목적에 좀 더 적합한 선택을 할 수 있도록 도와줍니다.

2. 파이썬을 ‘파이썬스럽게’ 사용하기!

가독성 높은 코드 작성은 파이썬 디자인의 핵심입니다. 파이썬 사용자들은 일정한 컨벤션, 코드 레이아웃, 코드 스타일을 준수하기 위해 노력하고 있습니다. 따라서 이런 파이썬 생태계를 이해하는 것은 중요한 부분입니다. 파이썬 사용자들은 파이썬을 ‘파이썬스럽게’ 쓰는 방법에 대해 많은 고민을 하고 있습니다. 이를 증명하듯 ‘파이썬 모범 사례 및 패턴’은 컨퍼런스 또는 세미나에서 인기 있는 주제 중 하나입니다. 이 책은 그런 고민을 하는 개발자를 위한 내용을 정리해 놓았습니다. 참고하면 좋을 코드 패턴 사례를 살펴보고, 제대로 로그를 기록하는 방법, 코드 테스트, 코드를 관리하고 개선하는 법, 코드를 패키징하고 배포하는 최선의 방법 등을 골고루 다룸으로써 파이썬을 더 파이썬스럽게 사용하는 베테랑 사용자로 한 단계 나아갈 수 있도록 안내합니다.

3.사용 목적에 따른 다양한 라이브러리 선택하기!

파이썬의 한계는 어디까지 일까요? 파이썬은 방대한 라이브러리로 둘러싸여 있습니다. 과학, 분석, 엔지니어링을 위한 기본 작업을 지원하는 라이브러리, 네트워킹에 필요한 라이브러리, 데이터베이스와 상호작용하는 라이브러리 등 각각의 주제별로 살펴보며 여러분의 프로젝트에 사용할 라이브러리 선택을 도와 줍니다.

“Life is Short, You need Python.”

인생은 짧기에 파이썬이 필요하다는 이 문장은 파이썬의 여러 특징을 함축하고 있습니다. 가독성이 높은 파이썬은 배우기가 쉬워 초보자의 시간과 노력을 절감해 주고, 다수가 참여하는 오픈 소스 프로젝트에서도 빛을 발합니다. 이 책으로 파이썬의 특징과 장점을 좀 더 빨리 파악함으로써, 파이썬을 더 효율적으로 사용할 수 있는 방법을 발견하는 데 도움이 되었으면 합니다.

▶ [ Yes24 ] [ 교보문고 ] [ 알라딘 ] [ 인터파크 ]