Google Data Java クライアント ライブラリを使ってみる

Google Data API チーム、Stephanie Liu 氏
2007 年 9 月
  1. はじめに
  2. 依存関係のインストール
    1. Windows の場合
    2. Mac OS X の場合
    3. Linux の場合
  3. Google データ クライアント ライブラリのインストール
  4. サンプルの実行
  5. 独自のアプリケーションの構築
  6. まとめ
  7. 付録: 環境変数の設定

はじめに

馴染みのない API を使って簡単に開発を始めることができます。この記事では、Google Data API(GData)Java クライアント ライブラリをダウンロードしてインストールする方法について説明します。すべての依存関係を取得し、必要な環境変数を設定します。さまざまな GData サービスを短時間でマッシュアップできます。

Eclipse を使用している場合

シェードでのコーディング: Google Data API での Eclipse の使用に関する記事をご覧ください。

依存関係のインストール

GData Java クライアント ライブラリには次の外部依存関係があります。以下のセクションでは、こうした依存関係をお気に入りのオペレーティング システム(または作業に滞っている OS)にインストールする方法について説明します。

  • JDK(Java Development Kit)バージョン 1.5 以降
  • Apache Ant バージョン 1.7 以降
  • Sun の JavaMail API 1.4 以降で mail.jar
  • Sun の JavaBeansActivationFramework にある activation.jarこれは、Document List Data API、Picasa Web Album API、YouTube Data API など、メディア固有の API でのみ必要です。
  • Sun の サーブレット API バージョン 2.3 以降の servlet.jar。これは、「sample.authsub」または「sample.gbase.recipe」パッケージでコードサンプルを実行する場合にのみ必要です。

.jar 依存関係の中には、特定のサンプルにのみ必要なものもありますが、ビルドエラーを回避するため、すべてを取得するのが最善です。続行するには、WindowsMac OS XLinux のいずれかのオペレーティング システムを選択してください。

Google データ クライアント ライブラリのインストール

  1. http://code.google.com/p/then-java-client/downloads/list にアクセスします。
  2. クライアント ライブラリの最新バージョン(gdata-src.java-1.x.x.java.zip)とサンプル(gdata-samples.java-1.x.x.java.zip)をダウンロードします。
  3. クライアント ライブラリのソースをパソコンに展開します。
  4. gdata/java/build-src/build.properties に移動して、ファイルを開きます。
  5. 外部依存関係を編集して、ローカルマシン上の .jar ファイルの場所を指すようにします。
  6. 注: Windows では、バックスラッシュをエスケープしてください。次に例を示します。

    servlet.jar=C:\\Program Files\\Apache Software Foundation\\Tomcat 6.0\\lib\\servlet-api.jar

実行中のサンプル

利用可能なサンプルはすべて、gdata-samples.java-1.x.x.java.zip アーカイブの gdata/java/sample にあります。gdata/java/build-samples/build.properties ファイルには、ライブラリに含まれるサンプルのすべての入力値が含まれています。sample.credentials.usernamesample.credentials.password に有効なユーザー名とパスワードを設定します。Ant を使ってサンプルを構築して実行できます。

すべてが正しくインストールされたかどうかをテストするには、コマンド プロンプトを開き、gdata/java ディレクトリに移動して、次のように入力します。

ant -f build-samples.xml sample.calendar.run

一部の情報や警告メッセージが表示されることがありますが、最後に BUILD SUCCESSFUL メッセージをご確認ください。成功メッセージが表示されない場合は、トラブルシューティングのセクションをご覧ください。

以下を入力して、よりインタラクティブなサンプルをお試しください。

ant -f build-samples.xml sample.spreadsheet.guidemo.run

特定のサンプルの実行方法については、gdata/java/build-samples に移動して、そのサンプルのビルドファイルをご確認ください。[samples run] セクションを探します。

トラブルシューティング

ビルドが失敗し、次のようなエラー メッセージが表示される。

BUILD FAILED
Target 'core.sample.core.util.build' does not exist in this project. It is used from target 'sample.calendar.build'.

Total time: 0 seconds

エッセンシャル ファイルがプロジェクトに含まれていないことを示すエラー メッセージが表示された場合、古いバージョンの Ant が実行されている可能性があります。「ant -version」と入力して、1.7 以降であることを確認します。上記の dependency の手順を参照して、最新バージョンの Ant を取得します。

独自のアプリケーションの構築

次の質問は、自分のアプリケーションをどのように構築するかです。カレンダー サービスを使用して基本的な機能を示す「Hello, World!」という同等のプログラムを確認していきます。詳しくは、Java クライアント ライブラリのデベロッパー ガイドと、各プロダクトのデベロッパー ガイドをご覧ください。

CalendarTest.java というファイルを作成します。まず、次の import ステートメントを追加します。

