AndroidではJavaの他、Kotlinも公式言語としてサポートされています。KotlinはJVM上で動作する静的な型付け言語で、言語体系がSwiftに似ています。そのため、Swiftに慣れた開発者であればすぐに習得できるかと思います(似ているので逆に戸惑う部分もあるのですが)。
今回はAndroid Studio 3系を使い、KotlinでNCMBを利用する方法を解説します。今回はKotlin 1.3から使えるようになったasync/awaitを利用する例です。
セットアップ
NCMBのセットアップは割愛して、Kotlinでasync/awaitを使う場合の下準備です。まず、Kotlinのバージョンが1.3系であるのを確認します。これは /build.gradle
で確認できます。
buildscript { ext.kotlin_version = '1.3.10' :
次に /app/build.gradle
に以下を追加します。
dependencies { :(省略) def coroutines_version = '1.0.1' implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version" }
これでasync/await(コルーチン)が使えるようになります。
コードについて
本来であれば同期処理である save
メソッドを使います。その際に async で囲んで、括弧の外でawaitを使うのがポイントです。
async(Dispatchers.Default) { obj.save() }.await()
これだけで処理が非同期化(コルーチン化)されます。
コルーチンとは
コルーチンは軽量なスレッドのようなものです。スレッドよりも簡単に使えるのがメリットです。
エラー処理について
async/awaitにおけるエラー処理はtry/catchで拾うようにします。
try { async(Dispatchers.Default) { obj.save() }.await() Log.d("[DEBUG]", "Saved 1.") var obj2 = NCMBObject("Setting") obj2.put("Key", "Setting Value2") async(Dispatchers.Default) { obj2.save() }.await() Log.d("[DEBUG]", "Saved 2.") } catch (e: NCMBException) { Log.d("[ERROR]", e.toString()) }
まとめ
async/awaitを使うことで、非同期処理のコールバック方式から、見やすいコードに変更できます。Kotlinのasync/awaitはとても分かりやすいので、NCMBと組み合わせる際には積極的に使っていきましょう。