ページ内ナビ
概要
RetrofitはAndroidとJVM向けのHTTPクライアントで、APIのパス、引数、戻り値をJava・Kotlinのインターフェースとして定義できます。
特徴と向いている用途
公式資料に基づく紹介・実機未検証 · 内容確認日:
主な特徴
向いている用途
API契約を型とテスト可能な境界へまとめたい場合に向く
AndroidやJVMクライアントで、散在するURL文字列と手作業の解析を一つのサービスインターフェースへ集約できます。localhostの検証用応答で実応答を返せば、外部APIキーなしでパスと変換結果を確認できます。
出典:[3]
導入前の確認
参考にした公式資料
- [1]Retrofit README at commit 3724fff(2026-10-05)
- [2]Retrofit 3.0.0 release(2026-10-05)
- [3]Retrofit declarations documentation(2026-10-05)
- [4]Retrofit GitHub metadata(2026-10-05)
- [5]Retrofit Apache license at commit(2026-10-05)
編集部からの補足
Android・JVMのHTTP API境界を型付きインターフェースへまとめたいチームに適します。localhostの検証用応答で実際のパスと変換結果を確認してから、タイムアウト、認証、エラー処理を設計してください。
3ステップで試す
- 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
型付き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
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" )
成長
成長の推移 · 直近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で投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- Apache HttpClient1,535 Stars
共通タグ 1件 · 共通カテゴリ 2件 · 同じ言語
JavaアプリからHTTP/1.1・HTTP/2通信を行い、接続管理・認証・Cookie・キャッシュをまとめて扱う
Java - Faraday5,951 Stars
共通タグ 1件 · 共通カテゴリ 2件
RubyのHTTP通信を共通APIで扱い、アダプターとミドルウェアを用途に合わせて組み替えるクライアントライブラリ
Ruby - Notion SDK for JavaScript5,670 Stars
共通タグ 1件 · 共通カテゴリ 2件
Notion APIを型付きclientで扱い、Agent・Session・Webhookまで組み込む
TypeScript - DBeaver51,958 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
多数のdatabaseを一つのdesktop SQL workspaceから操作する
Java - Netty35,065 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
event loopとChannel pipelineを組み合わせ、高接続数のprotocol server/clientをJavaで構築する
Java - Bruno47,340 Stars
共通タグ 2件 · 共通カテゴリ 2件
API collectionをローカルBru fileとGitで管理しdesktop・CLI・CIから実行するAPI client
JavaScript
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。