Web上にはGoogle MapをはじめさままざまなWebサービスがあり, これらのWebサービスをアプリで活用できればアプリのアイデアもグッと広がりそうである.
これまで作成したアプリは端末単体アプリがほとんどでWebAPIをちゅんと使ったことがなかったので, Webサービスから得られるデータをどのように処理すべきかよくわかっていなかった.
そこで, 特にXMLやJSONの解析について少し勉強しようと, 「Google Android Web APIプログラミング入門」[1][2]って本を参考にチャレンジ中である.



中身は, 以下の通り.
 - Chapter 1 はじめに
 - Chapter 2 WebAPI入門
 - Chapter 3 Google Chart APIを使ったアプリケーションを作成する
 - Chapter 4 Social Feedback(GREE)を使ったアプリケーションを作る
 - Chapter 5 空き室検索アプリケーションを作る
 - Chapter 6 駅情報検索アプリケーションを作る
 - Chapter 7 YouTube Data API
 - Chapter 8 Twitter 4j
 - Chapter 9 Facebook SDK
 - Chapter 10 広告配信ライブラリ

私も, この本のサンプルを試しながら読み進めているが, 一部サンプルコードに不具合があるようなので, 同じように勉強されている方のために少しメモを残しておく. (typoもいくつかあるがそれは省略)

1. Chapter 5
1.1  5-6-4 "Activityから非同期処理を実行し, 画面に表示する"
5-6-4でこれまでのコードを実行しようとビルドに失敗するので, 5-5-2 ”レスポンスデータ用のオブジェクトを定義する"の以下の箇所を修正する.
1) p91:Plan.javaのStayに関する記述
   public class Plan {
     private String planName;    // プラン名
       (省略)
     private String rateType;    // 料金タイプ
     private int sampleRate;     // 参考料金
     
private Stay stay;     // 宿泊日情報
     
private ArrayList<Stay> stay;   // 宿泊日情報
     private Hotel hotel;     // ホテル情報

     
public Stay getStay() {
       
return stay;
     
}
     public ArrayList<Stay> getStay() {
       return stay;
     }

     
public void setStay(Stay stay) {
       
this.stay = stay;
     
}
     public void setStay(ArrayList<Stay> stay) {
       this.stay = stay;
     }

     public Hotel getHotel() {
       return hotel;
     }

  原因は, p97のonStartTagメソッド内のmPlan.setStay(new ArrayList<Stay>());との齟齬.

2) p92:RoomSearchResult.javaのPlanに関する記述.
   public class RoomSearchResults extends BaseData {
     private int numberOfResults;  // 該当件数
     private int displayPerPage;   // 表示件数
     private int displayFrom;   // 表示From
     private String apiVersion;   // APIバージョン
     
private Plan plan;    // 料金プラン情報
     
private ArrayList<Plan> plan;  // 料金プラン情報
 
     public Plan getPlan() {
       
return plan;
     
}
     public ArrayList<Plan> getPlan() {
       return plan;
     }
     
public void setPlan(Plan plan) {
       
this.plan = plan;
     
}
     public void setPlan(ArrayList<Plan> plan) {
       this.plan = plan;
     }

     public int getNumberOfResults() {
        return numberOfResults;
     }

  原因は, p98のonEndTagメソッド内のmPlan.setStay(new ArrayList<Stay>());との齟齬.

引き続き, 大きな不具合等が見つかった場合, ここに追記していく予定!!

この本は, 具体例をあげて分かりやすく解説してあるので, WebAPIを勉強したいという方にはお薦めである.
ただ, Androidのプログラミングがある程度できることを前提に書かれているので, 初心者の方には少し難しいかも...

----
参照URL:
 [1] Google Android WebAPI プログラミング入門(秀和システム)
 [2] T.Yokoyamaのブログ