🌐 Retrofitとは?
Retrofit は、HTTP通信(Web API)を簡単に行うためのライブラリです。
Square社が開発しており、Android界隈ではデファクトスタンダードな存在です。
Retrofitを使えば、URLにアクセスしてJSONデータを取得 → Javaオブジェクトに変換という流れが非常にシンプルになります。
🧠 Javaの「インターフェース+実装生成」的な発想
Retrofitは、
「APIの仕様をインターフェースで定義」 → 「Retrofitが実装を生成」
というスタイルを取るため、コードの見通しが非常によくなります。
🛠️ 使い方(ステップバイステップ)
① 依存ライブラリの追加(Gradle)
dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
}
② モデルクラスを作る(JSON → Java)
たとえば、次のようなJSONが返ってくるAPIがあるとします:
{
"id": 1,
"name": "Taro",
"email": "taro@example.com"
}
これに対応するクラスを作成します:
public class User {
public int id;
public String name;
public String email;
}
RetrofitはこのJSONを自動的にこのクラスにマッピングしてくれます(Gsonの力で)。
③ APIインターフェースを定義
public interface UserService {
@GET("users/1")
Call<User> getUser();
}
ここでのポイント:
@GET("users/1")
は「GETメソッドで/users/1
にアクセスする」ことを表します。Call<User>
は「戻ってくるJSONをUser
クラスに変換してほしい」という意味です。
④ Retrofitのインスタンスを作る
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://example.com/api/") // APIのベースURL
.addConverterFactory(GsonConverterFactory.create()) // JSON変換を追加
.build();
UserService service = retrofit.create(UserService.class);
⑤ 通信の実行(非同期)
Call<User> call = service.getUser();
call.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
if (response.isSuccessful()) {
User user = response.body();
Log.d("API", "名前: " + user.name);
}
}
@Override
public void onFailure(Call<User> call, Throwable t) {
Log.e("API", "通信失敗", t);
}
});
enqueue()
は非同期実行です。UIスレッドをブロックしません。
🔁 Retrofitの主な特徴
特徴 | 内容 |
---|---|
非同期通信が簡単 | enqueue() メソッドで完結 |
JSON → Javaが自動 | GsonやMoshiなどで変換 |
URLやパラメータの扱いが楽 | @Path , @Query , @Body などで柔軟に対応 |
POSTやPUTも対応 | @POST , @PUT , @DELETE なども簡単に使える |
💡 よく使うアノテーション
アノテーション | 説明 |
---|---|
@GET("users") | GETメソッド |
@POST("users") | POSTメソッド |
@Query("page") int page | URLクエリ(例:?page=1 ) |
@Path("id") int id | パス変数(例:users/{id} ) |
@Body User user | POST時にオブジェクトを送る |
✅ まとめ
Retrofitの魅力 | 内容 |
---|---|
型安全なAPI通信 | Javaインターフェースで定義するだけ |
Gsonと連携しやすい | JSONのやりとりがスムーズ |
シンプルな構成 | 少ないコード量でAPI通信ができる |
実運用でも安心 | 多くのAndroidアプリで採用実績あり |