import com.google.gdata.client.*;
import com.google.gdata.client.calendar.*;
import com.google.gdata.data.*;
import com.google.gdata.data.acl.*;
import com.google.gdata.data.calendar.*;
import com.google.gdata.data.extensions.*;
import com.google.gdata.util.*;

import java.net.*;
import java.io.*;

import sample.util.*;

プログラム全体(例外処理なし)。

public class CalendarTest {

    public static void main(String[] args) {
        CalendarService myService = new CalendarService("exampleCo-exampleApp-1.0");
        myService.setUserCredentials("root@gmail.com", "pa$$word");

        URL feedUrl = new URL("http://www.google.com/calendar/feeds/default/allcalendars/full");
        CalendarFeed resultFeed = myService.getFeed(feedUrl, CalendarFeed.class);

        System.out.println("Your calendars:");
        System.out.println();

        for (int i = 0; i < resultFeed.getEntries().size(); i++) {
          CalendarEntry entry = resultFeed.getEntries().get(i);
          System.out.println("\t" + entry.getTitle().getPlainText());
        }

    }
}

This little program will request all the calendars you own and display all the titles. It's a little longer than the canonical "Hello, World!" example, but it's very simple once we break it down. The first couple of lines creates a service object and sets the user credentials.

CalendarService myService = new CalendarService("exampleCo-exampleApp-1.0");
myService.setUserCredentials("root@gmail.com", "pa$$word");

次に、リソースの URL を設定します。この場合、認証済みユーザーのすべてのカレンダーのリストをリクエストできます。

URL feedUrl = new URL("http://www.google.com/calendar/feeds/default/allcalendars/full");

下の行では、URL に対して実際の GET コマンドを実行し、生成されたフィードを tidy オブジェクトに入れます。

CalendarFeed resultFeed = myService.getFeed(feedUrl, CalendarFeed.class);

以下の for ループは、各エントリを反復してタイトルを出力します。タイトルは TextConstruct として保存されるため、書式なしテキストを取得するには追加の関数呼び出しが必要になります。

for (int i = 0; i < resultFeed.getEntries().size(); i++) {
    CalendarEntry entry = resultFeed.getEntries().get(i);
    System.out.println("\t" + entry.getTitle().getPlainText());
}

これはごく基本的なことでした。その他の一般的なことをいくつか見ていきましょう。次のスニペットは、オブジェクトを作成して挿入する方法を示しています。この例では、カレンダーの予定の新しいエントリになります。

URL postURL = new URL("http://www.google.com/calendar/feeds/root@gmail.com/private/full");
CalendarEventEntry myEvent = new CalendarEventEntry();

//Set the title and description
myEvent.setTitle(new PlainTextConstruct("Pi Day Party"));
myEvent.setContent(new PlainTextConstruct("I am throwing a Pi Day Party!"));

//Create DateTime events and create a When object to hold them, then add
//the When event to the event
DateTime startTime = DateTime.parseDateTime("2007-03-14T15:00:00-08:00");
DateTime endTime = DateTime.parseDateTime("2007-03-14T17:00:00-08:00");
When eventTimes = new When();
eventTimes.setStartTime(startTime);
eventTimes.setEndTime(endTime);
myEvent.addTime(eventTimes);

// POST the request and receive the response:
CalendarEventEntry insertedEntry = myService.insert(postURL, myEvent);

もう一つの一般的なオペレーションは、クエリの作成です。

//Create a new query object and set the parameters
Query myQuery = new Query(feedURL);
myQuery.setFullTextQuery("Pi");

//Send the request with the built query URL
CalendarEventFeed myResultsFeed = myService.query(myQuery, CalendarEventFeed.class);

//Take the first match and print the title
if (myResultsFeed.getEntries().size() > 0) {
    CalendarEventEntry firstMatchEntry = new CalendarEventEntry();
    myResultsFeed.getEntries().get(0);
    System.out.println(firstMatchEntry.getTitle().getPlainText());
}

デバッグ中のもう一つの便利なオペレーションは、未加工の XML をダンプすることです。ライブラリでこれを行うのに便利なユーティリティがあります。samples.util.* がインポートされていることを確認します。次に、フィードまたはエントリをダンプします。

CommonUtils.dump(resultFeed, System.out);

より詳細なデバッグツールについては、クライアント ライブラリ内からロギングを有効にする方法についてのデバッグ: Google Data API クライアントのデバッグ: プログラム内からトラフィックを調べるをご覧ください。

クライアント ライブラリを使用してアプリを構築する方法を確認できます。詳細については、結論のセクションで、各 Google Data API で利用可能なデベロッパー ガイドの一覧をご覧ください。

まとめ

GData Java クライアント ライブラリを使用してアプリケーションを構築し、実行できるようになりました。使用可能な一般的な IDE は確認していませんが、EclipseNetBeans などの一般的なツールをお試しください。次のリンクが役に立つ可能性があります。

API での Java クライアント ライブラリの使用についてご不明な点がございましたら、API 固有のフォーラムに投稿してお知らせください。