shinyappsのデプロォーイ(deploy)周りのメモ

はじめに

今、日本の国債金利を自動でデータ更新して可視化するようなもんを作ろうとしてるんですが

こいつを作るときにあわあわした点をメモっておく。

認証名のトークン・パスワードは.Rprofileに書いておくのがよさげ

以下を参考に、.Rprofileファイル内に、optionなんかを使って設定しておくのがよいのかなと。これがベストプラクティスなのかは知らない。

optionを自分で追加できるってのがミソ。

> options(teramonagix=1:10)
> options()$teramonagix
 [1]  1  2  3  4  5  6  7  8  9 10

今回の場合だと

shinyapps::setAccountInfo(
  name='teramonagi', 
  token=options()$shinyapps.token, 
  secret=options()$shinyapps.secret
)

というように書いている。

ディレクトリ名を表す際の末尾のパス・セパレータはいれちゃいかん!!!on Windows

デプロイをバッチ叩くだけでいいようにしたくて、

deployApp(paste0(getwd(), "/../"))

ってバッチの中で書いてたんだけど、これはだめだった on Windows。正しくは

deployApp(paste0(getwd(), "/.."))

これは多分

に書いてある

Trailing path separators are invalid for Windows file paths apart from ‘/’ and ‘d:/’ (although some functions/utilities do accept them), so as from R 3.1.0 a trailing / or \ is removed.

ってことっぽくて、例えば以下のコードで似たような事例を確認することができる。

> path <- "C:/temp/moge"
> file.exists(path)
[1] TRUE
> file.exists(paste0(path, "/../"))
[1] FALSE
> file.exists(paste0(path, "/.."))
[1] TRUE

今回のケースでは、上記のdeployApp関数の中で呼ばれているfile.exists関数がFALSEを返してきやがるので、処理が途中で終了してバッチが上手く走らなかったというお話。

httpsアクセス内でのread.csv

引数のファイル(URL)は"http://~~~"じゃないとだめだった。はじめhttpsにしていたのだが、アプリが起動しなかった。この辺のエラーログはshinyappsの管理画面のLOGから取れるので、ありがたい&ググりやすい。

Rの環境設定周りのお話

R_HOMEだの.RProfileだのはめんどいので使っていなかったのだが、これがあると便利なので、今回は設定した。以下を見ておけば大体OK。この資料内で言及されているPDFも良い。

ID名など

output系のIDに、ハイフン"-"を使ってはいけない(アンダースコア"_"はOK)。これはRの変数名のルールとしてハイフンが使えないからで、具体的にはこのIDに対して、処理を割り振る時に、

output$hoge-hoge

と各必要があり、ここで処理が落ちるから。