目的
- 今更感があるが、e-Statからデータを取得するためにリモート端末上のbashからシェルスクリプトで簡易的に操作できるようにしたもの。
内容
機能概要
- 使える機能は3つ
- オプションを-l/-m/-dのいずれかを指定することで機能選択
- POSTは使わない
- 統計表情報取得はパラメータを渡さないと76M程度のテキストデータが返ってくるため、あえて作成機関もしくは政府統計コードを指定するように機能を絞った。
- 指定パラメータも限定
- -vオプションに値を指定(パラメータは機能別に自動選定)
- 統計表情報(getStatsList):statsCode
- メタ情報(getMetaInfo):statsDataId
- 統計表(getStatsData):statsDataId
- -vオプションに値を指定(パラメータは機能別に自動選定)
- 出力はJSON形式、文字コードはUTF-8、改行コードはLF
- 必要パッケージ:curl/nkf/jq
- apt-getなどで入手してください。
利用例
- 事前にe-Statのサイト(https://www.e-stat.go.jp/SG1/estat/eStatTopPortal.do) からappIdを取得
- 以下は、国税庁(作成機関コード:00351)の民間給与実態統計調査(統計表ID:0003045904)のデータを取得する場合
機能 | 内容 | 使用例 |
---|---|---|
統計表情報取得 | 統計表から、政府統計コードを指定することで一覧表を取得する | command -l -v 00351 |
メタ情報取得 | 個別データのメタ情報を統計表IDを指定することで取得する | command -m -v 0003045904 |
統計データ取得 | 個別統計データの情報を統計表IDを指定することで取得する | command -d -v 0003045904 |
スクリプト
- ファイル名を「estat」などとして、実行権限をつける
# !/bin/bash
#
# e-Stat API
#
CMDNAME=`basename $0` # コマンド名
URL=http://api.e-stat.go.jp/rest/2.0/app/json/ # e-Stat APIのアドレス
APPID= hogehogehogehogehogehogehogehoge # appId => 事前にe-Statサイトから入手が必要
LNG=J # 言語指定
OPT= # コマンドラインオプション
OBJECT= # データ取得方法
PARAMNAME= # 指定パラメータ
VALUE= # パラメータの値
#
# 引数の数をチェック/標準エラー出力に使い方を表示
#
if [ $# -ne 3 ]; then
echo "" 1>&2
echo " $CMDNAME e-Stat API情報取得ツール" 1>&2
echo "" 1>&2
echo " e-Stat APIから情報取得内容とパラメータを指定することで、簡易的にJSON形式の標準出力を返す" 1>&2
echo "" 1>&2
echo " ・統計表情報取得: $CMDNAME -l -v 政府統計コード(5桁or8桁)" 1>&2
echo " ・メタ情報取得: $CMDNAME -m -v 統計表ID" 1>&2
echo " ・統計データ取得: $CMDNAME -d -v 統計表ID" 1>&2
echo "" 1>&2
echo " (*) curl/nkf/jq パッケージが必要" 1>&2
echo "" 1>&2
exit 1
fi
#
# オプション引数の処理
#
while getopts lmdv: OPT
do
case $OPT in
l) OBJECT=getStatsList
PARAMNAME=statsCode
;;
m) OBJECT=getMetaInfo
PARAMNAME=statsDataId
;;
d) OBJECT=getStatsData
PARAMNAME=statsDataId
;;
v) VALUE=$OPTARG
;;
esac
done
shift `expr $OPTIND - 1`
curl ${URL}${OBJECT}?appId=${APPID}\&lang=${LNG}\&${PARAMNAME}=${VALUE} 2> /dev/null | nkf -wLu | jq '.'
メモ
- 出力結果をパイプ処理でjqやawkなどに渡すと使い勝手がいい。