Android application development 第18章:Retrofitを使ったAPI通信

🌐 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 pageURLクエリ(例:?page=1
@Path("id") int idパス変数(例:users/{id}
@Body User userPOST時にオブジェクトを送る

✅ まとめ

Retrofitの魅力内容
型安全なAPI通信Javaインターフェースで定義するだけ
Gsonと連携しやすいJSONのやりとりがスムーズ
シンプルな構成少ないコード量でAPI通信ができる
実運用でも安心多くのAndroidアプリで採用実績あり

mh

Related Posts

Android application development 第33章:実践ミニアプリ:天気情報アプリ

Android application development 第32章:実践ミニアプリ:シンプルなToDoリスト

You Missed

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第11章:Cloud Load Balancing:あなたのGCPリソースを「賢く振り分ける交通整理の達人」

  • 投稿者 mh
  • 6月 18, 2025
  • 10 views

Kubernetes Learning 第37章:JenkinsやGitHub ActionsからのKubernetesデプロイ例 ~CI/CDツールとKubernetesをつなげてみよう~

  • 投稿者 mh
  • 6月 17, 2025
  • 13 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第10章:Cloud DNS:インターネットの「電話帳」サービス

  • 投稿者 mh
  • 6月 16, 2025
  • 16 views

Kubernetes Learning 第36章:Argo CDとFluxの概要~Kubernetesの自動運用を支えるGitOpsツール~

  • 投稿者 mh
  • 6月 15, 2025
  • 34 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第9章:IPアドレス(外部IP、内部IP、静的IP):GCPリソースの「住所」と「電話番号」

  • 投稿者 mh
  • 6月 14, 2025
  • 29 views

Kubernetes Learning 第35章:GitOpsとは?~Kubernetes運用をもっとスマートにする考え方~

  • 投稿者 mh
  • 6月 13, 2025
  • 52 views