blog

Android APIのベスト・ユース・プラクティスと学習

AndroidアプリにサードパーティAPIを統合することは、非常にポピュラーになってきました。アプリには、ネットワーク操作やキャッシュを処理するための独自のメカニズムがありますが、そのほとんどは壊れや...

Jul 15, 2025 · 5 min. read
シェア

AndroidアプリにサードパーティのAPIを統合することは、現在非常に人気があります。アプリは独自のネットワーク操作とキャッシュ処理メカニズムを持っていますが、そのほとんどはかなり脆弱で、悪いネットワーク条件に対して最適化されていません。クレジットカードによる商取引を携帯電話にもたらした革新的な企業、 おかげです。現在、Androidアプリへの統合をサポートする高品質なオープンソースライブラリが充実しています。

何をどうすべきか?

それでは、Retrofit、OKHttp、ONを順番に使って、シンプルで高速なAPI統合を学びましょう。この組み合わせを使って、Twitch.tvからデータをダウンロードして解析する必要があります。以下のステップに従えば、面倒な定型コードを書かなくても、REST API統合のほとんどを数分で行うことができます。

学ぶ

レトロフィット

Retrofitは Web API からデータをダウンロードし、通常の Java オブジェクトにパースするのを簡単にします。たとえば GitHub からユーザーのリポジトリ情報をダウンロードするには、次のように書くだけです:

@GET("/users/{user}/repos") 
List listRepos(@Path("user") String user); 

さらに、ウェアハウス情報のクラスとデータ型を作成する必要があります。このコードは自動生成することもでき、その方法は後述します。

全体のプロセスは非常にシンプルで、パラメータ付きのリクエストを送信したり、POSTやHEADを送信したりするのと似ています。異なるタイプのAPIに接続する方法については説明テキストは参照してください。

Retrofitの機能のひとつで、リクエストやレスポンスに処理ロジックを追加することができます。httpリクエストヘッダにデータを追加したり、認証に失敗したレスポンスをインターセプトしてログイン画面にリダイレクトしたりできます。

OKHttp

tpはバージョンの tp クライアントです。 非常に効率的で、SPDY、コネクションプーリング、GZIP、HTTP キャッシュをサポートしています。デフォルトでは、OKHttp は二次接続や SL ハンドシェイクのような一般的なネットワーク問題を自動的に処理します。アプリケーションに統合されると、デフォルトで OKHttp を使って他のネットワーク層のリクエストを処理します。

GSON

GSON、JSONをPOJOにパースするJavaライブラリです。GSONは、POJOをJSONにパースすることもできます。Androidでは、SharePreferenceにデータオブジェクトを格納する方が便利です。

GSON を使うには、まず対応する POJO データを作成し、GSON を使って POJO オブジェクトをパースする必要があります。パース処理はシンプルで非常に効率的です。GSON でパースできる POJO オブジェクトの作成方法については、Retrofit が GSON を使って JSON データをパースする説明 ドキュメント参照してください。

コーディング開始

プロジェクトへのライブラリの追加

  1. RetrofitOKHttpGSONライブラリファイルのダウンロード。
  2. プロジェクトにjarファイルを1つずつ追加します。
  3. Android Studioを使用している場合は、gradleを使用してこのプロジェクトを同期できます。

APIの検索と作成

ディスプレイ出力

APIによって返されるデータの一部を表示するには、次の例では、GETリクエストによるもので、ブラウザでのみ実行できますが、返されるデータは次のとおりです:

[{"broadcast_part": 4, "featured": true, "channel_subscription": true, "audio_codec": "uncompressed", "id": "6640712464", "category": "gaming", "title": "Fnatic xPeke, Normals(ranked down) on smurf", "geo": "DE", "video_height": 1080, "site_count": 8014, "embed_enabled": true, "channel": {"subcategory": null, "producer": true, "image_url_huge": "http://static-..net/jtv_user_pictures/xpeke-profile_image-a182a5fe5a8f239b-.jpeg", "timezone": "Europe/Madrid", "screen_cap_url_huge": 「http://static 

POJOの作成

jsonschema2pojo使用して、パッケージ名、クラス名、JSONデータをインポートし、private型として保存します。JSONデータのルート要素はオブジェクトではなく配列なので、例に示したコンストラクタは動作しません。そのため、配列の *** 要素のみを掲載しています。関連するイメージ例を表示します。

POJOの統合

RetrofitでAPIをダウンロード

REST アダプタの作成

アダプタの作成は、エンドポイントの設定と似ています。

RestAdapter restAdapter = new RestAdapter.Builder() 
.setEndpoint("http://..tv/api") 
.build(); 

APIインターフェースの定義

public interface TwitchTvApiInterface { 
@GET("/stream/list.json") 
void getStreams(@Query("limit") int limit, @Query("offset") int offset, Callback<List> callback);} 

Twitch.tvサービスの作成

これでエンドポイントが作成され、必要なインターフェースが定義されました。次に、リクエストを送信するTwitch.TVサービスを作成する必要があります。

TwitchTvApiInterface twitchTvService = restAdapter.create(TwitchTvApiInterface.class) 

APIの使用

APIリクエストの送信は簡単で、先ほど作成したサービスを使用するだけです。

twitchTvService.getStreams(ITEMS_PER_PAGE, pageNumber * ITEMS_PER_PAGE, new Callback<List>() { 
@Override 
public void success(List justinTvStreamData, Response response) { 
    consumeApiData(justinTvStreamData); 
} 
  
@Override 
public void failure(RetrofitError retrofitError) { 
    consumeApiData(null); 
}}); 

ここでひとつ注意すべきことは、RetrofitはバックグラウンドのスレッドでAPIデータをダウンロードして解析し、その結果に応じてUIスレッドに送信するということです。Retrofitはバックグラウンドでの自動ダウンロードもサポートしています。

データ処理の基礎知識

では、POJOデータで面白いことをやってみましょう。Twitch.Tvチャンネルのイメージと説明を表示するこのデモでは、Picassoライブラリを 使用してキャッシュされたイメージをダウンロードします。

サンプルコードのダウンロード

Read next

セキュリティ実務者にありがちな10の誤解に立ち向かう

セキュリティ担当者は、その業務の専門性と常に目立たない存在であることから、誤解されがちです。そのため、今日は「ネタ」のセキュリティ業務について報告するだけでなく、セキュリティ従事者の「正しい名前」についても取り上げることで、人々に彼らの仕事を理解してもらい、理解してもらうことで彼らの仕事を支えてもらいたいと考えています。

Jul 15, 2025 · 5 min read