뉴스 경로에 Kotlin 배포

7172 단어 AndroidKotlin
이 글은 Gunosy Advent Calendar 2017의 19일째 글입니다.
어제 보도는 @ysekky 선생의 자연 언어 처리×뉴스 연구 요약 ~ EMNLP 2017 Workshop입니다.
안녕하세요.뉴스경로개발부@kazuhiro23.
뉴스 경로는 안드로이드를 책임진다.
안드로이드 경력은 대략 2년이 되었다.
나는 후지 록, 캠핑, 스키, 맛있는 음식과 술을 좋아한다.
이 글에서 뉴스 경로에서 Kotlin을 가져오는 것을 소개하고 싶은데, 내용이 매우 부드럽다.

Kotlin


나는 이미 설명할 필요가 없다고 생각한다. 간단하게 설명해라.
Kotlin은 JVM에서 실행되는 프로그래밍 언어로 JetBrains를 중심으로 개발되었습니다.
2011년 발표, 2017년 구글 I/O는 Kotlin을 안드로이드 앱 개발 언어로 선정했다.
특징으로 삼다
  • JVM에서 실행
  • Java보다 간결함
  • 대공 참조의 안전성
  • 정적 몰드 및 대상형
  • 이런 데가 있어요.

    뉴스 경로에 Kotlin을 배치하기 전의 상황


    뉴스 경로는 2016년 6월에 발표되었는데 당시 Kotlin의 도입은 보류되었고 자바로 개발되었다.
    제가 뉴스 경로에 연결된 것은 2016년 12월입니다. 그때부터 주변의 안드로이드 엔지니어들이 Kotlin을 사용하는 사람들도 증가했습니다.
    저는 Kotlin에도 관심이 있지만 아직 실무 경험이 없습니다.
    고노시에서 내가 회사에 들어왔을 때부터 Kotlin은 이미 도입되었다. "나는 뉴스 경로에 Kotlin을 가입하고 싶다."이런 말이 나왔습니다.

    그러면 어떻게 가져왔을까요?


    회사(2016/12/16)에 입사한 지 3개월 만에 익숙해진 단계에서 간단한 수정 홍보를 통해 갑자기 Kotlin을 도입했다.
    이것이 바로 당시의 약속↓ 2017/3/16, 딱 3개월 후(이것은 우연한 것이다)

    기존 Java 프로젝트에서 Kotlin을 사용하기 위해 app/build.gradlebuild.gradle 에서 이러한 느낌을 추가하면 사용할 수 있습니다.
    app/build.gradle
    apply plugin: 'kotlin-android'
    apply plugin: 'kotlin-kapt'
    apply plugin: 'kotlin-android-extensions'
    
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }
    
    dependencies {
        kapt 'org.parceler:parceler:{latest_version}'
        kapt 'com.android.databinding:compiler:{latest_version}'
    
        compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    }
    
    build.gradle
    buildscript {
        ext.kotlin_version = 'x.x.x'
        dependencies {
    
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        }
    }
    
    구노시도 이미 Kotlin을 도입한 경우가 있습니다. 무슨 일이 있으면 자바로 돌아가면 됩니다. "Kotlin을 가입해 봤습니다! 댓글로 남겨주세요!"이런 느낌으로 홍보를 제안했습니다.
    물론 당시에는 Kotlin에 대한 지식이 많지 않았기 때문에 고노시 팀의 안드로이드 엔지니어에게 평론을 시켜 Kotlin식의 작법을 기억하게 했다.

    현재 뉴스 경로의 Kotlin


    22% 정도가 Kotlin입니다.

    뉴스 경로 팀에서 Kotlin화된 규칙으로
  • 새 학급용 Kotlin
  • 그리 크지 않은 종류는 Kotlin으로 대체할 수 있다
  • 이런 느낌으로 진행되고 있습니다.
    하지만 기존의 반을 Kotlin으로 개작하고 기능의 추가를 하면 댓글이 어려워진다고 생각해서 Kotlin화를 생각할 때 먼저 Kotlin으로 전환하는 PR을 꺼내서 다른 부분을 수정하거나 새로운 기능을 추가한다.

    Kotlin의 학습회에 참가하세요.


    회사 내에 다른 안드로이드 엔지니어가 없거나 Kotlin을 쓸 사람이 없다면 Kotlin의 역량을 높이려면 인터넷이나 기술 서적에 의존할 수밖에 없다.
    거기서 공부회예요.일본 Kotlin 사용자 그룹의 학습회와 CA.kt 등이 있기 때문에 그곳에서 유행과 지금까지 몰랐던 것을 알 수 있으니 적극적으로 참가하는 것이 좋다.
    또한 Kotlin은 안드로이드뿐만 아니라 서버에서도 사용되기 때문에 Kotlin의 학습회에 가면 다양한 엔지니어들이 참가하는데 이것도 재미있는 커뮤니티라고 생각합니다.

    Kotlin의 장점 도입


    특징으로 드릴게요.
  • Java보다 간결함
  • 대공 참조의 안전성
  • 이 두 개는 여전히 매우 크다.
    Hoge.java
    if (hoge != null) {
        hoge.getXX();
    }
    for (Foo foo: fooList) {
        if (foo.flag) {
            barList.add(foo);
        }
    }
    
    Kotlin이라고 적혀있어요.
    Hoge.kt
    hoge?.getXX()
    fooList.filter { it.flag }.map { barList.add(it) }
    
    이렇게 상큼해졌어요.
    뉴스 경로에 Kotlin으로 쓴 곳에는 for문이 사용되지 않았습니다.(대략)
    그리고 저는 항상 Java로 개발하고 있습니다. 새로운 언어로 글을 쓰는 것이 신선하고 즐겁습니다.

    Kotlin 배포의 단점


    나쁜 점은 없지만 자바와 Kotlin이 섞여 있기 때문에 변수와 유형의 작법은 상반된다. "이렇게 말하면 Kotlin입니다...""그러고 보니 자바야..."이런 곳은 피곤해요.
    이것을 좀 더 일찍 Kotlin으로 고쳐 쓰면 문제없지만, 사람이 부족해서 이 상황은 한동안 계속될 것이다.

    Gunosy의 Kotlin


    안드로이드 앱이 있는 고노시, 뉴스 경로, 루크라는 모두 Kotlin을 사용한다.
    Lucra는 100% Kotlin이 개발한 것으로 향후 새로운 프로젝트는 Kotlin에서 진행될 예정이다.
    또한 일부 서버 측의 Kotlin도 사용하기 시작했습니다. 이전에 본사의 GitHub 자료 라이브러리에서 Kotlin은 Top Languages에 들어갔습니다!

    Gunosy에는 현재 12개의 Kotlin 저장소가 있습니다.

    총결산


    안드로이드의 각종 학습회에도 어떻게 도입되었는지 같은 소재가 많을 것 같지만 엘이 도입한 곳이 많다고 생각해요.
    회사에 따라 다양한 과정을 거치지 않고 가져올 수 없는 곳도 있을 수 있지만, 그런 곳이 아니면 쿨하게 Kotlin을 도입하세요!
    Kotlin 즐거웠어요!!

    좋은 웹페이지 즐겨찾기