熱心な Web サーファーなら、きっと Google ノートブックというサービスのことはもうご存知でしょう (もしかすると使ったこともあるのではないでしょうか)。Google ノートブックでは、ユーザーがオンライン・ジャーナルに Web ブラウザーでアクセスして、ToDo リストの項目、Web クリッピング、テキスト・スクラップ、そして個人的なメモを保存することができます。さらに複数のユーザーで 1 つのノートブックを共有したり、そのノートブックをWeb ページとして公開することも可能なため、共同作業にも役立ちます。
開発者の視点から見ると、Google ノートブックで特に興味深いのはその Data API です。開発者はこの REST ベースの API を使用して、公開ノートブックのコンテンツを読み取り、読み取ったデータを自分の XML 対応クライアント・アプリケーションに統合することができます。API が返すデータは XML 形式なので、Perl や PHP、あるいは Java™ といったよく使われる言語で簡単に構文解析を行うことができます。例えば PHP を使用するとすれば、SimpleXML などのツールがデータ・リクエストに対する REST レスポンスを構文解析するために必要なすべてのことを行ってくれます。
この記事ではこの API の機能を実証するため、SimpleXML を使って Google ノートブックのコンテンツを PHP アプリケーションに統合する方法を説明します。そして、ユーザーの公開ノートブックのリストを取得する例、ノートブックからすべてのメモを取得する例、そしてノートブックのコンテンツをセクションごとに取得する例を紹介します。
PHP コードの詳細を検討する前に、Google ノートブックの Data API について少し説明しておきます。REST をベースとしたサービスの例に漏れず、この API も HTTP 上で動作します。1 つ以上の入力パラメーターが含まれる HTTP クエリー・ストリングをデコードし、XML 対応のクライアントでの構文解析に適した Atom または RSS 形式のレスポンスを返します。
現在、Google ノートブックの Data API は読み取り専用となっています。この API にはユーザーの 1 つまたは複数の公開ノートブックに含まれるコンテンツを取得するメソッドが含まれますが、この API を使ってノートブックのデータを追加または変更したり、専用ノートブックのコンテンツを取得したりすることはできません。そうは言っても、この API にはかなり完成度の高い有益なアプリケーションを構築するための情報が十二分に含まれています。例えばリスト 1 を見てください。これは、ユーザーの公開ノートブックのリストを取得するための API 呼び出しの結果です。
リスト 1. Google ノートブックの Data API からの REST レスポンス
<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns='http://www.w3.org/2005/Atom'
xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'>
<id>http://www.google.com/notebook/feeds/00000000000000</id>
<updated>2008-05-12T11:43:32.830Z</updated>
<title type='text'>Anonymous's Notebooks</title>
<link rel='alternate' type='text/html'
href='http://www.google.com/notebook/user/00000000000000'
title='Anonymous's Notebooks'/>
<link rel='http://schemas.google.com/g/2005#feed'
type='application/atom+xml'
href='http://www.google.com/notebook/feeds/00000000000000'/>
<link rel='self' type='application/atom+xml'
href='http://www.google.com/notebook/feeds/00000000000000'/>
<author>
<name>Anonymous</name>
</author>
<generator version='1.0'
uri='http://www.google.com/notebook'>Google Notebook</generator>
<openSearch:totalResults>2</openSearch:totalResults>
<openSearch:startIndex>1</openSearch:startIndex>
<openSearch:itemsPerPage>10</openSearch:itemsPerPage>
<entry>
<id>http://www.google.com/notebook/feeds/00000000000000/AAAAAAAAAA</id>
<published>2008-05-11T18:05:04.234Z</published>
<updated>2008-05-12T11:43:32.830Z</updated>
<title type='text'>My First Notebook</title>
<summary type='text'>My First Notebook</summary>
<content type='application/atom+xml'
src='http://www.google.com/notebook/feeds/00000000000000/notebooks/AAAAAAAAAA'/>
<link rel='alternate' type='text/html'
href='http://www.google.com/notebook/public/00000000000000/AAAAAAAAAA'
title='My First notebook'/>
<link rel='self' type='application/atom+xml'
href='http://www.google.com/notebook/feeds/00000000000000/AAAAAAAAAA'/>
<author>
<name>Anonymous</name>
</author>
</entry>
<entry>
<id>http://www.google.com/notebook/feeds/00000000000000
/BDQ7QIgoQp6TK350j</id>
<published>2008-05-12T07:05:17.607Z</published>
<updated>2008-05-12T11:42:46.103Z</updated>
<title type='text'>My Second Notebook</title>
<summary type='text'>My Second Notebook</summary>
<content type='application/atom+xml'
src='http://www.google.com/notebook/feeds/00000000000000/notebooks/BDQ7QIgoQp6TK350j'
/><link rel='alternate' type='text/html'
href='http://www.google.com/notebook/public/00000000000000/BDQ7QIgoQp6TK350j'
title='My Second Notebook'/>
<link rel='self' type='application/atom+xml'
href='http://www.google.com/notebook/feeds/00000000000000/BDQ7QIgoQp6TK350j'/>
<author>
<name>Anonymous</name>
</author>
</entry>
</feed>
|
この出力にざっと目を通して、主な要素を把握してください。
- Google ノートブックの Data API は REST リクエストに対し、要求されたデータが含まれるフィードで応答します。XML レスポンスでは、このフィードはルート要素としての <feed> 要素で表されます。<feed> 要素のなかには、ノートブック・リストへの URL が XML 形式と HTML 形式の両方で含まれる <link> 要素、そして検索の要約統計情報が含まれる <openSearch:> 要素があります。
- 最も外側の <feed> 要素の内側には各ノートブックを表す <entry> 要素が 1 つ以上含まれます。各 <entry> に含まれるのは、ノートブックのタイトル、説明、公開日、最終更新日、作成者などの詳細情報です。これらの情報は、それぞれ <title>、<summary>、<published>、<updated>、<author> 要素で表されます。
同じようにして、各ノートブックの内容についての詳細が含まれたフィードを取得することもできます。フォーマットは上記と同様です (ただし、要素の数は多くなります)。その一例は、リスト 3 に記載してあります。
ここからは、PHP を使用して Google ノートブックの Data API フィードを処理する具体的な例に話を進めます。リスト 2 では、リスト 1 のフィードを取得し、SimpleXML を使って抽出した関連するデータのフラグメントを Web ページのフォーマットになるように設定しています。
リスト 2. ユーザーの公開ノートブックのリスト
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Listing a user's public notebooks</title>
<style>
body {
font-family: Verdana;
}
li {
border-bottom: solid black 1px;
margin: 10px;
padding: 2px;
width: auto;
padding-bottom: 20px;
}
h2 {
color: red;
text-decoration: none;
}
span.attr {
font-weight: bolder;
}
</style>
</head>
<body>
<?php
// set user ID
// replace with actual value
$userid = '00000000000000';
// build feed URL
$feedURL = 'http://www.google.com/notebook/feeds/' . $userid;
// read feed into SimpleXML object
$sxml = simplexml_load_file($feedURL);
// get number of notebooks
$counts = $sxml->children('http://a9.com/-/spec/opensearchrss/1.0/');
$total = $counts->totalResults;
?>
<h1><?php echo $sxml->title; ?></h1>
<?php echo $total; ?> item(s) found.
<p/>
<ol>
<?php
// iterate over entries in category
// print each entry's details
foreach ($sxml->entry as $entry) {
$title = $entry->title;
$summary = $entry->summary;
$published = $entry->published;
$updated = $entry->updated;
echo "<li>\n";
echo "<h2>$title</h2>\n";
echo "<span class=\"attr\">Summary:</span> $summary <br/>\n";
echo "<span class=\"attr\">Last update on:</span> " .
date('d M Y h:i:s', strtotime($updated));
echo "</li>\n";
}
?>
</ol>
</body>
</html>
|
図 1 は、上記のスクリプトによる出力例です。
図 1. ユーザーの公開ノートブックを表示する Web ページ
リスト 2 ではまず、simplexml_load_file() 関数を使ってフィード URL にリクエストを送信し、レスポンスを SimpleXML オブジェクトに変換します。続いてレスポンスに含まれる <entry> 要素の繰り返し処理により、各要素を foreach() ループで処理して図 1 に表示された情報を取得します。各 <entry> の子ノードは、 SimpleXML オブジェクトのプロパティーとして表されます。例えば、<title> ノードの場合は $sxml->title、<summary> ノードの場合は $sxml->summary という表現になります。
ここでフィード URL について一言説明させてもらうと、フィード URL はユーザー固有の ID を標準のフィード URL に追加することによって生成されます。つまり、http://www.google.com/notebook/feeds/USERID という形式です。ID は手動で取得しなければなりません。ID を取得するには、対応する Google ノートブックのページにアクセスし、手動でユーザー ID を PHP スクリプトにコピーします。
これで、ユーザーの公開ノートブックのリストは作成できるようになりましたが、ノートブックのコンテンツはどのように表示すればいいのでしょう。
これも特に難しい作業ではありません。必要なことは、ノートブック ID を取得し (前のセクションで説明したユーザー ID を取得するプロセスと同様の手動のプロセス)、フィード URL を http://www.google.com/notebook/feeds/USERID/notebooks/NOTEBOOKID という形式で生成して、この URL に REST リクエストを送信するだけです。出力はリスト3 のようになります。
リスト 3. Google ノートブックの Data API からの REST レスポンス
<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns='http://www.w3.org/2005/Atom'
xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'>
<id>http://www.google.com/notebook/feeds/00000000/notebooks/AAAAAAAAA</id>
<updated>2008-05-12T07:47:31.118Z</updated>
<title type='text'>My first notebook</title>
<link rel='alternate' type='text/html'
href='http://www.google.com/notebook/public/00000000/AAAAAAAAA'
title='My first notebook'/>
<link rel='http://schemas.google.com/g/2005#feed'
type='application/atom+xml'
href='http://www.google.com/notebook/feeds/00000000/notebooks/AAAAAAAAA'/>
<link rel='self' type='application/atom+xml'
href='http://www.google.com/notebook/feeds/00000000/notebooks/AAAAAAAAA'/>
<author>
<name>Anonymous</name>
</author>
<generator version='1.0' uri='http://www.google.com/notebook'>
Google Notebook</generator>
<openSearch:totalResults>5</openSearch:totalResults>
<openSearch:startIndex>1</openSearch:startIndex>
<openSearch:itemsPerPage>10</openSearch:itemsPerPage>
<entry>
<id>http://www.google.com/notebook/feeds/00000000/notebooks
/AAAAAAAAA/NDQ9jIgoQ6qH53p0j</id>
<published>2008-05-12T06:43:10.186Z</published>
<updated>2008-05-12T06:43:46.415Z</updated>
<category scheme='http://schemas.google.com/notebook/gdata/2007/section'
term='SDQqRIwoQm5zj4J0j' label='My Books'/>
<title type='text'>How to do Everything with PHP and MySQL
A beginner's guide to using PHP and M...</title>
<content type='html'><a href="http://www.everythingphpmysql.com/">
How to do Everything with PHP and MySQL</a><br>A beginner's
guide to using PHP and MySQL together <br></content>
<link rel='alternate' type='text/html'
href='http://www.google.com/notebook/public/00000000/AAAAAAAAA#NDQ9jIgoQ6qH53p0j'
title='How to do Everything with PHP and MySQL
A beginner's guide to using PHP and M...'/>
<link rel='self' type='application/atom+xml'
href='http://www.google.com/notebook/feeds/00000000/notebooks
/AAAAAAAAA/NDQ9jIgoQ6qH53p0j'/>
<author>
<name>Anonymous</name>
</author>
</entry>
<entry>
<id>http://www.google.com/notebook/feeds/00000000/notebooks/AAAAAAAAA/
NDSGpIgoQ6oX13p0j</id>
<published>2008-05-12T06:42:01.066Z</published>
<updated>2008-05-12T06:42:46.926Z</updated>
<category scheme='http://schemas.google.com/notebook/gdata/2007/section'
term='SDQqRIwoQm5zj4J0j' label='My Books'/>
<title type='text'>MySQL: The Complete Reference An authoritative
reference to MySQL</title>
<content type='html'><a href="http://www.mysql-tcr.com/">
MySQL: The Complete Reference</a><br>An authoritative reference to
MySQL<br></content>
<link rel='alternate' type='text/html'
href='http://www.google.com/notebook/public/00000000/AAAAAAAAA#NDSGpIgoQ6oX13p0j'
title='MySQL: The Complete Reference An authoritative reference to MySQL'/>
<link rel='self' type='application/atom+xml'
href='http://www.google.com/notebook/feeds/00000000/notebooks/
AAAAAAAAA/NDSGpIgoQ6oX13p0j'/><author>
<name>Anonymous</name>
</author>
</entry>
...
</feed>
|
上記は、リスト 1 に記載した出力とそれほど変わりません。レスポンスは <feed> ルート要素で始まり、その後に、ノートブックのコンテンツへの URL が XML 形式と HTML 形式の両方で含まれる <link> 要素、そしてノートブックに関する要約統計情報が含まれる <openSearch:> 要素が続きます。
最も外側の <feed> 要素の内側には、各メモを表す <entry> 要素が 1 つまたは複数あります。各 <entry> では、カテゴリー、タイトル、コンテンツ、公開日、最終更新日、作成者などの詳細情報がそれぞれ <category>、<title>、<content>、<published>、<updated>、<author> といった要素で表されます。このうち、メモの実際のコンテンツが含まれるのは <content> 要素です。type=html 属性は、コンテンツが HTML 形式で表されていることを示します (そのため、ブラウザーに直接レンダリングできます)。
リスト 4 の PHP コードは、この XML を処理して、Web ページとしてレンダリングします。
リスト 4. ノートブックのコンテンツの表示
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Listing a user's notes</title>
<style>
li {
border-bottom: solid black 1px;
margin: 10px;
padding: 2px;
width: auto;
padding-bottom: 20px;
}
a {
color: red;
text-decoration: none;
}
</style>
</head>
<body>
<?php
// set user ID and notebook ID
// replace these with actual values
$userid = '000000000000000000';
$notebookid = 'AAAAAAAAAA';
// build feed URL
$feedURL = 'http://www.google.com/notebook/feeds/' . $userid .
'/notebooks/' . $notebookid;
// read feed into SimpleXML object
$sxml = simplexml_load_file($feedURL);
// get number of notes
$counts = $sxml->children('http://a9.com/-/spec/opensearchrss/1.0/');
$total = $counts->totalResults;
?>
<h1><?php echo $sxml->title; ?></h1>
<?php echo $total; ?> note(s) found.
<p/>
<ol>
<?php
// iterate over entries in notebook
// print each entry's details
foreach ($sxml->entry as $entry) {
$entry->registerXPathNamespace('atom', 'http://www.w3.org/2005/Atom');
$content = $entry->xpath("atom:content[@type='html']");
echo "<li>{$content[0]}</li>\n";
}
?>
</ol>
</body>
</html>
|
結果は図 2 のようになるはずです。
図 2. ユーザーの公開ノートブックのコンテンツを表示する Web ページ
リスト 4 では、フィード URL は指定されたユーザーとノートブック ID から動的に生成され、このフィード URL から返された XML が simplexml_load_file() メソッドによって処理され SimpleXML にされます。続いて foreach ループでさまざまな <entry> 要素が処理されて、各メモのコンテンツが取得、表示されます。ここで注目すべき点は、xpath() メソッドを使用して、type=html 属性が指定された <content> ノードだけが取得されるようにしていることです。
以下のパラメーターを REST クエリーに追加することで、API 出力をカスタマイズすることができます。
-
start-indexパラメーター。ノートブック・エントリーの開始オフセットを指定します。 -
max-resultsパラメーター。取得するノートブック・エントリーの数を指定します。 -
updated-min、updated-max、published-min、published-maxパラメーター。返されるエントリーの (更新日または公開日の) 日付の範囲を指定します。 -
orderbyパラメーター。エントリーの並び替えの基準を指定します。
リスト 5は、リスト 4 の出力を 5 つのエントリーに制限し、ノートブックでの位置を基準にソートする例です。
リスト 5. API 出力のカスタマイズ
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Listing a user's notes</title>
<style>
li {
border-bottom: solid black 1px;
margin: 10px;
padding: 2px;
width: auto;
padding-bottom: 20px;
}
a {
color: red;
text-decoration: none;
}
</style>
</head>
<body>
<?php
// set user ID and notebook ID
// replace these with actual values
$userid = '02956669685298890120';
$notebookid = 'BDT3iIgoQ6oKhyZ0j';
// build feed URL
// set max results and sort order
$feedURL = 'http://www.google.com/notebook/feeds/' . $userid .
'/notebooks/' . $notebookid;
$feedURL .= '?max-results=5&orderby=position';
// read feed into SimpleXML object
$sxml = simplexml_load_file($feedURL);
?>
<h1><?php echo $sxml->title; ?></h1>
<p/>
<ol>
<?php
// iterate over entries in notebook
// print each entry's details
foreach ($sxml->entry as $entry) {
$entry->registerXPathNamespace('atom', 'http://www.w3.org/2005/Atom');
$content = $entry->xpath("atom:content[@type='html']");
echo "<li>{$content[0]}</li>\n";
}
?>
</ol>
</body>
</html>
|
リスト 5 は、フィード URL に max-results および orderby パラメーターを追加することで取得データのさらなるカスタマイズを行っている点を除けば、リスト 4 とまったく同じです。図 3 に出力結果を示します。
図 3. ユーザーの公開ノートブックのコンテンツをフィルタリングして表示する Web ページ
Google ノートブックでは、ユーザーがメモをセクション別に編成し、Data API を使ってそれぞれのセクションにアクセスできるようになっています。 リスト 3 の例を見るとわかるように、これらのセクションは各エントリー内の <category> 要素によって表されます。セクションを処理してクライアント・アプリケーションの詳細レベルをさらに追加するのは、それほど難しい作業ではありません。リスト 4 を拡張したリスト 6 を見れば、その方法がわかります。
リスト 6. ノートブックのセクションの表示
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Listing a user's public notes by section</title>
<style>
li {
border-bottom: solid black 1px;
margin: 10px;
padding: 2px;
width: auto;
padding-bottom: 20px;
}
a {
color: red;
text-decoration: none;
}
</style>
</head>
<body>
<?php
// set user ID and notebook ID
// replace these with actual values
$userid = '00000000000000';
$notebookid = 'AAAAAAAAAAAA';
// build feed URL
$feedURL = 'http://www.google.com/notebook/feeds/' . $userid .
'/notebooks/' . $notebookid;
// read feed into SimpleXML object
$sxml = simplexml_load_file($feedURL);
// get number of notes
$counts = $sxml->children('http://a9.com/-/spec/opensearchrss/1.0/');
$total = $counts->totalResults;
// get section labels
$sxml->registerXPathNamespace('atom', 'http://www.w3.org/2005/Atom');
$categories = array_unique($sxml->xpath('//atom:category/@label'));
?>
<h1><?php echo $sxml->title; ?></h1>
<?php echo $total; ?> note(s) found.
<p/>
<?php
// get entries
// iterate over entries and check section labels
// print each entry's details in the appropriate section
$entries = $sxml->xpath("//atom:entry");
foreach ($categories as $c) {
echo "<h2>{$c['label']}</h2>\n";
echo "<ol>\n";
foreach ($entries as $entry) {
$entry->registerXPathNamespace('atom', 'http://www.w3.org/2005/Atom');
if(trim($entry->category['label']) == trim($c['label'])) {
$content = $entry->xpath("atom:content[@type='html']");
echo "<li>{$content[0]}</li>\n";
}
}
echo "</ol>\n";
}
?>
</body>
</html>
|
改良された出力は、図 4 のようになります。
図 4. ユーザーの公開ノートブックのセクションを表示する Web ページ
セクションを追加したことによって、リスト 6 はリスト 4 に比べると少し複雑になっています。このスクリプトはまず、REST リクエストを生成してフィード URL に送信し、レスポンスとして返された XML を SimpleXML オブジェクトに変換します。次に、xpath() メソッドを使用してすべての <category> 要素を取得し、それぞれの label 属性を読み取って固有のラベル (セクション名) が含まれる配列を生成します。続いてネストされた foreach() ループがエントリーを繰り返し処理し、エントリーをセクションに割り当てて Web ページとして表示します。
ただし、上記のようにするのがこの特定の目的を達成する唯一の手段ではありません。Google ノートブックの Data API では、開発者がノートブックのエントリーを特定のカテゴリー (セクション) に制限することもできます。その方法は、カテゴリー名をノートブック・フィードの URL に追加することです (例えば、http://www.google.com/notebook/feeds/USERID/notebooks/NOTEBOOKID/-/Section1/)。この事実を利用すれば、ノートブック・エントリーのカテゴリー別ビューを作成する他の方法を開発することができます。リスト 7 は、その一例です。
リスト 7. ノートブックのセクションの表示
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Listing a user's public notes by section</title>
<style>
li {
border-bottom: solid black 1px;
margin: 10px;
padding: 2px;
width: auto;
padding-bottom: 20px;
}
a {
color: red;
text-decoration: none;
}
</style>
</head>
<body>
<?php
// set user ID and notebook ID
// replace these with actual values
$userid = '00000000000000';
$notebookid = 'AAAAAAAAAAAAAAA';
// build feed URL
$feedURL = 'http://www.google.com/notebook/feeds/' . $userid .
'/notebooks/' . $notebookid;
// read feed into SimpleXML object
$sxml = simplexml_load_file($feedURL);
// get number of notes
$counts = $sxml->children('http://a9.com/-/spec/opensearchrss/1.0/');
$total = $counts->totalResults;
// get section labels
$sxml->registerXPathNamespace('atom', 'http://www.w3.org/2005/Atom');
$categories = array_unique($sxml->xpath('//atom:category/@label'));
?>
<h1><?php echo $sxml->title; ?></h1>
<?php echo $total; ?> note(s) found.
<p/>
<?php
// iterate over categories
foreach ($categories as $c) {
echo "<h2>{$c['label']}</h2>\n";
echo "<ol>\n";
// get feed of entries for each category
$categoryfeedURL = $feedURL . '/-/' . urlencode($c['label']);
$sxml2 = simplexml_load_file($categoryfeedURL);
// iterate over entries in category
// print each entry's details
foreach ($sxml2->entry as $entry) {
$entry->registerXPathNamespace('atom', 'http://www.w3.org/2005/Atom');
$content = $entry->xpath("atom:content[@type='html']");
echo "<li>{$content[0]}</li>\n";
}
echo "</ol>\n";
}
?>
</body>
</html>
|
リスト7 では異なる方法を取っています。このスクリプトでまず初めに行っているのは、ノートブック・フィードを処理し、リスト 6 と同じ方法でフィードからカテゴリー名を切り分けることです。そして検出されたカテゴリーごとに、追加のカテゴリー・パラメーターを設定した新しい REST リクエストを生成します。このパラメーターにより、出力は該当するカテゴリーに一致するエントリーだけに制限されます。このサブリクエストの結果をさらに SimpleXML で処理してから表示すると、図4 に記載した出力と同じ出力が生成されることになります。
この記事で説明した例から明らかなように、Google ノートブックの Data API は開発者が公開ノートブックのコンテンツを Web アプリケーションに統合するには便利で、完成度の高い柔軟な手段となります。この API はマッシュアップを作成するときだけでなく、単に Google ノートブックへのカスタマイズしたインターフェースを作成するにも最適です。ぜひ、実際に使ってみてください。
学ぶために
-
XFront チュートリアル: REST の機能、そして REST スタイルの Web サービスを構築する方法を理解してください。
- 「Web サービスで REST を実現する、第 1 回: WSDL 2.0 での REST と Web サービス」(Eran Chinthaka 著、developerWorks、2007年5月): REST を使って Web サービスを実現する方法を学んでください。
-
Developer's Guide および Reference Guide: Google ノートブックの Data API について詳しく学んでください。
-
IBM XML 認証: XML や関連技術の IBM 認定開発者になる方法について調べてください。
-
XML technical library: 広範な技術に関する記事とヒント、チュートリアル、標準、そして IBM レッドブックについては、developerWorks XML ゾーンを参照してください。
-
developerWorks technical events and webcasts: これらのセッションで最新情報を入手してください。
-
テクノロジー・ブックストア: この記事で紹介した技術やその他の技術に関する本を参照してください。
-
developerWorks
podcasts: ソフトウェア開発者向けの興味深いインタービューとディスカッションを聞いてください。
製品や技術を入手するために
-
IBM 製品評価用トライアル・ソフトウェア: developerWorks から直接ダウンロードできるトライアル・ソフトウェアで、次のプロジェクトを構築してください。DB2®、Lotus®、Rational®、Tivoli®、および WebSphere® によるアプリケーション開発ツールおよびミドルウェア製品のトライアル版が揃っています。
議論するために
-
XML ゾーンのディスカッション・フォーラム: XML 関連のフォーラムに参加してください。
-
developerWorks XML zone: Share your thoughts: この記事についてのご意見、ご感想をお寄せください。このフォーラムを管理する XML ゾーンの編集チームは、読者からの投稿をお待ちしています。
-
developerWorks blogs: developerWorks blogs から developerWorks コミュニティーに加わってください。
Vikram Vaswani は、オープンソースのツールと技術を専門とするコンサルティング・サービス会社、Melonfire の創業者で、現在 CEO を務めています。『PHP Programming Solutions』および『How to do Everything with PHP and MySQL』の著者でもあります。