LoginSignup
1
3

More than 5 years have passed since last update.

Ruby + RESAS-API で市区町村一覧を取得するサンプルコード

Posted at

サンプルコード

require 'json'
require 'open-uri'

# RESAS-API - 市区町村一覧
# https://opendata.resas-portal.go.jp/docs/api/v1/cities.html

# /result/bigCityFlag
# 特別区・行政区フラグ(0:一般の市区町村、1:政令指定都市の区、2:政令指定都市の市、3:東京都23区)
def get_type(bigCityFlag)
  case bigCityFlag
  when '0' then ''
  when '1' then ' (政令指定都市の区)'
  when '2' then ' (政令指定都市)'
  when '3' then ' (東京都23区)'
  else ''
  end
end

prefCode = '23' # 愛知県の都道府県コード
prefCode = ARGV[0] if ARGV[0]

base_url = 'https://opendata.resas-portal.go.jp/api/v1/cities'
params = {'prefCode' => prefCode}
url = base_url + '?' + URI.encode_www_form(params)
headers = {'X-API-KEY' => 'YOUR RESAS API KEY'}

data = JSON.parse(open(url, headers).read)
data['result'].each{|v|
  puts "#{v['cityCode']}: #{v['cityName']}#{get_type(v['bigCityFlag'])}"
}

実行結果 (愛知県の都道府県コード「23」を指定した場合)

23100: 名古屋市 (政令指定都市)
23101: 名古屋市千種区 (政令指定都市の区)
23102: 名古屋市東区 (政令指定都市の区)
23103: 名古屋市北区 (政令指定都市の区)
23104: 名古屋市西区 (政令指定都市の区)
23105: 名古屋市中村区 (政令指定都市の区)
23106: 名古屋市中区 (政令指定都市の区)
23107: 名古屋市昭和区 (政令指定都市の区)
23108: 名古屋市瑞穂区 (政令指定都市の区)
23109: 名古屋市熱田区 (政令指定都市の区)
23110: 名古屋市中川区 (政令指定都市の区)
23111: 名古屋市港区 (政令指定都市の区)
23112: 名古屋市南区 (政令指定都市の区)
23113: 名古屋市守山区 (政令指定都市の区)
23114: 名古屋市緑区 (政令指定都市の区)
23115: 名古屋市名東区 (政令指定都市の区)
23116: 名古屋市天白区 (政令指定都市の区)
23201: 豊橋市
23202: 岡崎市
23203: 一宮市
23204: 瀬戸市
23205: 半田市
23206: 春日井市
(以下略)

実行結果 (東京都の都道府県コード「13」を指定した場合)

13101: 千代田区 (東京都23区)
13102: 中央区 (東京都23区)
13103: 港区 (東京都23区)
13104: 新宿区 (東京都23区)
13105: 文京区 (東京都23区)
13106: 台東区 (東京都23区)
13107: 墨田区 (東京都23区)
13108: 江東区 (東京都23区)
13109: 品川区 (東京都23区)
13110: 目黒区 (東京都23区)
13111: 大田区 (東京都23区)
13112: 世田谷区 (東京都23区)
13113: 渋谷区 (東京都23区)
13114: 中野区 (東京都23区)
13115: 杉並区 (東京都23区)
13116: 豊島区 (東京都23区)
13117: 北区 (東京都23区)
13118: 荒川区 (東京都23区)
13119: 板橋区 (東京都23区)
13120: 練馬区 (東京都23区)
13121: 足立区 (東京都23区)
13122: 葛飾区 (東京都23区)
13123: 江戸川区 (東京都23区)
13201: 八王子市
13202: 立川市
13203: 武蔵野市
13204: 三鷹市
13205: 青梅市
13206: 府中市

参考資料

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3