どこどこJPはアクセスユーザーの都道府県認識を行うASPサービスですが、このIPGeolocation技術をWebAPIとして公開したのがどこどこAPIです。
ページにアクセスすると左上のロゴが都道府県別に変化するがこの技術を使ったもののようだ。
月間30万アクセスで10500円の有料サービスだが、お試しサービスもあって1ヶ月間(10万アクセスまで)無料で使える。
IPアドレスを指定するシンプルなREST。出力はJSON形式だがデータは1つしか返らない。APIは2種類あり、都道府県を示すコードか、接続回線(ADSLや光)の名称を取得できる。APIへのアクセス数が増えるだけなので1つにまとめて欲しいところ。
地域認識技術について:どこどこJP
ここによると、ISPの中には地域が識別できないIPを出しているところもあるらしい。
apacheのアクセスログを解析にかけるコードを書いてみた。ただ、こういった大量アクセスするような使い方は料金体系的にも負荷的にも向いていない。
<?php
$api1 = 'http://s01.docodoco.jp/enterprise_j.api?id=***&ipadr=';
$api2 = 'http://s01.docodoco.jp/stream_j.api?id=***&ipadr=';
$fp = fopen($argv[1], 'r');
if (!$fp) {
die("cannot open file.\\n");
}
$max = 100;
$region = array();
$line = array();
while (1) {
$buf = fgets($fp);
if ($buf == '') {
break;
}
$idx = strpos($buf, ' ');
$ip = substr($buf, 0, $idx);
echo $ip . "\\n";
$data = json_decode(file_get_contents($api1 . $ip));
isset($region[$data->region]) ? $region[$data->region]++ : $region[$data->region] = 1;
$data = json_decode(file_get_contents($api2 . $ip));
isset($line[$data->line]) ? $line[$data->line]++ : $line[$data->line] = 1;
$max--;
if ($max == 0) {
break;
}
}
fclose($fp);
asort($region);
asort($line);
print_r($region);
print_r($line);
PHP5.2以降に付属しているjson_decodeを使っている。

