C#の無料のREST APIライブラリ「RestSharp」使って、政府統計の総合窓口「e-Stat」のREST APIを利用する方法をを解説します。
- 「RestSharp」の使い方
- 「e-Stat」からのデータ取得方法
- e-StatのREST APIから情報を取得する全体コード
- その他、ソースのポイントやe-Stat利用時のコツなど
「RestSharpって何?」という方は、初めにこちらの紹介記事をご覧ください。
e-Statからの取得結果
後述するコードで最終的に以下のようなデータを取得できます。
全国の人口推定のデータから、北海道の人口推定(男女計)のデータのみを指定して取得しています。
※ 画像はXMLですが、JSON形式も取得できます
環境
この記事は以下の環境で作成、動作確認を行っています。
環境 | バージョンなど | 備考 |
VisualStudio | 2019 Community | 2017でも使用できます |
.NET | 4.7.2 | |
プロジェクト | WindowsFormアプリケーション | |
OS | Windows 7 32bit | Wn10でも使用できます |
CPU | i5 3427U 1.8GHz × 2 | |
メモリ | 4GB |
※ 中の人のお財布事情でWin7を使っていますが、Win10で環境構築することを推奨します。
プロジェクトの作成
VisualStudioで新しいプロジェクトを作成します。
今回は「コンソールアプリ(.NET Framework)」で作成します。
Nugetでのインストール
VisualStudioのメニューの「プロジェクト」から、「NuGetパッケージの管理」を選択します。
開いたウインド内で「参照」を選択し、検索欄に「RestSharp」と入力します。
表示された「RestSharp」を選択して「インストール」を押します。
NuGetでのRestSharpのインストールは以上で完了です。
e-Statでユーザー登録
コードを書く前にe-Statでユーザー登録を行います。e-StatではREST APIに接続する際に、「appId」というID情報が必要です。(API接続時にアカウント名・パスによる認証は不要です)。
以下のe-Statのページでユーザー登録を行ってください。
ユーザーID(メールアドレス)を入力すればすぐに登録が可能です。
G-Mailのアドレスでもサクッと登録できます。
途中、登録情報として、URLの入力欄がありますが、今回はWebアプリではないので、
「http://test.localhost/」と入力してください。
取得するデータの選択
e-Statのページで取得する公開情報(のDB)を決めます。
全てのDBがREST APIに対応しているわけではないので、以下の対応一覧のページから探すと早いです。
取得先のDBが決まったら、各DBのページに記載されている「統計表表示 ID」をメモします。
今回は、「人口推計」の中の、「2019年10月1日現在人口推計」→ 「都道府県,男女別人口-総人口,日本人人口」を選んだので、統計表表示IDは「0003412317」です。
全体コード
前述した人口推計のデータを取得するコードは以下の通りです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
// RestClientなど、RestSharpのクラスに使用します
using RestSharp;
using RestSharp.Authenticators;
namespace ConsoleAppRestApi
{
class Program
{
static void Main(string[] args)
{
// RestAPI用のクライアントを生成します
var client = new RestClient();
// RestAPI用のリクエストを生成します
var request = new RestRequest();
// RestAPIから情報取得のためにアクセスする、e-StatのURLです(XML用)
client.BaseUrl = new Uri("http://api.e-stat.go.jp/rest/3.0/app/getStatsData");
// RestAPIから情報取得のためにアクセスする、e-StatのURLです(json用)
//client.BaseUrl = new Uri("http://api.e-stat.go.jp/rest/3.0/app/json/getStatsData");
// HTTPのコマンドを指定します、情報の取得なので GET を指定します
request.Method = Method.GET;
//
// e-Statで取得した appID をパラメータとして追加します
//
request.AddParameter("appId", "*** 取得したappIdを入力します", ParameterType.GetOrPost);
// e-Statの統計表表示 ID (取得した統計表の番号) をパラメータとして追加します
request.AddParameter("statsDataId", "0003412317", ParameterType.GetOrPost);
// 男女別のカテゴリを 000(男女計)に指定します
request.AddParameter("cdCat01", "000", ParameterType.GetOrPost);
// 人口カテゴリを 001(総人口)に指定します
request.AddParameter("cdCat02", "001", ParameterType.GetOrPost);
// エリアを 01000(北海道)に指定します
request.AddParameter("cdArea", "01000", ParameterType.GetOrPost);
// リクエストを送信します
var response = client.Execute(request);
// リクエストにより取得したデータの中身をファイルに書き込みます
File.WriteAllText(@"C:\test.xml", response.Content );
// 終了待ちです
Console.WriteLine(">> RestAPIによるデータの取得が完了しました。");
Console.ReadKey();
}
}
}
コードのポイント
BaseUrlの指定
下記のコードでREST APIでアクセスするURLを指定しています。
json形式で取得したい場合は、下の/json/のパスが入ったURLを指定してください。
// RestAPIから情報取得のためにアクセスする、e-StatのURLです(XML用)
client.BaseUrl = new Uri("http://api.e-stat.go.jp/rest/3.0/app/getStatsData");
// RestAPIから情報取得のためにアクセスする、e-StatのURLです(json用)
//client.BaseUrl = new Uri("http://api.e-stat.go.jp/rest/3.0/app/json/getStatsData");
統計表自体のリスト・メタ情報など、別の情報を取得したい場合は、URL末尾の「getStatusData」の部分を「getStatsList」・「getMetaInfo」などに変更します。
※ 詳細は以下の公式の使い方ページを参照してください。「2. APIの利用方法」のところに解説が記載されています。
AddParameterでのパラメータを指定
e-Statでは、appId(必須)や、統計表表示IDなど、様々なパラメータの設定が必要です。
RestSharpのAddParameter関数を使って、以下のように設定していきます。
// e-Statの統計表表示 ID (取得した統計表の番号) をパラメータとして追加します
request.AddParameter("statsDataId", "0003412317", ParameterType.GetOrPost);
// 男女別のカテゴリを 000(男女計)に指定します
request.AddParameter("cdCat01", "000", ParameterType.GetOrPost);
// 人口カテゴリを 001(総人口)に指定します
request.AddParameter("cdCat02", "001", ParameterType.GetOrPost);
// エリアを 01000(北海道)に指定します
request.AddParameter("cdArea", "01000", ParameterType.GetOrPost);
項目を絞り込む際のコツ
e-Statのサイトでは、項目を絞るためのカテゴリ名等が確認できません。
取得情報の絞込みをしたい場合は、一度、絞込みなしでXML/JSONデータを取得してしまうのが、一番分かりやすいと思います。
(前述のコードの、一番上の行だけ記載して実行、カテゴリ等を含む全てのデータが取得できます)
下記が、絞込みをせずに取得したXMLの一部です。
カテゴリの情報等の記載されているので、その情報を元に絞込みを指定していきます。
e-StatのAPIを使用してサービスを公開する場合は、以下のクレジットが表記が必要です。
「このサービスは、政府統計総合窓口(e-Stat)のAPI機能を使用していますが、サービスの内容は国によって保証されたものではありません。」
※ e-Stat API機能 クレジット表示より
※ 当サイトもAPIを直接サービスとして公開してはおりませんが、上記クレジットの同様、内容も国によって保証されたものではありません。
まとめ
C#の無料のREST APIライブラリ「RestSharp」使って、政府統計の総合窓口「e-Stat」のREST APIを利用する方法をを解説しました。参考になればうれしいです。
Lenovo Web広告限定ストア
Macに負けないデザインのWindowsPCなら、「ThinkPad」がおすすめ。私も仕事とプライベートで10年以上使っています。以下のリンクで、割引情報やクーポン情報を入手できるので、ぜひ覗いてみてください。
質問・要望 大歓迎です
「こんな解説記事作って」「こんなことがしたいけど、〇〇で困ってる」など、コメント欄で教えてください。 質問・要望に、中の人ができる限り対応します。
使えたよ・設定できたよの一言コメントも大歓迎。気軽に足跡を残してみてください。記事を紹介したい方はブログ、SNSにバシバシ貼ってもらってOKです。