マッシュアップを,ひとりでスピーディに大量構築する方法

第2回 マッシュアップの開発手法

この記事を読むのに必要な時間:およそ 4 分

インフラの中身

前述したパイプラインとのデータのやりとりは,JSONでおこなうものとします。というのも,同じ情報をXML形式とJSON形式で扱う際に,データ量がまるっきり違うのです。

下記のサンプルを見てください。同じ情報を扱うにも,XML形式のほうが仕様上付随する文字列が多いことに気づくでしょう。

例:XML

<?xml version="1.0" encoding="utf-8"?>
<items>
 <item>
  <id>1</id>
  <lat>35.686880</lat>
  <lng>139.765047</lng>
  <headline>東京都千代田区大手町</headline>
  <description>わたしのオフィスが入ってます。</description>
 </item>
 <item>
  <id>2</id>
  <lat>34.685568</lat>
  <lng>135.527467</lng>
  <headline>大阪府大阪市中央区大阪城1</headline>
  <description>大阪城があります。</description>
 </item>
</items>

例:JSON

{items:[
{
id:1,
lat:35.686880,
lng:139.765047,
headline:"東京都千代田区大手町",
description:"わたしのオフィスが入ってます。"
},
{
id:2,
lat:34.685568,
lng:135.527467,
headline:"大阪府大阪市中央区大阪城1",
description:"大阪城があります。"
}
]};

さて,JSON形式を徹底して扱うとなると,次の2つの,JSON形式で出力するためのパターンが考えられます。

  1. 他APIからXML形式データを受信し,JSON形式に変換し,JavaScriptに送信する。
  2. 他APIからJSON形式データを受信し,そのままJavaScriptに送信する。

このうち,XMLをJSONに変換して出力する方法は下記の通りです。

他サーバのAPIのURLはhttp://www.hoge.com/testAPI.xmlとし,このAPIにリクエストすると上記の例:XMLを返すものとします。

ここでは,XMLをパース(分析)する際に,PHPの場合にはPEARというライブラリ群を利用するととても容易なるのですが,PEARのライブラリ群はレンタル・サーバによってはデフォルトで利用可能になっておらず,またインストールが必要など少し説明が必要なので,今回はより実装しやすいように,PHP XML Libraryという単体ファイルを利用します。

<?php

//上記のPHP XML Libraryを読み込みます
include('xml.php');

//対象になる他サーバのAPIからデータを読み込みます
$url = "http://www.hoge.com/testAPI.xml";
$xml = file_get_contents($url) or die("error");

//読み込んだXMLデータを配列$dataに取り込みます
$data = XML_unserialize($xml);

//XMLにおいて,<items>にぶら下がる<item>群だけをまとめて配列に取り込みなおします
$items = $data["items"]["item"];

//JSONを出力する際に利用する配列を作成し,初期化します。
$jsArray = array();

//<item>群の数だけ繰返処理をします
foreach($items as $value){

//利用しやすいように各値を変数に設定します
 $item_id = $value[$i]["id"];
 $item_lat = $value[$i]["lat"];
 $item_lng = $value[$i]["lng"];
 $item_headline = $value[$i]["headline"];
 $item_description = $data["items"]["item"][$i]["description"];

//JSONの値の組み合わせを作成します
$addJS='{id:"'.$item_id.'",lat:"'.$item_lat.'",lng:"'.$item_lng.'",headline:"'.$item_headline.'", description:"'.$item_description.'"}';

array_push($jsArray,$addJS);

}

//出力用に,JSONの仕様通りに整形します
$output_json = "{items:[";
$output_json .= join(",",$jsArray);
$output_json .= "]};";

//JSONを出力します
echo $output_json;
?>

上記の例をコピーアンドペースト,あなたの利用シーンにあわせて,APIのURLやJSONの中身を微調整して,使ってみてください。

ウェブサイトの構築は,頭をつかってアルゴリズムを生み出すシーンもありますが,多くは過去に書いたコードを若干改良してコピーアンドペーストすることの連続なのです。

マッシュアップとは,切って貼って,ひとりで最後までつくれるようになること,出てきたエラーやバグの原因をすぐに解決にできるようになることにつきます。

たとえばYouTubeやAmazonなどで用いられている5つ星の評価システムは秀逸ですが,それを自作するのは時間の無駄です。5つ星の評価システムは,検索すれば簡単にサンプルソースが見つかります。

プログラムを書く役割であなたがするべきなのは,検索すれば見つかるようなサンプルソースとサンプルソースをつなぐ部分のアルゴリズムの試行錯誤です。

あなたは金融システムのインフラをつくるのではありません。いかに困難でセーフなプログラムを何万行も使って実現したかというのは,自慢にはならないのです。

いかにあっさりとその便利なマッシュアップをつくり,インパクトを与えたかを誇りにするのです。マッシュアップは開発過程においても,小難しいものであってはならず,優雅なものであるはずなのです。

次回はユーザー側インターフェースについて見ていきます。

著者プロフィール

萩原直人(はぎわらなおと)

株式会社クネヒトの経営者。現在,大学に在学中の23歳。21歳の時に起業し,つくった防犯系マッシュアップをもとに起業から11ヶ月後に大手企業と提携,また12ヶ月後に大手ベンチャーキャピタルから資金調達。目下,驚愕のマッシュアップを開発中。

URLhttp://knecht.jp/