マーケティング企画部の渡辺です。
今回は、『次世代統計利用システム』からオープンデータ(統計情報)を取得する方法を紹介します。
『次世代統計利用システム』とは
『次世代統計利用システム』とは、総務省統計局による様々な統計データが REST API にて無料で公開されているサービスです。つまり日本政府によるオープンデータのサービスです。
※オープンデータとは何か、ついてはこちらの記事をご覧ください
http://dstn.appresso.com/blogdetail?id=2713
日本全体に関する統計、経済活動の実態や、どのような人がどこに住んでいるかなどが詳細にわかるデータが大量に提供されています。
なにしろ政府が作成したデータなので質・量ともに圧倒的なデータで、ビジネスにも大変に役立つ情報が大量にあります。なんとそれを無償で利用することができます。
利用者登録をする
執筆時点の現在で、提供されているサービスには「API機能」と「GIS機能」がありますが、今回は「API機能」の「統計情報」を取得して利用する手順を説明をします。
データの利用には、利用者登録が必要です。以下から登録を行いましょう。
利用登録(仮登録)
https://statdb.nstac.go.jp/apiuser/php/index.php?action=provisional
上記画面からメールアドレスを仮登録すると、本登録のメールが飛んできます。メールにあるURLをクリックすると、本登録が行えます。本登録を行ってログインすると、利用に必要な「アプリケーションID」を取得できます。
画面上の[アプリケーションIDの取得]をクリックし、[名称]( API機能を利用するアプリケーション名)と[URL](アプリケーションのURL) を入力し、[発行]ボタンを押すと、[appId]の部分に接続に必要な文字列(アプリケーションID)が表示されます。[appId]の文字列は以後の接続にて必要になりますので、メモしておいてください。
公開データ一覧取得
まずは、どんなデータがシステムに登録されているか、その一覧を取得しましょう。2014年6月末時点、三種類のデータが提供されています。
・統計情報
・小地域・地域メッシュ
・社会・人口統計体系(都道府県・市区町村のすがた)
今回はまず、「統計情報」を取得してみることにしましょう。データの一覧は以下のURLにアクセスすることでREST/XMLにて取得できます。ウェブブラウザで開いてみてください。
http://statdb.nstac.go.jp/api/1.0b/app/getStatsList?appId=[取得したアプリケーションID]
サイズの大きなXMLがダウンロードされたと思います。現時点ですでに大量のデータが提供されています。XMLですがおおよその意味は解ると思います、様々なデータが利用可能になっていることがわかります。
個別データを取得
では、個別のデータを読み込んでみることにしましょう。
『平成21年経済センサス』から「全国,都道府県,市区町村,14大都市圏」のそれぞれの集計区分ごとに、法人数や従業員数を集計したデータを取得することにしましょう。先ほどのXMLからデータを検索して、統計データのIDを探します。例では、<LIST_INF id=“0003032897”>の「0003032897」が必要な「ID」のデータです。
では、今度はデータ本体を読み込んでみましょう。同じくブラウザで開いてください。
http://statdb.nstac.go.jp/api/1.0b/app/getStatsData?appId=[取得したアプリケーションID]&statsDataId=0003032897
同じくXMLが表示されたと思います。ただ、見ただけではどういうデータなのか解らないと思います。
データの形式の説明
では次に、データ形式の説明をします。大事なのは以下の二つの部分です。
<CLASS_INF>:データについての説明
<DATA_INF>で使われているデータ値についての説明。
<DATA_INF>:データ本体
<VALUE>で一つのデータになっている。
データの読み方を説明しましょう。
<VALUE area="01209" cat01="000" cat02="000" cat04="000" tab="042" time="2009000000">422</VALUE>
とある部分は
・「area」が“01209”、「cat01」が“000”、「cat02」が“000”、「cat04」が“000”、「tab」が“042” 、「time」が“2009000000” であるデータの集計値が「422」
だと言っています。では「area」が“01209”とは何のことでしょうか。その説明は<CLASS_INF>に書かれていて、“01209 “とは「夕張市」のことだと解ります。同じようにして意味を読み取ると、
・「H21_地域(全国・都道府県・市区町村・14大都市圏)」が「夕張市」
・「H21_1-2経営組織3区分」が「総数」
・「H21_企業産業分類" が 「A~R全産業(S公務を除く)」
・「H21_12企業類型2区分」が「総数」
・「表章項目」が「法人数」
・ 集計年度が2009年
・そして、以上の条件での集計値が「422」
つまり「2009年の夕張市の法人数は422」というデータでした。
DataSpiderで読み込ませる(一覧データ)
手作業で読み込んで変換処理しても読めますが、大変ですので自動で読み込ませて自動で変換させてみましょう。
まず、データの一覧をXMLで自動取得してみましょう
●「ネットワーク→Web→巡回(ファイル/パラメータ)」 のアダプタを配置して、以下のようなアイコン一つのスクリプトを作成する。
●アダプタのプロパティを開き、[接続先]から「追加」を選び、グローバルリソースの作成画面を表示し、以下のように設定する。
→[プロトコル]:HTTP、[ホスト名]:statdb.nstac.go.jp、[ポート番号]:80
[接続テスト]をクリックして、接続が成功することを確認してください。
設定が終わったら[完了]をクリックしてグローバルリソースを作成してください。
●以下のように他のプロパティを設定する。
→[パス]:/api/1.0b/app/getStatsList、[エンコード]:UTF-8、[パラメータ]/[ヘッダ名][値]:appId と ユーザ登録で取得したアプリケーションID、[出力ファイル]:/data/openDataList.xml
以上にて、公開されているデータ一覧を読みこむ準備が出来ました。
●スクリプトを実行すると、[出力ファイル]で指定した先に、公開されているデータ一覧がxmlファイルで取得されます。
XMLの中身を表示すると、以下のようになっています。
DataSpiderで読み込ませる(統計データ)
次に、統計データ本体を読みこんでみましょう。
以下では、データの中から、『平成21年経済センサス-基礎調査 企業等に関する集計 - 経営組織(3区分),企業類型(2区分),企業産業(大分類)別法人数,企業数,事業所数及び男女別従業者数-全国,都道府県,市区町村,14大都市圏』を読みこんでみることにします。このデータのIDは、<LIST_INF id="0003032897">ですから、「0003032897」でデータを取得します。
●「ネットワーク→Web→巡回(ファイル/パラメータ)」 のアダプタを配置して、以下のようなアイコン一つのスクリプトを作成する。
●アダプタのプロパティを開き、以下のように設定をします。
→[接続先]:次世代統計利用システム、[パス]:/api/1.0b/app/getStatsData、[エンコード]:UTF-8、[パラメータ]/[ヘッダ名][値]:appId と ユーザ登録で取得したアプリケーションID、[パラメータ]/[ヘッダ名][値]:「statsDataId」と「0003032897」、[出力ファイル]:/data/openData.xml
●スクリプトを実行すると、指定したIDのデータを読みこむことが出来ます。
これで統計データが取得できました。
DataSpiderで読み込ませる(CSVに出力)
次に、取り扱いにくいXMLからCSVにデータ形式を変換してみましょう。
●以下のようなスクリプトを作成します。
●XML読み込みについて、以下のような設定を行います。
→[ファイル]:/data/openData.xml
●CSV書き込みについて、以下のような設定を行います。
→[ファイル]:/data/openData.csv、[列一覧]/[列名]:area, cat01, cat02, cat04, tab, time, value
●Mapperに以下のような設定をします
→入力データ側に下記スクリーンショットのように手動でスキーマを設定する。「area」から「time」までは属性で、それ以外は子要素の追加であることに注意
→「VALUE」から「row」に、[繰り返し]-[基本]-[単純な繰り返し]
→以下スクリーンショットのように線をつなぐ。
以上で設定は終わりです。実行すると以下のようなCSVが出来上がります。Excelなどでも利用しやすいデータ形式になりました。
DataSpiderで読み込ませる(データの内容を変換)
最後に、CSVの内容を人が読める形式に変換します。
まず、「area」を日本語に置き換える処理を作ってみることにしましょう。DataSpiderにはCSVファイルのデータで文字列置換をする機能があるので、これを使って文字列の置換をします。
・<CLASS_INF>以下から、「area」に関連する部分を読みこみ、CSVファイルで置換表(置き換え元のコードと、置き換え後の文字列がペアになったCSV)を出力する。
・既に作ってある<value>を読みこむ機能に、「area」を読みこんだ後、CSVでデータを置換する処理を追加する
●以下のようにスクリプトにアイコンを追加してください。
●次に、新しく配置したcsv書き込みアダプタのプロパティを以下のように設定してください。
→[ファイル]:/data/areaCode.csv、[列一覧]/[列名]:[area_code], [area_name]
●先ほどの読み込み処理と同じ要領で、Mapperを設定します。ただし今回は、「area」に関連した部分だけ読みこませるので、繰り返しアイコンで「条件による抽出」を用います。
これで、置き換え用のCSVファイルを作る処理ができあがります。
●先ほど作成した<VALUE>を読みこむためのMapperを開き、入力側の「area」と出力側の「area」の間に [文字列] - [変換] - [CSVファイルによる置換] のアイコンを配置し、以下のようにプロパティを設定します。
以上で設定は完了です。
スクリプトを実行すると、以下のようなCSVが出来ます。きちんと読んで意味が解る形になりました。
同じようにして、残りの項目の変換処理を作ると以下のようになります。
スクリプトを実行すると、以下のような結果が得られます。無事、読んで意味が解る形になりました。
Excelで読みこませると以下のようになります。
おわりに
変換後のデータを眺めてみると、いろいろなことが解ります。例えば、「O教育,学習支援業」の法人数を確認すると、日本のどこに塾がどれくらいあるのか解ってしまいます。
このように『次世代統計利用システム』では大量のデータが公開されており、データからは様々なことが読み取れます。ぜひDataSpiderを使って、オープンデータを活用していただければと思います。