IBM®
本文へジャンプ
    Japan [変更]    ご利用条件
 
 
検索範囲検索:    
    ホーム    製品    サービス & ソリューション    サポート & ダウンロード    マイアカウント    
skip to main content

developerWorks Japan  >  XML | Open source | Web development  >

Technorati API を使う

自動ブログ検索機能を作成する

developerWorks
ページオプション

JavaScript を要するドキュメントオプションは表示されません

原文はこちら

原文はこちら


レベル: 中級

Brian M. Carey, Information Systems Consultant, Triangle Information Solutions

2009年 9月 08日

Technorati はブログの一覧を表示するサービスです。Technorati を利用すると、ブロゴスフィアのほぼ全体にわたって関心対象の記事を検索することができます。Web 2.0 と呼ばれるほとんどのものと同様、Technorati にもその機能の大部分を自動化するための API が用意されており、REST サービスとして提供されています。この記事では例を示しながら、Technorati の API を最大限に活用する方法を学びます。

Technorati とは何か

この記事のタイトルとなっている業界の流行語について説明する前に、別の業界用語であるブロゴスフィアについて説明しておきましょう。

ブロゴスフィアという用語はジャーナリストやコンピューター・マニアなどの間で使われています。ブロゴスフィアとはある特定の範疇に分けられる Web ページの集合体のことであり、そこでは Web ページの所有者達 (以下、ブロガーと呼びます) が自分のアイデアや考え、情熱、さまざまな想い、他の Web ページへのリンクなどを表現しています。ブロゴスフィアの語源となる単語、ブログは、「ウェブ・ログ」をつなげて表現したものです。

検索条件を処理する

よく使われる頭字語
  • API: Application Program Interface
  • HTTP: HyperText Transfer Protocol
  • REST: Representational State Transfer
  • URL: Uniform Resource Locator
  • XML: Extensible Markup Language

一部の Web サイトでは、技術に詳しくない人達が、(平凡ながら) その人達独自のブログをホストすることができます。WordPress を利用すると、ソフトウェアの開発を職業としていないブロガーでも、ウィジェット、テーマ、テンプレートを使って、ある程度高度なブログを作成することができます。その結果、ブロガーとブロギング全般が爆発的に増えています。昨年の時点で、blogherald.com によれば全世界で 2 億近いブログがあるとのことです。この記事を執筆している現在では、ブロゴスフィアは多くの国々で起こるニュースや出来事に関する主要な情報源となっています。

それほど大量のユニークな情報がブロゴスフィアの中にあるなら、この情報はどこで一覧にされ、追跡され、タグ付けされ、そして検索できるのでしょう。

そこに Technorati が登場します。Technorati のサイトの言葉を引用すると「Technorati は、グローバルなオンラインの会話を収集、整理、そして配布します。」Technorati はブロゴスフィア専用の Google だと考えることができます。あるいは、Time 誌の表現を借りると、「Google が Web の参考図書館だとするなら、Technorati は Web の喫茶店になりつつあります。」(Technorati Media と Time の記事へのリンクは「参考文献」を参照してください。)

Technorati のサイトは http://technorati.com です。このサイトには緑色のきれいな検索バーが最上部にあり、その中に Search the blogosphere... (ブロゴスフィアを検索) と表示されています。そのボックスをクリックし、Obama と入力します。そして入力ボックスの隣にある虫眼鏡をクリックします。すると即座に、米国の大統領についての議論を中心とするブログ記事が表示されます。




上に戻る


Technorati の API

Technorati の Web ページを利用して、好きなだけブロゴスフィアを検索してみてください。ただし Web アプリケーション開発者である皆さんは、そうした検索を自動化することや、あるいは Web ページ訪問者が独自の検索条件に基づいてブロゴスフィアから取得した情報を表示できるようにする、といったことを望むかもしれません。

それを実現するためには、Technorati の API を使います。インターネット上の多くの API と同様、Technorati の API は REST を使用しています。

REST とは何か

REST は Representational State Transfer を表す頭字語です。この記事では REST を適切に定義するための詳細な説明は省略しますが、REST については IBM developerWorks のさまざまな記事の中で説明されています (「参考文献」のリンクを参照)。この記事で説明する内容を理解する上では、REST を利用すると単純な HTTP 呼び出しを使って情報やリソースにアクセスできる、と言えば十分です。

REST を次のように考えてみてください。ドメイン特有のデータを取得するためには、単純にある特定の場所を URL で指定します。この記事の場合には、たったそれだけのことです。REST を単純化された Web サービスとみなすこともできますが、そのように大声で言うと、相手が悪いと議論に巻き込まれる羽目になるかもしれません。

