せっかくなので簡単な使い方だけ少しまとめておきます。
とはいってもここに仕様書があるからこれ見ればだいたいのことはできるんだけどね。
API にはバージョンが 1.0 と 2.0 とあるみたいですが、
上位のほうがいいだろうと盲信して 2.0 を使用しています。
また、この API を使用するにあたって、
e-Stat での利用登録とアプリケーション ID の発行が必要となります。
発行されたアプリケーション ID を使用して API と通信します。
登録の流れは、
web 上で必要事項を入力 → 受信したメールから本登録用 URL にアクセス → 登録完了
アプリケーション ID の発行については、
e-Stat にログイン → アプリケーション ID の取得ページにアクセス → 必要事項を入力 → 即時発行
という感じです。
必要事項を入力しなければいけないところがありますが、
大したものではないので、自分の場合は 3 分もかからずに
登録から発行まで完了しました。
さて、
仕様書によるとこの API を通して以下の操作ができるようです。
ここで紹介するのは上の 3 つの操作のみです。
・統計表情報取得
・メタ情報取得
・統計データ取得
・データセット登録
・データセット参照
・データカタログ情報取得
統計データ取得について
とにかくやりたいことは統計データを取得することだ!
というわけでいきなり統計データ取得について見てみます。
統計データ取得をおこなう場合、API に対して次のようにアクセスします。
1 |
http://api.e-stat.go.jp/rest/2.0/json/getStatsData?appId=xxxxxx |
これは他の操作に関しても同様ですが、
2.0 の部分を 1.0 とすると、バージョン 1.0 の API 機能として動作するようです。
また、レスポンスを XML 形式で受信したい場合は “/json” を省略します。
JSONP 形式で受信したい場合は “/json” を “/jsonp” に置き換えます。
ここでは JSON 形式で受信しています。
さて、これだけでは一体何の統計データを取得するのか、
API はおろかリクエストを送信する自分でさえも把握できていません。
具体的に何の統計データを取得するかを指定するために、
次のような絞込データをパラメータとして追加する必要があります。
パラメータ名 | 意味 | 設定内容 |
statsDataId | 統計表ID | 統計表情報取得で得られる統計表 ID を指定する。 |
cdArea | 地域エリア単一コード | 特定の項目コードでの絞り込み。 メタ情報取得で得られる各メタ情報の項目コードを指定する。 コードはカンマ区切りで 100 個まで指定できる。 |
cdCat01 | 分類事項01 単一コード | 特定の項目コードでの絞り込み。 メタ情報取得で得られる各メタ情報の項目コードを指定する。 コードはカンマ区切りで 100 個まで指定できる。 |
この他にも色々絞込条件はありますが、
詳しくは仕様書を見て下さい。
パラメータの内容を見てみると、
統計データを指定するには、
「統計表情報取得」で “統計表 ID” を取得し、
「メタ情報取得」で “項目コード” を取得する必要があるようです。
つまり、リクエスト URL は最終的にこんな感じになるということです。
1 |
http://api.e-stat.go.jp/rest/2.0/json/getStatsData?appId=xxxxxx&statsDataId=12345678&cdArea=000&cdCat01=001 |
それでは各情報取得について順番に見ていきます。
統計表情報取得について
統計表情報取得をおこなう場合、API に対して次のようにアクセスします。
1 |
http://api.e-stat.go.jp/rest/2.0/json/getStatsList?appId=xxxxxx |
上記のアクセス方法では、e-Stat が持っている統計表情報すべてを受信してしまうため、
かなり膨大な量となる上に、多種の情報が交錯してしまうため、
あまり有用なデータとして受信できません。
統計表情報取得の際には次のようなパラメータを追加して、
条件を絞り込んでデータを取得するようにします。
パラメータ名 | 意味 | 設定内容 |
surveyYears | 調査年月 | 以下のいずれかの形式で指定できる。 yyyy : 単年検索 yyyymm : 単月検索 yyyymm-yyyymm : 範囲検索 |
statsField | 統計分野 | 以下のいずれかの形式で指定できる。 数値 2 桁 : 統計大分類で検索 数値 4 桁 : 統計小分類で検索 |
statsCode | 政府統計コード | 以下のいずれかの形式で指定できる。 数値 5 桁 : 作成機関で検索 数値 8 桁 : 政府統計コードで検索 |
searchWord | 検索キーワード | 任意の文字列 表題やメタ情報に含まれている文字列を検索する。 AND、OR、NOT を指定できる。 |
上記のパラメータを指定する場合は先ほどの “http:// ~” に “&” を付けて追加します。
この他にも指定できるパラメータはありますが、
詳細は仕様書を見て下さい。
それでは C# コードから実際にアクセスしてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
namespace EstatSample { using System; using System.IO; using System.Net; using System.Text; class Program { static void Main(string[] args) { var baseUrl = "http://api.e-stat.go.jp/rest/2.0/app/json/"; var appId = "xxxxxx"; var getStatsList = baseUrl + "getStatsList?" + "appId=" + appId; var surveyYears = "&surveyYears=2012"; var statsCode = "&statsCode=00200524"; var requestUrl = getStatsList + surveyYears + statsCode; var json = RequestToAPI(requestUrl); if (json.Length >= 100) Console.WriteLine(json.Substring(0, 100)); Console.Read(); } /// <summary> /// e-stat API に対してリクエスト URL を送信します。 /// </summary> /// <param name="url">送信する URL を指定します。</param> /// <returns>e-stat API のレスポンスを文字列として返します。</returns> private static string RequestToAPI(string url) { WebRequest req = WebRequest.Create(url); HttpWebResponse response = null; string rxText = string.Empty; try { // レスポンスの取得 response = (HttpWebResponse)req.GetResponse(); Stream resStream = response.GetResponseStream(); var sr = new StreamReader(resStream, Encoding.UTF8); rxText = sr.ReadToEnd(); sr.Close(); resStream.Close(); } catch (Exception ex) { Console.WriteLine(ex); return string.Empty; } finally { if (response != null) response.Close(); } return rxText; } } } |
13 行目の appId には、自分が取得したアプリケーション ID をコピペして下さい。
16、17行目で surveyYear と statsCode パラメータを指定しています。
ここでは 2012 年に調査された人口推計データの政府統計コードを指定しています。
statsCode パラメータについては e-Stat の提供データから確認できます。
20 行目で API にリクエストを投げるメソッドをコールしています。
実行してみると、次のような結果が返ってきます。
本当はもっともっとも~っと長いんですが、
先頭の 100 文字だけを出力しています。
getStatsList リクエストに対するレスポンスなので、
先頭が “GET_STATS_LIST” となっています。
その後、”GET_STATS_LIST/RESULT/STATUS” に
エラーコードが格納されます。
このエラーコードが “0” なら正常終了です。
その他の場合はデータが存在しないか、
リクエスト時のパラメータの指定が間違っています。
予想以上に長くなってきたのでここでいったん打ち切り。
全然 “簡単な” 使用方法ではないな…。