Coroutinesを使ってみるAndroidKotlinこんにちは。ピクトリンク事業部の古川です。Androidでは従来ReactiveXが主流ですが、最近話題になっているCoroutinesを使った非同期処理の実装について解説します。Coroutinesとは?よく誤解されますが、CoroutinesとReactiveXは全くの別物です。ReactiveXは非同期処理をストリームで実施するためのものですが、Coroutinesは、「特定のスレッドに束縛されない、中断可能な計算処理インスタンス」です。「特例のスレッドに束縛されない」ため、Androidでは非同期処理に用いられることが多いです。そのためReactiveXとの比較で語られることが多いですが、性質が異なることを意識しておいてください。Coroutinesを導入する利用するにはbuild.gradleに情報を追加します。Experimentalですので、その情報も追加します。今回はサンプルとして、GitHubのAPIをRetrofitでコールしたレスポンスを画面に表示するアプリを作ってみます。事前準備RetforitでAPIを叩くために、InterfaceとModelを準備します。"http://www.github.com")実際に使ってみる次に、このAPIを叩くメソッドを用意します。今回はViewModelに実装します。User()}}fetchUserメソッドの1行目が最も重要な部分です。返却値の型としてUserをDeferredで返します。ReactiveXだとSingle<User>になると思います。async(CommonPool)はコルーチン内をスレッドプールで実行する、という理解でいいと思います(こちらを参考に)後は通常通り、userを返却してあげているだけです。それでは、このメソッドを呼び出してみます。{dialog.show()mainViewModel.fetchUser("furusin").await()dialog.dismiss()}}}}単純に「処理開始時にダイアログを表示し、終わったら画面に反映して閉じるだけ」の処理をしています。launch(UI)は「UIスレッドで実行してね」という意味になります。awaitする(待つ)」という意味です。最後に、画面に表示するXMLと画面イメージです。/></androidx.constraintlayout.widget.ConstraintLayout></layout>まとめ非常に簡単ではありますが、以上でCoroutinesを試してみることができました。完全にReactiveXをCoroutinesに置き換えることはまだまだ難しいとは思いますが、ReactiveXよりも考えることが比較的少なく、実装も容易ですので今後はCoroutinesも選択肢のひとつになっていくと思います。