この記事の主題に沿って言うと、Technorati API は REST サービスであり、この API では条件が設定された特定の URL を指定することで、その条件に一致するさまざまな記事をブロゴスフィアから取得することができます。そのため、皆さんは開発者として、Web アプリケーションの中で入力を受け付けられるようにし、その入力を、この API が解釈できるようなフォーマットの単純な URL にエンコードすることで、動的にブロゴスフィアにクエリーを実行することができます。

最初の単純な例

リスト 1 の例を考えてみてください。


リスト 1. 単純な検索

http://api.technorati.com/search?key=xxxx&query=Obama

これは非常に単純な URL であり、リクエスト・パラメーターは 2 つしかありません。

実際の Technorati API 関数は最後のスラッシュの後にある単語 (search) であることに注意してください。これは (驚くには当たりませんが)、この REST 呼び出しによってブロゴスフィアに対する検索が実行されることを示しています。

最初のパラメーターがキーです。実際に使用されるキーはユーザーごとに異なり、実際には xxxx という文字列ではありません。使用するキーを取得するためには Technorati に登録してキーを要求する必要があります。幸いなことに、この登録は無料で簡単に行えます。ということは、残念ながら、この記事から単純に URL をコピーしてブラウザーに貼り付け、その結果を表示することはできないということです。この xxxx という文字列を皆さん自身のキーで置き換える必要があります。

2 番目のリクエスト・パラメーターが実際のクエリーです。手動による検索の場合とまったく同じように、この検索でも Obama というキーワードを使います。

皆さん自身のキーで xxxx という文字列を置き換えたら、その URL を Web ブラウザーに入力し、どのような結果が返されるかを見てみます。結果は Web ブラウザーの種類とバージョンによって異なります。どのような結果が画面に表示された場合でも、そのページを右クリックして View Source (ソースの表示) を選択し、実際に返された XML を見てみることが重要です。

いつクエリーを実行したかによって実際の内容も変わりますが、結果はリスト 2 のようになるはずです。


リスト 2 単純な検索による出力 (出力の一部)

<?xml version="1.0" encoding="utf-8"?>
<!-- generator="Technorati API version 1.0 /search" -->
<!DOCTYPE tapi PUBLIC "-//Technorati, Inc.//DTD TAPI 0.02//EN" 
	"http://api.technorati.com/dtd/tapi-002.xml">
<tapi version="1.0">
<document>
<result>
    <query>Obama</query>
    <querycount>2270581</querycount>
    <rankingstart></rankingstart>
</result>
<item>
   <weblog>
      <name>Critica Pura</name>
      <url>http://criticapura.com</url>
      <rssurl>http://criticapura.com/feed/</rssurl>
      <atomurl></atomurl>
      <inboundblogs>7</inboundblogs>
      <inboundlinks>10</inboundlinks>
      <lastupdate>2009-06-21 17:13:23 GMT</lastupdate>
   </weblog>
   <title>Jib Jab Obama</title>
   <excerpt>Try JibJab Sendables</excerpt>
   <created>2009-06-21 17:13:23 GMT</created>
   <permalink>http://criticapura.com/2009/06/jib-jab-obama/</permalink>
</item>
...

非常に興味深いことに、この記事の執筆時点での最初のクエリーの結果は、外国語 (少なくとも、英語を母国語として話す人達にとっては外国語) のブログ・エントリーです。

result 要素はクエリーの結果に関するメタデータ情報を表します。子要素 query は実際のクエリーのキーワードを表します。子要素 querycount は、ブロゴスフィアの中で、このクエリーに一致した記事の数を表します。

result 要素の後にたくさんの item 要素があります。それぞれの item 要素は検索条件に一致したブログ記事に対応します。

weblog 要素はブログ自体に関する情報を表します。これはブログ全体に関する情報であり、単に検索条件に一致した記事の情報ではありません。表 1weblog の子要素の説明です。


表 1. weblog の子要素
要素説明
nameブログ自体の実際の名前
urlブログの URL
rssurlそのブログの RSS (Really Simple Syndication) フィードの URL
atomurlそのブログの Atom フィードの URL
inboundblogsそのブログにリンクしているブログの数
inboundlinksそのブログにリンク・バックしている外部サイトの数
lastupdateブログが最後に更新された日時

表 2weblog ではなく item の子要素を示しています。これらの子要素は記事自体を表しています。


表 2. item の子要素
要素説明
titleブログ記事の実際のタイトル
excerptブログ記事の概要
created記事が書かれた日時
permalinkブログ記事の URL

Technorati API の基本的な関数

Technorati API には強力な検索関数がありますが、この API には他にも便利な関数があることに注目しておく必要があります。

