
文科省の情報Ⅰ教員研修用教材第4章を検討する オープンデータをJSONで利用する
以前,文科省の情報Ⅰ教員研修用教材第4章,学習20 情報システムが提供するサービス について検討した。
テキスト通りにやってみて,これは情報の授業としてなかなか有意義だと感じた。県が出しているオープンデータを取得するだけなら,jSTAT MAP のアカウントを作る必要はない。研修用教材では,取得したデータを jSTAP MAP の「統計地図作成」で地図上に表示したが,そうではなく,リストアップするのであれば jSATP MAP は使わなくてよい。
この記事に書いたように,県が出しているオープンデータにはいろいろなものがあり,データが xlsx , CSV の他 JSONで提供されているものがある。xls をダウンロードして表計算ソフトで開けば,検索や絞り込みができそうに思うが,実は,Pythonで JSONのファイルを読み込んだ方が簡単で柔軟な処理ができることがわかった。
静岡市のバリアフリーについてのデータをダウンロードした。
ファイル名が長いので,barrier-free.json として,Pythonで読み込む。
import json
f = open("barrier-free.json")
data = json.load(f)
f.close
print(data)
次のように表示される。
{'dataset': [{'?': '1', '施設名': '静岡県庁', '正式名称': '静岡県庁', '郵便番号': ・・・・
json.load(f) によって,JSONのデータが辞書型で読み込まれている。
辞書型は,キーワードと,対応する値のセットでできているデータ形式。ずっと見ていくと,キーワードは dataset だけのようだ。対応する値を \verb|data['dataset']| で確かめると次のようになっている。
[{'?': '1', '施設名': '静岡県庁', '正式名称': '静岡県庁', '郵便番号': '420-8601', ・・・・
辞書型データのリストである。
ここまでわかれば,いかようにでも料理できる。
print(data['dataset'][0]) で,そのうち1件だけを見てみよう。
{'?': '1', '施設名': '静岡県庁', '正式名称': '静岡県庁', '郵便番号': '420-8601', '住所': '静岡市葵区追手町9-6', '方書': '', '電話番号': '054-221-2455', 'FAX': '−', 'スロープ段差なし': '有', '自動ドア': '有', '駐車場': '有', '身障者用駐車場': '有', '点字ブロック': '有', '触地図': '有', '点字案内板': '有', '受付': '有', '筆談OK': '有', '手話OK': '', '電光掲示板': '', 'エレベーター': '有', '車いす対応エレベーター': '有', 'エスカレーター': '', '音声案内': '有', '点字階数表示': '有', '授乳室 ': '', 'ベビーカー貸し出し': '', '託児所': '', '子ども遊園広場': '', '車いす対応トイレ': '有', 'オストメイト対応設備': '有', '小便器手すり': '有', 'おむつ替えシート': '有', '成人用シート': '', '子ども用トイレ': '有', '子ども用チェアー': '有', '緯度': '34.976987', '経度': '138.383057', '': ''}
このようなデータからできているわけだ。このうち,「音声案内」がある施設をリストアップしてみる。
print("総数は ", len(data["dataset"]))
sisetu = []
for dat in data["dataset"]:
if dat['音声案内'] == "有":
sisetu.append(dat["施設名"])
print("音声案内があるのは ", len(sisetu), "件")
print(sisetu)
総数は 598
音声案内があるのは 42 件
['静岡県庁', '静岡総合庁舎', '静岡市役所静岡庁舎及び葵区役所', '静岡市役所 清水庁舎', '駿河区役所', '清水区役所 蒲原支所', '総合社会福祉会館 シズウエル', '清水警察署', '総合社会福祉会館 シズウエル\u3000(ダブリ)', '城東保健福祉エリア内 地域福祉交流プラザ', '中央福祉センター ', 'はーとぴあ清水', '静岡老人ホーム', '西奈複合施設(リンク西奈)内 西奈生涯学習センター', '江尻生涯学習交流館', '興津複合施設内 興津生涯学習交流館', '蒲原市民センター内 蒲原生涯学習交流館', '沼上資源循環センター啓発施設', '児童相談所', '静岡てんかん・神経医療センタ−', '静岡市立静岡病院', '静岡医療福祉センター児童部', '城東保健福祉エリア内 静岡市保健所', '静岡市保健所 保健所清水支所', 'いとう耳鼻咽喉科', '片山歯科クリニック', '勝又整形・形成外科医院', 'まつとみクリニック', '平安プラザ', '新静岡セノバ', '静岡伊勢丹', '静岡パルコ', 'イオン清水店', 'コープしずおか水道店', 'コープしずおか千代田店', 'コープしずおか下野東店', 'しずてつストア新静岡セノバ店', '静岡市美術館', '静岡音楽館AOI', 'マリナート 静岡市清水文化会館', '清水マリンビル', 'ホテルガーデンスクエア静岡']
Excel で拾い出すよりずっと簡単ではないだろうか。
教員研修用教材にならってやった AED では,残念ながら JSON のデータはなかった。