カテゴリー: Android

はじめてのKotlinとAndroid StudioのKotlinプラグイン

はじめに

2017年5月17日(日本時間の18日未明)にあった、Google I/Oにて、Androidアプリ開発でKotlinを第一級言語の一つに選定し、Android Studio3.0からデフォルトサポートすることをGoogleが発表しましたね。

Kotlinは、Javaとの相互運用性が100%と謳われており、既存のAndroidアプリでも追加実装する部分はKotlinで実装することも容易なので、Kotlinの開発者も増えていくのではないでしょうか。

RE:ENGINESで開発中のAndroidアプリもこの発表を受けて(!?)、JavaからKotlinへ書き換えをしました。そこで、今回はKotlinの概要についてのブログを書きたいと思います。

Kotlinとは?

今更ではあるかもしれませんが、Kotlinについて簡単に説明します。

個人的には、Javaは好きな言語なので、Javaでも大きな不満はないのです。ただ、Kotlinは、Null安全だったり、関数が第一級オブジェクトであったり、一度慣れてしまえば、とても書きやすい言語だと思います。加えて、JVM言語のため、過去のJavaコードの資産がそのまま利用できるということもKotlinの良いところだと思います。

  • IntelliJ IDEA(Android Studioのベース)、RubyMine、PyCharmなどの開発元であるJetBrains社により開発された言語です。
  • 2016年2月15日にバージョン1.0として正式リリースされました。
  • 2017年5月17日にndroidアプリ開発でKotlinを第一級言語の一つに選定されました。
  • JVM言語でJetBrains社は「KotlinとJavaの相互運用性は100%」と謳っています。
  • 静的型付けであり、KotlinソースコードはJavaバイトコードに変換されます
  • swiftと同じようにNull安全な言語です。
  • 関数も第一級オブジェクトのため、変数に代入したり、関数の戻り値にしたりできます。

Android Studio 2.3でのKotlinプラグイン導入

Android Studio 3.0からは、Kotlinがデフォルトサポートのようですが、ブログ執筆時点では、Canaryリリースのため、今回は安定版のAndroid Studio 2.3でのKotlin導入方法を紹介します。

Kotlinプラグインのインストール

Android Studioを起動したら、左上のツールバーか、Android Studioの起動画面のConfigureから[Preferences]を選択してください。その後、検索ボックスで「Plugins」を入力して、[Install JetBrains plugins…]を押下します。

JetBrainsプラグインのリストが表示されますので、検索ボックスで「Kotlin」と検索し、Kotlinプラグインをインストールします。

JavaコードをKotlinコードに変換

従来とおなじく、Android Studioでプロジェクトを作成します。すると当然Javaコードでのプロジェクトが作成されますので、それをKotolinプラグインの機能を使い、Kotlinコードに変換をします。[Code]-[Convert Java File to Kotlin File]で変換できます。単純なJavaコードであれば、これだけでうまく変換されますが、複雑なものは変換後にコンパイルエラーとなるので丁寧にKotlinのSyntaxで書き換えていく必要があります。

Gradleのビルドファイルに追加

Kotlinをビルドするには、build.gradleにKotlinに関する記述を追加する必要があります。ただし、これも一度[Build]-[Rebuild Project]を実行すると下記の[Configure]が表示されるようになるので、この[Configure]をクリックし、プルダウンからKotlinのバージョンを選択することで、自動変換(追加)されます。今回は、最新ではなく「1.1.2-2」を選びます。1.1.2-3及び1.1.2-4では、不具合でDataBindingを利用した場合に、コンパイルがとおらない問題があるためです。その詳細はこちらのstack overflowの記事をご覧ください。

2017/7/15追記:1.1.3-2でもDataBindingが利用してもコンパイルが通ることが確認できました。


自動変換(追加)されたbuild.gradleは下記になります。

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = '1.1.2-2'
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        applicationId "com.re_engines.myapp.sample"
        minSdkVersion 21
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
}
repositories {
    mavenCentral()
}

 

Kotlin REPL

Kotlinプラグインの機能でREPLも提供されています。

[Tools]-[Kotlin]-[Kotlin REPL]を選択するとAndroid Studio上で、Kotlinのちょっとしたコードを実行して試すことができます。ただ、若干動作が不安定なような感じがしますので、ちょっとしたコードを試す場合は、Try Kotlinのサイトでも可能です。

さいごに

今回のブログでは、Kotlinの特徴とAndroid StudioでのKotlinプラグインの導入方法について、紹介しました。Android開発において、今後はKotlinで開発されることも多くなるのではないでしょうか。我々、RE:ENGINESも今後はAndroid開発において、Kotlinを積極的に使っていくこととしました。次回のブログ記事では、実際のコードと合わせて、Kotlinの特徴などを紹介していきたいと思います。

原弘

twitter: @hir_hara

シェア
執筆者:
原弘
タグ: KotlinAndroid

最近の投稿

フロントエンドで動画デコレーション&レンダリング

はじめに 今回は、以下のように…

3週間 前

Goのクエリビルダー goqu を使ってみる

はじめに 最近携わっているとあ…

1か月 前

【Xcode15】プライバシーマニフェスト対応に備えて

はじめに こんにちは、suzu…

2か月 前

FSMを使った状態管理をGoで実装する

はじめに 一般的なアプリケーシ…

3か月 前