RestAPI

【C#】RestSharp + e-Statの使い方を分かりやすく解説【OpenData】

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でも使用できます
.NET4.7.2
プロジェクトWindowsFormアプリケーション 
OSWindows 7 32bitWn10でも使用できます
CPUi5 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/」と入力してください。

https://www.e-stat.go.jp/mypage/user/preregister

取得するデータの選択

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の利用方法」のところに解説が記載されています。

https://www.e-stat.go.jp/api/api-info/e-stat-manual#api_4_4

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を利用する方法をを解説しました。参考になればうれしいです。

応援・要望お待ちしてます

ブログを見ていて「この辺を詳しく知りたい」「このライブラリの使い方を知りたい」「こんなことで困ってる」...etc があれば、コメント・問い合わせ・Twitterで教えてください。質問・ご要望に合わせて解説記事を作ります。

ブログを気に入っていただけたり、「応援してもいいよ」という方がいたら、ブログやSNSでの紹介をお願いします。 あたたかい応援は、中の人の更新の大きな励みになります。

ABOUT ME
えす
現役のソフトウェアエンジニアです。 C++ C# Python を使ってます。10年ちょい設計/開発部門にいましたが、今はQAエンジニアっぽいことをしています。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です