5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Shinyapps.io にUTF8の文字列(日本語)を利用したアプリをデプロイする

Last updated at Posted at 2016-11-10

※2016/11/14修正、options(encoding)を使った方法を追記

##問題
Shinyapps.io はShinyが使う関数にマルチバイト文字が入っているとデプロイの際にワーニングが出て、ライブラリがインストールされずに使えないケースが発生する、という問題があります。ワーニングは無視すればいいのですが、ライブラリがインストールされないとアプリが動かないので致命的です。

##原因
デプロイの際に走るlint()がマルチバイトを受け付けず、それがライブラリのインストールを止めてしまいます。

##対策(回避策1)
deployApp()を発行する瞬間だけエンコーディングをUTF-8に変更します。

tmp.enc <- options()$encoding #標準コーディングを記録(native.encであることが多いです)
options(encoding = "UTF-8") #エンコーディングをUTF-8に変更
deployApp()
options(encoding = tmp.enc) #エンコーディングをもとに戻す

基本的にRは関数・ライブラリによってエンコーディングの取り扱い方がまちまちなので、エンコーディングをUTF-8のままにしておくと思わぬトラブルが発生するかもしれないので、戻しておくことをお勧めします。

##対策(回避策2)
global.R にrequire()もしくはlibrary()を記載します。このファイルにShinyが使う関数を記載する必要があってもマルチバイト文字を使用しない。これでserver.R/ui.Rでワーニングが出ても何とかライブラリはインストールされるようになります。
global.R の役割に関しては以下をご覧ください。
Scoping rules for Shiny apps

一応RStudio側でrsconnect::lintを見直してくれる的なコメントをgit_hub上でいただきました。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?