cosmos 関数は名前があまり直感的ではありません。cosmos 関数を使うと、指定の URL にリンクしているブログを検索することができます。例えば、http://nicole-rensmann.bookola.de/blog という URL にあるブログ記事にリンク・バックするすべてのブログを見つけたいとします。そのためには、http://api.technorati.com/cosmos?key=xxxx&url=http://nicole-rensmann.bookola.de/blog という REST 呼び出しを行います。この URL をブラウザーに入力すると (この場合もキーを置き換えます)、リスト 3 のようなものが得られるはずです。


リスト 3. cosmos 関数の出力 (省略版)

<?xml version="1.0" encoding="utf-8"?>
<!-- generator="Technorati API version 1.0" -->
<!DOCTYPE tapi PUBLIC "-//Technorati, Inc.//DTD TAPI 0.02//EN" 
  "http://api.technorati.com/dtd/tapi-002.xml">
<tapi version="1.0">
<document>
  <result>
    <url>http://nicole-rensmann.bookola.de/blog</url>
    <weblog>
        <name>Nicole Rensmanns kleine Welt</name>
        <url>http://nicole-rensmann.bookola.de/blog</url>
        <rssurl>http://nicole-rensmann.bookola.de/blog/?feed=rss2</rssurl> 
        <atomurl>http://nicole-rensmann.bookola.de/blog/?feed=atom</atomurl> 
        <inboundblogs>6</inboundblogs>
        <inboundlinks>6</inboundlinks>
        <lastupdate>2009-06-21 17:10:52 GMT</lastupdate>
        <rank>575630</rank>
    </weblog>
    <inboundlinks>7</inboundlinks>
    <rankingstart>1</rankingstart>
  </result>
  <item>
        <weblog>
            <name>Das Datenschutz-Blog</name>
            <url>http://www.datenschutzbeauftragter-online.de</url>
            <rssurl>http://www.datenschutzbeauftragter-online.de/feed/</rssurl>
            <atomurl>http://www.datenschutzbeauftragter-online.de/feed/atom/</atomurl>
            <inboundblogs>83</inboundblogs>
            <inboundlinks>343</inboundlinks>
            <lastupdate>2009-06-20 07:22:20 GMT</lastupdate>
        </weblog>
        <nearestpermalink>http://www.datenschutzbeauftragter-online.de</nearestpermalink>
        <title>Uberblick zum Thema Netzsperren</title>
        <excerpt>der Ursula von der Leyen Sachliche Debatte uber das Thema</excerpt>
        <linkcreated>2009-05-11 04:20:01 GMT</linkcreated>
        <linkurl>http://nicole-rensmann.bookola.de/blog/?p=3293</linkurl>
  </item>
...

XML フォーマットの出力はリスト 2 で見たものと驚くほど似ていますが、いくつかの明らかな例外があります。この場合の weblog 要素はインバウンド・リンクを持つブログに関する情報を表しています。子要素 urlurl というリクエスト・パラメーターと直接対応していることに注意してください。

この場合にも、いくつかの item 要素があります。これらの item 要素はそれぞれ、クエリーの対象であるブログにリンク・バックするブログに関する情報を含んでいます。

tag 関数を使うと、ある特定のタグを持つブログ記事を検索することができます。Technorati はタグを使ってブログ記事をカテゴリー分けします。ブログ記事の作成者は、彼らの記事を特定の主題と関連付けるタグを 1 つ以上配置することができます。

fishing (釣り) に関する記事をブロゴスフィアで検索するためには、URL として http://api.technorati.com/tag?key=xxxx&tag=fishing を使います。この場合も、この URL の中の xxxx の代わりに皆さん自身の API キーを使う必要があります。この URL をブラウザーに入力すると、リスト 4 のようなものが表示されるはずです。


リスト 4. tag 関数の出力 (省略版)

<?xml version="1.0" encoding="utf-8"?>
<!-- generator="Technorati API version 1.0" -->
<!DOCTYPE tapi PUBLIC "-//Technorati, Inc.//DTD TAPI 0.02//EN" 
 "http://api.technorati.com/dtd/tapi-002.xml">
<tapi version="1.0">
<document>
 <result>
  <query>fishing</query>
  <postsmatched>43655</postsmatched>
  <blogsmatched></blogsmatched>
  <start>1</start>
  <limit>20</limit>
  <querytime>3.126</querytime>
 </result>
 <item>
  <weblog>
   <name>Travel and Leisure Articles</name>
   <url>http://www.toptravelarticles.com</url>
   <rssurl>http://www.toptravelarticles.com/feed</rssurl>
   <atomurl>http://www.toptravelarticles.com/feed/atom</atomurl>
   <inboundlinks>40</inboundlinks>
   <inboundblogs>19</inboundblogs>
   <lastupdate>2009-06-21 17:06:01</lastupdate>
   <hasphoto></hasphoto>
  </weblog>
  <title>Visiting Ghana?</title>
  <excerpt>If you want to experience the culture up close</excerpt>
  <created>2009-06-21 17:06:01</created>
  <postupdate>2009-06-21 17:06:01</postupdate>
  <permalink>http://www.toptravelarticles.com/visiting-ghana.html</permalink>
 </item>
