📖
【e-Stat API】の使い方
やりたいこと
都道府県コードと都道府県名をAPIから取得したい
e-Stat APIについて
- 日本の統計が閲覧できる政府統計ポータルサイトで用意されているAPI
- https://www.e-stat.go.jp/
- 統計表情報の取得、統計データの取得、統計分類取得、統計データのメタ情報取得、GISデータ取得が可能
【e-Stat API】利用するまで
1.下記のサイトでユーザー登録をする
-
https://www.e-stat.go.jp/mypage/user/preregister
2.ユーザー登録後ログインしたら下記のマイページに移動する
https://www.e-stat.go.jp/mypage/view/dashboard
3.API機能(アプリケーションID発行)に移動する
4.APIを利用したいURLを入力し、「発行」ボタンを押下し、「appId」を確認する -
https://www.e-stat.go.jp/mypage/view/api
リクエストコードの中身
- 今回のコードはLaravelのコントローラに記述しています
- 適宜読み替えてください
- appIdとstatsDataIdが必要
- appIdはe-Statのマイページから取得
- statsDataIdは取得したいデータの統計表ID
- statsDataIdは「0000120247」:平成11年サービス業基本調査 地域編のデータ
$response = Http::timeout(30)->get($this->baseUrl . '/getMetaInfo', [
'appId' => $this->appId,
'statsDataId' => $this->statsDataId
]);
sample.php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Http;
class EstatController extends Controller
{
private $appId = "hogehoge";
private $baseUrl = 'https://api.e-stat.go.jp/rest/3.0/app/json';
private $statsDataId = '0000120247';
public function getPrefectures()
{
try {
$response = Http::timeout(30)->get($this->baseUrl . '/getMetaInfo', [
'appId' => $this->appId,
'statsDataId' => $this->statsDataId
]);
$data = $response->json();
if (isset($data['GET_META_INFO']['RESULT']['STATUS']) && $data['GET_META_INFO']['RESULT']['STATUS'] === 0) {
$areaData = collect($data['GET_META_INFO']['METADATA_INF']['CLASS_INF']['CLASS_OBJ'])
->firstWhere('@id', 'area');
if ($areaData && isset($areaData['CLASS'])) {
$prefectures = collect($areaData['CLASS'])
->filter(function ($region) {
// 都道府県コードのみを抽出(5桁で末尾が000)
// 全国(00000)と13大都市計(00409)を除外
return strlen($region['@code']) === 5
&& substr($region['@code'], -3) === '000'
&& $region['@code'] !== '00000';
})
->map(function ($region) {
return [
'code' => $region['@code'],
'name' => $region['@name']
];
})
->values();
return response()->json($prefectures, 200, [
'Content-Type' => 'application/json; charset=UTF-8'
]);
}
}
return response()->json(['error' => 'Failed to fetch prefectures'], 500);
} catch (\Exception $e) {
return response()->json(['error' => $e->getMessage()], 500);
}
}
}
実行結果
画像のようなデータが取得できる
Discussion