Shiny Serverへのデプロイ
さあ、「環境構築編」で準備したShiny Serverへデプロイして、関係者が分析レポートを見られるようにしましょう。
クライアントマシンからShiny Serverが稼働しているマシンにファイルを転送して、sshで接続します(「shiny_server.pem」と「XXX.XXX.XXX.XXX」は自身のEC2(サーバーマシン)環境に合わせて変更してください)。
$ scp -i shiny_server.pem -r CodeZine-wordcloud ubuntu@XXX.XXX.XXX.XXX: $ ssh -i shiny_server.pem ubuntu@XXX.XXX.XXX.XXX
サーバーマシン上で、プロジェクトディレクトリを/srv/shiny-server/
に配置し、必要なパッケージをインストールします。パッケージインストール時はShiny Serverは停止させておきます。
$ sudo stop shiny-server # 停止 $ sudo cp -r ~/CodeZine-wordcloud /srv/shiny-server/ $ sudo su - -c "R -e \"install.packages('wordcloud', repos='http://cran.rstudio.com/')\"" $ sudo su - -c "R -e \"install.packages('memoise', repos='http://cran.rstudio.com/')\"" $ sudo start shiny-server # 起動
ブラウザからShiny Serverにアクセスすると先ほど同様ワードクラウドレポートが表示されていることでしょう。これで公開に必要な作業はすべて完了しました。
まとめ
筆者が実際にShinyアプリを作ってみた感想として、Shinyアプリはこんなシーンでオススメです。
- 社内でRの動的な分析レポートを常に最新の状態で共有したい
- 単ページで完結するシンプルな構成のアプリを作りたい
- Rの知識はあるけどWebアプリ開発に関する知識・開発経験が少ない場合
社内でRの動的な分析レポートを常に最新の状態で共有したい
Rで分析したレポートの配布方法(公開方法)については、Rユーザーの関心事の一つではないでしょうか。RにはRMarkdown&knitrの組み合わせで静的レポートを生成し、配布するという選択肢もありますが、基本的には静的なレポートなのでレポートの魅力が最大限発揮できないかもしれません。さらに、レポートをファイルで配布する場合、配布バージョンの管理が煩雑になります。その点Shiny Serverを利用することで、常に最新バージョンの動的な分析レポートがエンドユーザーへ提供できます。
一方、不特定多数での利用はパフォーマンス的に厳しいです。もちろん、サーバースペック&処理内容にもよりますが、数人が同時にアクセスしただけで役に立たなくなることもあります。IPアドレスなどでアクセス数を制限できる範囲内で利用するのが良い気がします。ただし、複数サーバーでRのプロセスを起動させて分散処理させることも可能です。具体的にはwdkz氏の資料「Shiny-Serverあれこれ」が詳しいです。興味がある方はぜひ参照してみてください。
単ページで完結するシンプルな構成のアプリを作りたい
Shinyで作るWebアプリは画面からの入力を受けてRの関数に投げて結果を表示するだけのような、分析手法的には複雑であっても、Rの処理内容的には簡潔なシーンに向いています。server.R
とui.R
と+αのファイルで書ける程度の構成であれば簡単にWebアプリ化できます。
一方、ログイン認証や、画面遷移などを行う分析以外の役割を持たせた多機能なWebアプリとしては向いていません。他の言語のWebアプリのフレームワークであれば簡単にライブラリをインストールすることで導入できるようなことも、自前で作成する必要があったりします。このあたりは、Shinyのバージョンアップによって今後状況が変わっていくかもしれません。
Rの知識はあるけどWebアプリ開発に関する知識・開発経験が少ない場合
Shinyは基本的なRの知識と、ShinyをインストールするためのちょっとしたOSの知識さえあればShinyアプリとして簡単に公開できます。Rプログラマの中には他の言語には詳しくない方や、Webアプリの開発経験がない方も少なくないと思いますが、Shinyがある程度吸収してくれるのでRStudioでui.R
とserver.R
を作成しさえすればWebアプリを簡単に開発できます。リアクティブ・プログラミングのサポートもあり開発者は関心事を最大限に分析へフォーカスできます。
さらにShinyを勉強したい方へ
Shinyは公式サイト上のチュートリアルが充実しています。こちらをひと通り試してみて、まずはShinyに慣れることをお勧めします。
以上、「環境構築編」と「アプリケーション作成編」の2回にわたって、Shinyを紹介させていただきました。興味を持たれた方はぜひShinyを試してみてください。
Tech-Sketch出張所の次の記事は、近日公開に向け企画中です。次回もお楽しみに!