14.4. Google Base の使用法

Google Base 用の Google Data API インターフェイスを使用すると、 Google Base のデータベースに対して問い合わせを行うアプリケーションを書くことができます。 たとえば製品やサービス、イベントなどについての問い合わせが可能です。 また、プログラムから Google Base にエントリを入力したり、 それを管理したりすることも可能です。

Google Base API についての詳細な情報は http://code.google.com/apis/base/ を参照ください。

14.4.1. データの問い合わせ

setQuery() メソッドを使用して検索するテキストを指定し、 Google Base に対して問い合わせます。

<?php
$gdataBase = new Zend_Gdata_Base();
$gdataBase->setQuery('digital camera');
$feed = $gdataBase->getBaseFeed();
?>

このオブジェクトの使用法についての詳細は、 Zend_Feed のドキュメントを参照ください。

Google Base では、属性をもとにした問い合わせもサポートしています。 属性の条件を指定するには addAttribute() メソッドを使用します。 このメソッドのパラメータは、 属性の名前とその値、そしてオプションで演算子となります。 デフォルトの演算子は ':' で、これは、文字列が一致することを表します。

属性による問い合わせは、テキストによる問い合わせと組み合わせることができます。

<?php
$gdataBase = new Zend_Gdata_Base();
$gdataBase->setQuery('digital camera');
$gdataBase->addAttributeQuery('price', '50 USD', '<');
$feed = $gdataBase->getBaseFeed();
?>

addAttributeQuery() を使用して複数の属性を指定することもできます。 同じ属性に対して複数の条件を指定することも可能です。

属性についての条件をクリアするには unsetAttributeQuery() メソッドを使用します。 パラメータには属性名を指定します。同一の属性に対して複数の条件を指定している場合は、 そのずべてが削除されます。このメソッドのパラメータを指定しなかった場合は、 属性に関するすべての条件が削除されます。

addAttribute() メソッドでは、 括弧や否定、そして論理演算子などの拡張構文はサポートしていません そのようなものについては、 setQuery() メソッドを使用して文字列で指定します。

<?php
$gdataBase = new Zend_Gdata_Base();
$gdataBase->setQuery('digital camera ( [price < 50 USD] | [location: @"Mountain View, CA 94043"] )');
$feed = $gdataBase->getBaseFeed();
?>

結果のフィードは、さまざまな条件で並べ替えることができます。 並べ替えの条件を指定するには setOrderby() メソッドを使用します。よく使用する値には modification-timename あるいは relevancy などがあります。 より高度なランキング指定を Ranking Language を用いて行うことも可能です。デフォルトでは、返されるエントリの並び順は relevancy (関連性) の順となります。

14.4.2. Base のデータの更新

データを更新するには、Zend_Gdata_Base オブジェクトに二つのものが必要です。 ひとつは認証済みの Http クライアント、そしてもうひとつはデベロッパーキーです。

デベロッパーキーは、通常は 54 文字の英数字による文字列です。 デベロッパーキーの取得方法については http://code.google.com/apis/base/starting-out.html#authDev を参照ください。

デベロッパーキーを設定するには、Zend_Gdata_Base のコンストラクタのオプションの第二パラメータを使用します。 既存のオブジェクトに対してデベロッパーキーを設定するには setDeveloperKey() メソッドを使用します。 Zend_Gdata_Base オブジェクトに対していちどデベロッパーキーを設定すると、 それ以降のリクエストではキーが自動的に送信されます。

<?php
$gdataBase = new Zend_Gdata_Base($authenticatedHttpClient);
$gdataBase->setDeveloperKey($myDeveloperKey);
?>

エントリを Google Base に投稿するには post() メソッドを使用します。これは Zend_Gdata クラス群の共通メソッドです。 XML エントリの要素についての詳細は Google Base Data API のドキュメントを参照ください。

14.4.3. Base のメタデータの問い合わせ

Google Base のフィードの itemtypes に対する問い合わせを行うには getItemTypesFeed() メソッドを使用します。 このメソッドの最初のパラメータはロケールです。たとえば "en_US" のようになります。二番目のパラメータはオプションで、 項目の型を指定します。型を指定した場合は、 このメソッドはその型の属性のフィードを返します。 指定しなかった場合は、すべての型のフィードを返します。

<?php
$gdataBase = new Zend_Gdata_Base();

// すべての型の一覧を取得します
$itemTypes = $gdataBase->getItemTypesFeed('en_US');

// 型が 'jobs' である属性の一覧を取得します
$jobsAttributes = $gdataBase->getItemTypesFeed('en_US', 'jobs');
?>

指定した型の項目についての統計情報、たとえばそれぞれの属性の値ごとの Google Base のエントリ数などを問い合わせることも可能です。 このような問い合わせには getItemTypeAttributesFeed() メソッドを使用します。

<?php
$gdataBase = new Zend_Gdata_Base();
$jobsAttributesStatistics = $gdataBase->getItemTypeAttributesFeed('jobs');
?>