寒くなってきて、薪ストーブの見積もりがちらほら。
そういえば、自動見積り計算機を作ってみよう、なんてほざいたはいいけど、すっかり忘れていたことを今しがた思い出しましたが、早速壁にぶち当たりました。
為替レートってどうやって取得しようかしら、ということです。
ちょっと検索したら、Google の JSON API がヒットしたんですが、404 だったんです。
代わりに見つけたのがこれ。
yql を使う方法が回答されていました。
必要なのは、CADJPY なので、以下のように書き換えました。
http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in ("CADJPY")&env=store://datatables.org/alltableswithkeys
答えは、XML で戻してくれて、
<?xml version="1.0" encoding="UTF-8"?> <query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:count="1" yahoo:created="2015-11-10T16:31:22Z" yahoo:lang="en-us"><results><rate id="CADJPY"><Name>CAD/JPY</Name><Rate>92.9053</Rate><Date>11/10/2015</Date><Time>4:31pm</Time><Ask>92.9156</Ask><Bid>92.8950</Bid></rate></results></query><!-- total: 938 --> <!-- pprd1-node250-lh1.manhattan.sg3.yahoo.com -->
ってな具合なわけです。
というわけで、早速実装しましょう。
<?php if ($xml = simplexml_load_file('http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22CADJPY%22)&env=store://datatables.org/alltableswithkeys')) { print (string)($xml->xpath('//rate[@id="CADJPY"]/Rate')[0]); } ?>
都度都度 yql に問い合わせが発生するので、結果をキャッシュするようにするなどは必要でしょうし、エラー処理も一切省いてますが、為替レートに基づいた見積もりを作れるようになるわけで、多少は正確になりそうです。
ていうか、xpath 式とか、久しぶりすぎてすっかり忘れてましたが、最近の若い人だったら、生まれてませんとか言われそうですね。
まあ、今日は眠いんで、ここまで。