アマチュアでもできるKotlin-Android1「プロジェクトをKotlin化」

Kotlinでコード減らしたい!アマグラマの手抜き戦略

趣味でほそぼそAndroidいじって一応アプリ公開までいきましたが、AsyncTaskうぅ〜ん、なんでBundleにやたら詰めるんだろう、そもそもJava7(´Д` )ってありがちな課題でうろうろ調べていた去年末、Kotlinが熱いらしいとググりつけ調べてみました。ぱっと見Swiftに似てるし比較的早く習得できるかなと、去年の年末あたりから調べだしたらドンピしゃで個人的にはこれからKotlin中心で頑張りたいなあと思っています。気軽に新し目の技術に触れれるのがアマチュアのいいところですね。

そもそもKotlinって何?

IntelliJ IDEAとかいけてるIDEの開発元JetBrains社が新しく作ったJVM言語。2月に晴れて正式リリース。Java7でうんうんいってるAndroid界隈中心にBetterJavaの一角としてにょきにょき話題になってます。Null-Safety(ぬるぽなし)でPragmatic(実用的)なところがお気に入り。本当覚えること少ないんだよね。言語の特徴はこないだ参加したKotlin 1.0リリース記念勉強会 in 京都 http://kanjava.connpass.com/event/27758/ で発表していただいたこのスライドがわかりやすかったです。

www.slideshare.net

じゃAndroidでKotlin始めてみよう

といってもAndroidStudioでPreferences->PluginでKotlinのプラグインインストール後プロジェクト内のJavaファイルをKotlinにコンバートするだけでbuild.gradleまでKotlin用の設定に書き換えてくれます。IntelliJ IDEA さんまじカッケー。あ、KotlinはJetBrainsさん開発だった(・ω<) テヘペロ。手順詳細はhttps://www.gaprot.jp/pickup/tips/kotlin_for_androidで確認どうぞ

f:id:poTracy:20160419155238p:plain

変換したbuild.gradleの主要部分は以下です。今回はHTTPclientのRetrofitと画像読み込み、キャッシュのライブラリPicasso、Kotlin入れると使えるDataBindingのプラグイン Kotlin Android Extensionsも入れてみます。

    //KotlinExtention追加
    apply plugin: 'kotlin-android-extensions'

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.3.0'
        compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
        //今回はRetrofit2と
        compile 'com.squareup.retrofit2:retrofit:2.0.0-beta3'
        compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
        //Picassoを使ってみます
        compile 'com.squareup.picasso:picasso:2.5.2'
    }

    buildscript {
        ext.kotlin_version = '1.0.1-2'
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        }
    }
    
    repositories {
        mavenCentral()
    }

で、紐つけたいActivityにimport分追加するとバイバイfindViewByIDできます。

import kotlinx.android.synthetic.main.activity_main.*

f:id:poTracy:20160419154141p:plain

簡単です。IntelliJ IDEAの強力なサポートは超魅力的。次回はFragmentあたりを実装していきたいと思います