2007 年 9 月
はじめに
使い慣れない API での開発を始めるのは簡単ではありません。この記事では、Google Data APIs(「GData」)Java クライアント ライブラリをダウンロードしてインストールする手順を説明します。必要な依存関係をすべて取得し、必要な環境変数を設定する手順について説明します。すぐにさまざまな GData サービスをマッシュアップできるようになります。
Eclipse を使用している場合
Coding in the Shade: Using Eclipse with Google Data APIs の記事をご覧ください。
依存関係のインストール
GData Java クライアント ライブラリには、次の外部依存関係があります。以降のセクションでは、お気に入りのオペレーティング システム(または職場で使用している OS)にこれらの依存関係をインストールする方法について説明します。
- JDK(Java Development Kit)バージョン 1.5 以降
- Apache Ant バージョン 1.7 以降
- Sun の JavaMail API 1.4 以降の mail.jar
- Sun の JavaBeansActivationFramework の activation.jar。これは、ドキュメント リスト データ API、Picasa ウェブ アルバム API、YouTube データ API などのメディア固有の API にのみ必要です。
- Sun の Servlet API バージョン 2.3 以降の servlet.jar。これは、'sample.authsub' パッケージまたは 'sample.gbase.recipe' パッケージでコードサンプルを実行する場合にのみ必要です。
.jar 依存関係の一部は特定のサンプルでのみ必要ですが、ビルドエラーを回避するため、すべてを取得することをおすすめします。続行するには、Windows、Mac OS X、Linux のいずれかのオペレーティング システムを選択します。
Google Data クライアント ライブラリのインストール
- http://code.google.com/p/gdata-java-client/downloads/list にアクセスします。
- クライアント ライブラリ(
gdata-src.java-1.x.x.java.zip)とサンプル(gdata-samples.java-1.x.x.java.zip)の最新バージョンをダウンロードします。 - クライアント ライブラリのソースをパソコンに抽出します。
gdata/java/build-src/build.propertiesに移動してファイルを開きます。- 外部依存関係を編集して、ローカルマシン上の
.jarファイルの場所を指定します。
注: 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.username と sample.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 以降が実行されていることを確認します。上記の依存関係の手順に沿って、最新バージョンの 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);
もう 1 つの一般的なオペレーションは、クエリの作成です。
//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());
}デバッグ中に役立つもう 1 つの操作は、未加工の XML をダンプすることです。ライブラリでこれを行うための便利なユーティリティがあります。samples.util.* がインポートされていることを確認します。次に、フィードまたはエントリをダンプします。
CommonUtils.dump(resultFeed, System.out);
さらに詳細なデバッグツールについては、クライアント ライブラリ内からロギングを有効にする方法に関する Debugging Google Data API Clients: Exploring Traffic from Within your Program の記事をご覧ください。
これにより、クライアント ライブラリを使用してアプリを構築する感覚を掴むことができます。詳細については、各 Google Data API の利用可能なデベロッパー ガイドのリストについて、結論のセクションをご覧ください。
まとめ
これで、GData Java クライアント ライブラリを使用してアプリケーションをビルドして実行できるようになりました。使用できる一般的な IDE については説明しませんでしたが、Eclipse や NetBeans などの一般的なツールを調べてみることをおすすめします。その他の関連リンク:
- GData Java クライアント ライブラリのホームページ
- Google Data API のリスト
- 次の Google Data API の Java デベロッパー ガイドが用意されています。
- Coding in the Shade: Using Eclipse with Google Data APIs
- Google Data APIs Java クライアント Eclipse プラグイン
Java クライアント ライブラリと API の使用についてご不明な点がある場合は、API 固有のフォーラムに投稿してお知らせください。