...

この場合も、出力は Technorati API の他の関数の出力と似ています。基本的な違いは、この場合は fishing タグの付いたブログ記事が表示されるという点です。

Technorati API の関数で特に興味深い関数が toptags です。toptags 関数は、toptags 関数を実行した場合に最もよく使われているタグを表示します。http://api.technorati.com/toptags?key=xxxx という URL を (この場合もキーを置き換えられるようにして) ブラウザーに入力してみます。するとリスト 5 のようなものが表示されるはずです。


リスト 5. toptags 関数の出力 (省略版)

<?xml version="1.0" encoding="utf-8"?>
<!-- generator="Technorati API version 1.0 /topptags" -->
<!DOCTYPE tapi PUBLIC "-//Technorati, Inc.//DTD TAPI 0.02//EN" 
 "http://api.technorati.com/dtd/tapi-002.xml">
<tapi version="1.0">
<document>
<result>
<limit>20</limit>
</result>
<item>
<tag>Weblog</tag>
<posts>9578863</posts>
</item>
<item>
<tag>Life</tag>
<posts>7355121</posts>
</item>
<item>
<tag>News</tag>
<posts>4638644</posts>
</item>
...

この出力の解析は容易です。各タグが表示されており、そのタグを含むブログ記事の数が、その次の要素の中に表示されています。

まとめ

Technorati はブロゴスフィアで公開されている記事に関する情報を管理する Web サイトです。Technorati を使うと、特定の条件セットに基づいてブログ記事を検索することができます。

情報スーパーハイウェーの不文律に従い、Technorati は API も提供しています。この API を使うことで、特定の条件セットに基づいてプログラムでブログ記事を検索することができます。この API を使うためには REST 呼び出しを使います。

Technorati の REST API を使うことでブログ検索を自動化することができます。この API を Web アプリケーションに実装すると、その Web アプリケーションのユーザーは、ユーザー自身の特定の関心事項に一致する記事をブロゴスフィアの中から検索できるようになります。



参考文献

学ぶために
  • Technorati API のドキュメントを読み、Technorati API について学んでください。

  • REST の基本的な原理を適確に概説した「RESTful Web サービスの基本」(Alex Rodriguez 著、developerWork、2008年11月) を読んでください。

  • このブログ、Technorati tags では、Technorati のタグの基本、そしてブログ投稿の中で Technorati のタグを使う方法を適確に概説し、実際的な紹介をしています。

  • インターネット上のブログの数に関する記事、「ブログの総数を検証」(Anne Helmond 著、the Blog Herald、2008年11月) を読んでください。

  • 最初のブログ検索エンジンとして設立された Technorati Media で Technorati に関する資料を読み、Technorati によって何ができるのかを学んでください。

  • Searchlight for the Blogosphere」(Jeremy Caplan 著、Time、2006年12月) を読んでください。この記事では、誰が何を言っているかを見つけられる Web 上の喫茶店に Technorati をたとえています。

  • XML および関連技術において IBM 認定技術者になる方法については、IBM XML certification を参照してください。

  • developerWorks の XML ゾーンを XML の技術ライブラリーとして利用してください。広範な話題を網羅した技術記事やヒント、チュートリアル、技術標準、IBM Redbooks などが用意されています。

  • developerWorks の Technical events and webcasts で最新情報を入手してください。

  • developerWorks podcasts ではソフトウェア開発者のための興味深いインタビューや議論を聞くことができます。


製品や技術を入手するために

議論するために


著者について

Photo of Brian Carey

Brian Carey は情報システムのコンサルタントであり、Java、Java Enterprise、PHP、Ajax、そしてそれらの関連技術を専門としています。Twitter で Brian Carey をフォローするためには http://twitter.com/brianmcarey にアクセスしてください。




記事の評価


サイト改善のため、ご意見をお寄せください。こちらのフォームからお願いいたします。



 


 


不充分・不完全である大変素晴らしい
 


この記事を共有する

del.icio.us del.icio.us newsing newsing FC2ブックマーク FC2ブックマーク
Choix! Choix! ニフティクリップ ニフティクリップ Yahoo!ブックマーク Yahoo!ブックマーク
MM/memo MM/memo CZブックマーク CZブックマーク livedoorクリップ livedoorクリップ
はてなブックマーク はてなブックマーク Buzzurl(バザール) Buzzurl(バザール)




上に戻る


    日本IBMについて プライバシー お問い合わせ