2015.02.13
遊ぶAPI

こんにちは。プログラマーのまつながです。
今回は、APIというものに慣れようと思い、天気予報のAPIを利用してPHPで簡単な天気予報を作成してみようと思います。
使用するAPIはlivedoor 天気情報のAPIです。
livedoor 天気情報のAPIは無料ではありますが、商用不可になりますので、お気を付けください。
ファイルは1つ、index.htmlのみです。
<?php
$wetherUrl = "http://weather.livedoor.com/forecast/webservice/json/v1?city=130010";
$wetherData = file_get_contents($wetherUrl, true);
$data = json_decode($wetherData);
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta charset="utf-8">
<title>天気予報</title>
<meta name="keywords" content="">
<meta name="description" content="">
<style>
#content {
color: #666;
}
li {
list-style: none;
margin-bottom: 20px;
}
</style>
</head>
<body>
<div id="content">
<h1>天気予報</h1>
<div>
<ul>
<?php foreach ($data->forecasts as $data): ?>
<li>
<?php echo preg_replace('#-#', '/', $data->date); ?>
<img src="<?php echo $data->image->url; ?>" />
<?php echo $data->telop; ?>
</li>
<?php endforeach; ?>
</ul>
</div>
</div>
</body>
</html>
APIからJSON形式のデータを取得
1行目から3行目まででAPIのデータを取得、PHPで操作する為に配列に変換を行っています。
JSON形式のデータの確認としては、1行目のURL(http://weather.livedoor.com/forecast/webservice/json/v1?city=130010)をブラウザからアクセスするとJSONが返ってくることが確認できます。
city=130010というのは東京を示しています。
この数字は、こちら側で決めたものではなくAPIに既に用意されている数字です。
クエリに何を指定できるなどの確認は公式ページに記載されていますので、迷うことなく自分のほしいデータを指定することができます。
25行目から39行目は表示部分のコーディングになり、単純な配列の操作になります。
ループ文を使用し、配列の中から自分が表示したいデータを指定し、表示しています。
完成形は下図のような表示になります。

このようにAPIを使用すれば、データが既に存在しています。
そのAPIを使用する事によってJSON形式のデータやその加工、PHPを使用した操作など、自分の好きなデータを好きなように操作することが手軽にできます。
自分で一からJSON形式のデータを作成するというのはなかなか時間のかかることだと思いますし、データを仮で入れて同じ処理をしてサンプル1などが羅列するよりも、APIを使用して実データを操作した方が楽しいと思います。
是非!!!