Androidで利用できるKotlinの非同期プログラミング拡張Coroutines — Android Studioへの導入
5G時代が目前に迫る今、大量のデータストリームを処理するのに非同期実行は不可欠だ。
非同期プログラミングといえばReactiveプログラミングが広まってきている。RxJavaをはじめ多くの言語に実装されている。
一方、KotlinはVersion 1.3になって非同期プログラミングをサポートする拡張、Coroutinesを正式に備えた。
本項目ではCoroutinesについて調査したことを記録していきたい。
準備: Android Studioへの導入
Kotlinを使用することになっているプロジェクトを想定する。
手順1
Gradle Scriptsの中にあるbuild.gradle(Project:My Application)を見ると
buildscript {
ext.kotlin_version = '1.3.50'
repositories {
google()
jcenter()
}
のようにKotlinのバージョンが記されている。これを記憶しておく。
Coroutinesの元サイトに行って注意書きを読むと上記のKotlinのバージョンについて「最新版を使うように」との言及がある。まずそれに従う。つまりこの元サイトのものより古いものを使っていたら、アップデートしてから手順2の作業に取りかかる。
手順2
Gradle Scriptsの中にあるbuild.gradle(Module: app))を開いて上記サイトからコピーした二つのリンクをdependenciesに入れる。
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2'
具体的に入れた例は以下のようになるはず。
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
あとはSyncすればKotlinのソースにおいて
CoroutineScope(Dispatchers.IO).launch {
Log.i("MyTag", "Hello from ${Thread.currentThread().name}")
}
ソースコードにおけるCoroutineScopeのようなキーワードに補完が働いて読み込みが上手くいったことが分かる。