備忘ログ

チラシの裏的備忘録&メモ

appIdを一度設定すると各関数でappIdを指定しなくても良くなる{estatapi}のラップ関数のパッケージをつくった

Rで政府統計総合窓口(e-Stat)のAPIを操作する{estatapi}があり、政府統計情報をR上で取り扱うにあたりめちゃくちゃ便利である。

github.com

しかし、何度もコードを叩いていると、appIdを何度も引数で指定するのがめんどくさく感じる。

最初にオブジェクトで置いて指定するのもいいが、結局各関数でお決まりの入力があるのがめんどくさい。

また、たまに実行しようとするときにそもそも自分のAPI IDをe-Statのウェブページに行って確認するがめんどくさい。

PC上に保存しておいても、結局どこかからコピペする手順がめんどくさい。

一度どこかに保存したらそれを参照してほしいと思った。

しかし、例えば.RprofileappId書き込んでもいいが、別の関数でかぶる可能性もあるので、使うときにだけ参照する場所に置いておきたい。

ということでappIdを一度設定すると各関数でappIdを指定しなくても良くなる{estatapi}のラップ関数のパッケージを自分用につくったのでGithubにあげてみた。

ドキュメントは適当である。

{estatapi.appId}

github.com

remotes::install_github("indenkun/estatapi.appId")

使い方

set_appId()で一度e-StatのAPP IDを設定すると、{estatapi}の各関数をラップした{estatapi.appId}を実行するときにappIdを入力する必要がなくなる。

library(estatapi.appId)
# 自分のAPP IDを入力
set_appId("XXX")

e-Stat APIを操作する各関数の基本的な挙動はもともとの{estatapi}と変わらない。

{estatapi}{estatapi.appId}とのe-Stat APIを操作する各関数の変更点は、{estatapi.appId}では引数のappIdが一番最後になっており、既定値がset_appId()で設定されて値になっている。

estat_getStatsList("チョコレート")
## # A tibble: 258 × 22
##    `@id`     STAT_…¹ GOV_ORG STATI…² TITLE CYCLE SURVE…³ OPEN_…⁴ SMALL…⁵ COLLE…⁶
##    <chr>     <chr>   <chr>   <chr>   <chr> <chr> <chr>   <chr>   <chr>   <chr>  
##  1 00001000… 全国物… 総務省  平成9…  価格… -     199711  2007-0… 0       該当な…
##  2 00001001… 全国物… 総務省  平成9…  価格… -     199711  2007-0… 0       該当な…
##  3 00001001… 全国物… 総務省  平成9…  指数… -     199711  2007-0… 0       該当な…
##  4 00001001… 全国物… 総務省  平成9…  指数… -     199711  2007-0… 0       該当な…
##  5 00001001… 全国物… 総務省  平成9…  品目… -     199711  2007-0… 0       該当な…
##  6 00001001… 全国物… 総務省  平成9…  品目… -     199711  2007-0… 0       該当な…
##  7 00001001… 全国物… 総務省  平成9…  品目… -     199711  2007-0… 0       該当な…
##  8 00001001… 全国物… 総務省  平成9…  品目… -     199711  2007-0… 0       該当な…
##  9 00034481… 工業統… 経済産… 工業統… 品目… 年次  202001… 2022-0… 0       該当な…
## 10 00031265… 工業統… 経済産… 工業統… 品目… 年次  201301… 2015-0… 0       該当な…
## # … with 248 more rows, 12 more variables: MAIN_CATEGORY <chr>,
## #   SUB_CATEGORY <chr>, OVERALL_TOTAL_NUMBER <chr>, UPDATED_DATE <chr>,
## #   TABULATION_CATEGORY <chr>, TABULATION_SUB_CATEGORY1 <chr>,
## #   DESCRIPTION <chr>, TABLE_CATEGORY <chr>, TABLE_NAME <chr>,
## #   TABULATION_SUB_CATEGORY2 <chr>, TABLE_SUB_CATEGORY1 <chr>,
## #   TABULATION_SUB_CATEGORY3 <chr>, and abbreviated variable names ¹​STAT_NAME,
## #   ²​STATISTICS_NAME, ³​SURVEY_DATE, ⁴​OPEN_DATE, ⁵​SMALL_AREA, ⁶​COLLECT_AREA

ただし、appIdが各関数の実行時に指定されている場合には、入力された値が優先的に使用される。

appId{tools}R_user_dir()指定されるユーザー設定ディレクトリ下のappIdファイルに平文で保存される。

clear_appId()を実行するとこのappIdファイルが削除される。

設定したappIdcheck_appId()で確認できる。

これで毎回、appIdどこにやった問題が解決される気がする。