OSS探訪GitHubでログイン

HTTP APIを型付きJava・Kotlinインターフェースとして呼び出す

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
43,936
主要言語
Java
ライセンス
Apache-2.0
リポジトリ最終更新
2026/10/02
ページ内ナビ

概要

RetrofitはAndroidとJVM向けのHTTPクライアントで、APIのパス、引数、戻り値をJava・Kotlinのインターフェースとして定義できます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

注釈付きインターフェースからHTTP呼び出しを組み立てる

Retrofitはメソッドと引数の注釈からURL、HTTP動詞、パラメーターを組み立て、戻り値を同期・非同期の呼び出しとして扱います。変換器を追加するとJSONなどの応答を型へ変換できます。

出典:[3][1]

向いている用途

API契約を型とテスト可能な境界へまとめたい場合に向く

AndroidやJVMクライアントで、散在するURL文字列と手作業の解析を一つのサービスインターフェースへ集約できます。localhostの検証用応答で実応答を返せば、外部APIキーなしでパスと変換結果を確認できます。

出典:[3]

導入前の確認

通信方針とAPIエラーの扱いは利用側で設計する

RetrofitはAPIサーバーではなくHTTPクライアントです。タイムアウト、再試行、認証情報、HTTPエラー、変換器の失敗、モデル互換性はOkHttp設定とアプリ側の方針が必要です。3.0.0とApache-2.0の範囲を固定して確認します。

出典:[2][5]

参考にした公式資料

  1. [1]Retrofit README at commit 3724fff(2026-10-05)
  2. [2]Retrofit 3.0.0 release(2026-10-05)
  3. [3]Retrofit declarations documentation(2026-10-05)
  4. [4]Retrofit GitHub metadata(2026-10-05)
  5. [5]Retrofit Apache license at commit(2026-10-05)
編集部からの補足

Android・JVMのHTTP API境界を型付きインターフェースへまとめたいチームに適します。localhostの検証用応答で実際のパスと変換結果を確認してから、タイムアウト、認証、エラー処理を設計してください。

3ステップで試す

  1. 1

    Retrofit 3.0.0とJSON 変換器を固定する

    Java 17、Maven、Python 3、curlが必要です。一時ディレクトリに固定依存関係のPOMを作ります。

    retrofit_demo_dir=$(mktemp -d "${TMPDIR:-/tmp}/retrofit-demo.XXXXXX") && cd "$retrofit_demo_dir" && printf '%s ' '<project xmlns="http://maven.apache.org/POM/4.0.0"><modelVersion>4.0.0</modelVersion><groupId>demo</groupId><artifactId>retrofit-demo</artifactId><version>1</version><properties><maven.compiler.release>17</maven.compiler.release></properties><dependencies><dependency><groupId>com.squareup.retrofit2</groupId><artifactId>retrofit</artifactId><version>3.0.0</version></dependency><dependency><groupId>com.squareup.retrofit2</groupId><artifactId>converter-gson</artifactId><version>3.0.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.14.1</version></plugin></plugins></build></project>' > pom.xml
  2. 2

    型付きAPI インターフェースをコンパイルする

    同じディレクトリにGET /messageとJSONモデルを定義し、依存関係を取得してコンパイルします。

    mkdir -p src/main/java/demo && printf '%s ' 'package demo; import retrofit2.*; import retrofit2.converter.gson.*; import retrofit2.http.*; public class Main { record Message(String value){} interface Api{@GET("message") Call<Message> message();} public static void main(String[]a)throws Exception{var r=new Retrofit.Builder().baseUrl(a[0]).addConverterFactory(GsonConverterFactory.create()).build();var v=r.create(Api.class).message().execute().body();System.out.println(v.value());}}' > src/main/java/demo/Main.java && mvn -q dependency:copy-dependencies package
  3. 3

    localhost応答を実際に変換する

    直接所有するloopbackサーバーからJSONを返し、Retrofitがtyped-okへ変換することを確認します。trapは成功・失敗時にPIDをkillしてwaitします。

    ( set -eu; port=$(python3 -c 'import socket;s=socket.socket();s.bind(("127.0.0.1",0));print(s.getsockname()[1]);s.close()'); pid=''; cleanup(){ if [ -n "$pid" ];then kill "$pid" 2>/dev/null||true;wait "$pid" 2>/dev/null||true;fi;}; trap cleanup EXIT HUP INT TERM; printf '%s' '{"value":"typed-ok"}' > message; python3 -m http.server "$port" --bind 127.0.0.1 > server.log 2>&1 & pid=$!; i=0;until curl -fsS --max-time 1 "http://127.0.0.1:$port/message" >/dev/null;do i=$((i+1));[ "$i" -lt 20 ];sleep .25;done; out=$(java -cp 'target/classes:target/dependency/*' demo.Main "http://127.0.0.1:$port/");[ "$out" = typed-ok ];cleanup;pid='';python3 -c 'import errno,socket,sys;s=socket.socket();s.settimeout(1);r=s.connect_ex(("127.0.0.1",int(sys.argv[1])));raise SystemExit(0 if r==errno.ECONNREFUSED else 1)' "$port";trap - EXIT HUP INT TERM;printf '%s ' "$out" )
公式READMEで確認

成長

成長の推移 · 直近30日

43,936 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
17
Open PR
38

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • java
  • android
Stars
43,936
Forks
7,332
Watchers
1,542
Open Issues
114
Contributors
163
所有者種別
Organization
主要言語
Java
ライセンス
Apache-2.0
リポジトリ最終更新
2026/10/02

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?