Androidアプリ開発におけるMoshiとRetrofitの組み合わせ


まず、AndroidプロジェクトにMoshiとRetrofitを導入する方法から始めましょう。まず、アプリのbuild.gradleファイルに以下の依存関係を追加します。

dependencies {
    // Moshi
    implementation 'com.squareup.moshi:moshi:1.12.0'
    implementation 'com.squareup.moshi:moshi-kotlin:1.12.0'

    // Retrofit
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-moshi:2.9.0'
}

これにより、MoshiとRetrofitのライブラリがプロジェクトに組み込まれます。

次に、Moshiを使用してJSONデータをパースする方法を見てみましょう。Moshiでは、データクラスとJSONの間で変換を行うためのアノテーションを使用します。例えば、以下のようなデータクラスがあったとします。

data class User(val name: String, val age: Int)

このデータクラスをJSONに変換するには、MoshiのJsonAdapterを使用します。

val moshi = Moshi.Builder().build()
val jsonAdapter: JsonAdapter<User> = moshi.adapter(User::class.java)
val userJson = "{\"name\":\"John\", \"age\":30}"
val user: User? = jsonAdapter.fromJson(userJson)

上記のコードでは、MoshiのJsonAdapterを使用してJSONをデータクラスに変換しています。

次に、Retrofitを使用してREST APIとの通信を行う方法を見てみましょう。Retrofitでは、APIのエンドポイントを定義し、リクエストとレスポンスの形式を指定します。例えば、以下のようなAPIインターフェースがあったとします。

interface ApiService {
    @GET("users")
    suspend fun getUsers(): List<User>
}

このインターフェースを使用してAPIリクエストを行うには、RetrofitのRetrofit.create()メソッドを使用します。

val retrofit = Retrofit.Builder()
    .baseUrl("https://api.example.com/")
    .addConverterFactory(MoshiConverterFactory.create(moshi))
    .build()
val apiService: ApiService = retrofit.create(ApiService::class.java)
val users: List<User> = apiService.getUsers()

上記のコードでは、RetrofitのRetrofit.create()メソッドを使用してAPIサービスのインスタンスを作成し、getUsers()メソッドを呼び出しています。

以上が、Androidアプリ開発におけるMoshiとRetrofitの基本的な使用方法です。Moshiを使用してJSONデータをパースし、Retrofitを使用してREST APIとの通信を行うことができます。これらのライブラリの組み合わせは、効率的かつシンプルなデータの受け渡しを実現するために役立ちます。