[WEB-API] 全国の都道府県と市区町村情報をターミナルコマンドで取得する方法

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

jsonの負荷テストを実施したいので、大きなjsonデータを集めたくなり、世の中の無料で使えるWEB-APIからデータを吸い出してみたいと思います。
 

今回は、「GeoAPI」tというサイトから都道府県情報と市区町村情報を一気に抜き出してみます。
 

郵便番号や、GPSの座標値などもついているので、アプリを作るときなどに流用できるAPIです。

APIサービス紹介「HeartRails Geo API」

http://geoapi.heartrails.com/
 


 

「HeartRails Geo API」 は、郵便番号/住所/緯度経度データ等の地理情報を、XML、JSON(P) 形式の API により無料でご提供させていただくサービスです。この API をご利用になることにより、お客様側ではサーバーサイドの処理を実装することなく、サンプルのようなアプリケーションを簡単に開発することができます。
(ジオコーディング、逆ジオコーディングにも対応しております。)

 

1日に10万アクセス以上は有料になるそうです。

APIからのデータダウンロードは2段階

APIのリクエストマニュアルはサイトを見ると非常にわかりやすく書かれています。
 

今回は都道府県別の市区町村情報を取得したいので、まずは「都道府県一覧」を取得します。
 

 

ちゃんと47都道府県が格納されていることが確認できます。
 

ちなみに、ここでjqコマンドを使っているのは、wgetやcurlだけでデータをダウンロードすると、2バイト文字がエスケープ化されてしまうので、便利にコンバートしてくれるjqコマンドを通しています。
 

これをこのままファイルに保存しておいて便利に使ってもいいのですが、得られた情報を元にそのまま都道府県情報をゲットしてしまいましょう。
 

まずは、都道府県別に市区町村情報を取得してみましょう。
※サンプルは「東京都」を取得しています。(結果は抜粋しています)
 

 

このコマンドを実行するときのポイントは、urlにクエリが複数ついているときの”&”文字列は、shellコマンドが誤認識してしまうので、必ずエスケープ処理をしてあげましょう。
※バックスラッシュを手前に入れます。
 

そして、都道府県と同じようにjqコマンドで文字を整えます。
 

最後に、これらの情報を一気に出力するためのコマンドが以下になります。
 

 

今回は何度もAPIにアクセスしなくていいように、ファイルに出力しておきます。
中身は実行して各自で確かめてみてください。
 

使いやすいデータ形式に変換

このままjsonファイルとして使っても問題ないのですが、jsonファイルをテキストで見ると非常に改行数が増えてしまうので、json-multi形式の1市区町村についき、1行というログ形式に変換してみたいと思います。
 

 

上記コマンドを1行実行するだけで、きちんと情報をそのままで都道府県、市区町村一覧データが作成できます。
 

データの行数は”18,800″ありました。
 

本当は一覧でデータ取得せずに、都度APIを実行して情報を取得するのが一般的なので、くれぐれもサーバー負荷を多大に掛けるという行為は行わないようにしましょう。
 

せっかく無料で公開してくれているサービス提供者には、感謝する気持ちでいなければいけませんね。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です