マッシュアップを作るには
ワッフルサイトでは、数多くのAPI情報を紹介しています。
ここでは実際にワッフルでAPIを探して、マッシュアップサイトを作成するまでの手順をご紹介します。
1. マッシュアップサイト作成の準備
- 何を作成するか決める
- ここでは『URLを入力するとブックマーク数を返却するサイト』を作成してみます。
- APIを探す
- 目的が決まっていますので、ワッフルサイトの「カテゴリ」→「ブックマーク」から探します。
- APIの決定
- ここでは利用者数が多そうな「はてな」の「はてなブックマーク件数取得API」を使用します。

2. APIの仕様や利用規約を確認
はてなのサイトで仕様や利用規約を確認します。
ワッフルでも確認する事ができますが、念のため元サイトのドキュメントも一読してください。
今回は以下から確認します。
※はてなブックマーク件数取得APIとは - はてなキーワード >>
- 【ポイント】
- 接続方式や接続数の上限などは必ず確認しましょう。
- APIの利用によって料金を徴収する様な場合は「商用利用の可否」についても確認が必要です。
◎今回の場合は以下の事がわかりました。
- 接続方式:XML-RPC
- 接続上限:なし(繰り返しリクエストする場合は、リソース節約の対策を行う)
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';
?>

