マッシュアップを作るには

ワッフルサイトでは、数多くのAPI情報を紹介しています。
ここでは実際にワッフルでAPIを探して、マッシュアップサイトを作成するまでの手順をご紹介します。

1. マッシュアップサイト作成の準備

何を作成するか決める
ここでは『URLを入力するとブックマーク数を返却するサイト』を作成してみます。
APIを探す
目的が決まっていますので、ワッフルサイトの「カテゴリ」→「ブックマーク」から探します。
APIの決定
ここでは利用者数が多そうな「はてな」の「はてなブックマーク件数取得API」を使用します。
カテゴリ選択イメージ

2. APIの仕様や利用規約を確認

はてなのサイトで仕様や利用規約を確認します。
ワッフルでも確認する事ができますが、念のため元サイトのドキュメントも一読してください。
今回は以下から確認します。

※はてなブックマーク件数取得APIとは - はてなキーワード >>

【ポイント】
  • 接続方式や接続数の上限などは必ず確認しましょう。
  • APIの利用によって料金を徴収する様な場合は「商用利用の可否」についても確認が必要です。

◎今回の場合は以下の事がわかりました。

  • 接続方式:XML-RPC
  • 接続上限:なし(繰り返しリクエストする場合は、リソース節約の対策を行う)
Hatena

3. 作成する環境の決定と準備

ここではスクリプト言語「PHP5」を使用します。
また、以下のPEARライブラリを使用します。

  • XML-RPCを処理する「XML/RPC2」
  • バリデート処理をする「Validate」

4. スクリプトの作成

URLを入力するHTMLと件数を取得するPHPスクリプトを作成します。

5. APIを追加

さらに「livedoor クリップ」の件数取得に対応し、「HeartRails Capture」を利用してサイトのサムネイルも表示できる様にしてみます。

6. 完成!

これで「はてなブックマーク」×「livedoorクリップ」×「HeartRails Capture」マッシュアップサイトのできあがりです!
さらにデザインを付けたり、機能を追加するなどして、自分だけのマッシュアップサイトを作成してみましょう!

※デモサイトはこちら >>

・サンプルサイトのコード

■ get.html

<html>
    <head>
        <title>wafl.net マッシュアップ デモ</title>
    </head>
    <body>
        <form action="get.php" method="post">
            URL:<input name="url" value="http://" size="50"><input type="submit" value="件数取得">
        </form>
        ↓ここに結果が表示されます。


        <div>
<?php
if(count($result) > 0) {
    $pattern = 
<<<HTML
<b>%s</b><br />
<img src="http://capture.heartrails.com/400x300/shadow?%s" />
<ul>
    <li>はてなブックマーク:%s</li>
    <li>livedoorクリップ:%s</li>
</ul>
HTML;
    printf($pattern, htmlspecialchars($url), htmlspecialchars($url), $count['hatena'], $count['livedoor']);
} ?>
        </div>
</body>
</html>

■ get.php

<?php
    require_once 'XML/RPC2/Client.php';
    require_once 'Validate.php';

    $apis['hatena']   = 'http://b.hatena.ne.jp/xmlrpc';
    $apis['livedoor'] = 'http://rpc.clip.livedoor.com/count';
    if(count($_POST) > 0){
        //フォームからURLを取得


        $url = $_POST['url'];
        if(Validate::uri($url)) {
            try {
                //はてなブックマーク件数取得


                $options = array(
                    'prefix' => 'bookmark.'
                );
                $client = XML_RPC2_Client::create($apis['hatena'], $options);
                $result = $client->getCount($url);
                foreach($result as $v) {
                    $count['hatena'] = $v;
                }
                //livedoorクリップ件数取得


                $options = array(
                    'prefix' => 'clip.'
                );
                $client = XML_RPC2_Client::create($apis['livedoor'], $options);
                $result = $client->getCount($url);
                foreach($result as $v) {
                    $count['livedoor'] = $v;
                }
            } catch (Exception $e) {
                echo "エラーが発生しました。";
                exit;
            }
        }
    }
    include 'get.html';
?>