CodeZine(コードジン)

特集ページ一覧

R言語のデータ分析レポートをShinyでインタラクティブにしてみる~「環境構築編」

近未来の技術トレンドを先取り! 「Tech-Sketch」出張所 第17回(前編)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2014/10/16 14:00

目次

Shiny Serverの始め方 ― 「Ubuntu」版

 レポートが完成し、本格的にShinyアプリとして分析結果を展開する場合、Shinyのパッケージ版ではなくShiny Serverを利用しましょう。Shiny ServerとはNode.jsで作られているサーバーアプリケーションです。このShiny Serverにアプリケーションを配置することで、複数のユーザーに向けて公開することができます。

Ubuntu on AWSの環境のセットアップと接続

 最初にAWSでEC2インスタンスを作成します。AWSを利用する際の詳細な説明は割愛しますので、EC2インスタンスの作成方法については、以下の記事など、公開されている情報を適宜参考にしてください。

 インスタンスを作成するにあたって注意するポイントが2点あります。

 1点目は、選択するAMIは以下のとおりShiny Serverが対応しているUbuntu 14.04を選択してください。

AMIの選択
AMIの選択

 2点目は、Security Groupは以下のとおり、3838ポートへの外部からの接続を許可するように設定しておきましょう。Shiny Serverはデフォルトで3838ポートを使います。今回はデフォルトのまま利用します。

Security Groupの設定
Security Groupの設定

 インスタンスの作成と起動が完了したらsshでubnutuユーザーで、さきほど作成したEC2に接続します。

「shiny_server.pem」と「XXX.XXX.XXX.XXX」は自身のEC2(サーバーマシン)環境に合わせて変更してください
$ ssh -i shiny_server.pem ubuntu@XXX.XXX.XXX.XXX

 接続ができたら次はRとShiny Serverのインストールを行います。

UbuntuへRのインストール

 Rのインストールは、こちらの記事の手順を参考にし、以下のとおり実行しました。

$ sudo add-apt-repository ppa:marutter/rrutter  # 最新の3.系のRを取得できるようリポジトリ追加
$ sudo apt-get update  # パッケージ・リストを入手
$ sudo apt-get upgrade  # パッケージをアップグレード
$ sudo apt-get install r-base r-base-dev  # Rのインストール
$ sudo apt-get install r-cran-* # パッケージのインストール

 以下のとおり、Rがインストールされているかを確認します。

$ R --version

R version 3.1.1 (2014-07-10) -- "Sock it to Me"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
...

 正常にR 3.1.1がインストールされていることを確認できました。

UbuntuへのShiny Serverのインストール

 Shiny ServerにはOpen Source Edition(以下、OSS 版)とProfessional Editionがありますが、今回は、無償で利用できるOSS版を利用しました。OSS版のインストール手順はこちらにあります。実際に、手順に沿って実施してみます。まずは、Shiny ServerのインストールにはShinyパッケージが必要になるので、ShinyをRのパッケージとしてinstall.packages()します。

$ sudo su - -c "R -e \"install.packages('shiny', repos='http://cran.rstudio.com/')\""

 続いて、Shiny Serverのインストールです。Shiny Serverは一度ローカルにダウンロードしてから、gdebi-coreでインストールします。

$ sudo apt-get install gdebi-core
$ wget http://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-1.2.2.367-amd64.deb
$ sudo gdebi shiny-server-1.2.2.367-amd64.deb

...
Setting up shiny-server (1.2.2.367) ...
Creating user shiny
Adding LANG to /etc/init/shiny-server.conf, setting to en_US.UTF-8
shiny-server start/running, process 8025

 インストールが正常に完了すれば、上記に表示されるようにshinyユーザーが作られ、Shiny Serverが自動的に起動します。その結果、以下ようなURLでアクセスできることができます。すると、「Welcome to Shiny Server」と表示されたページが見れたのではないでしょうか。

「XXX.XXX.XXX.XXX」は自身の環境に合わせて読み替えてください
http://XXX.XXX.XXX.XXX:3838/
Welcome to Shiny Server画面
Welcome to Shiny Server画面

 これから、このページをあなたが作ったShinyアプリで置き換えていくことになります。

Shiny Serverへのアプリの配置(デプロイ)

 自分で作ったShinyアプリを表示させるためには、Shiny Serverマシンの/srv/shiny-server/ディレクトリ以下にファイルを配置していくことになります。ファイルを置き換える前に、先ほどみたサンプルアプリのファイルは事前に削除しておきましょう。

$ ls /srv/shiny-server/
index.html  sample-apps
$ sudo rm -rf /srv/shiny-server/*  # サンプルプロジェクトを削除する
$ ls /srv/shiny-server/

 今回はShinyパッケージ版で動作確認してみたサンプルアプリ「01_hello」をShiny Serverに配置してみることにします。サンプルアプリ「01_hello」のファイル実体はShinyパッケージがインストールされた場所にあるので、以下のコマンドでコピーします。

$ ls /usr/local/lib/R/site-library/shiny/examples/  # サンプルアプリの確認
01_hello  02_text  03_reactivity  04_mpg  05_sliders  06_tabsets  07_widgets  08_html  09_upload  10_download  11_timer
$ sudo cp -R /usr/local/lib/R/site-library/shiny/examples/01_hello /srv/shiny-server/

 もし、サンプルアプリがない、つまり、Shinyが上記の場所以外にインストールされていれば、どこにあるか以下のコマンドで確認してください。

$ R -e ".libPaths()" --quiet  # Shiny のライブラリのすべての保存場所を一覧で表示

 どうでしょうか、先ほどと同様のURLにアクセスして、今度はShinyアプリが表示されたでしょうか?

http://XXX.XXX.XXX.XXX:3838/

Shiny Serverの設定

 Shiny Serverのサーバー設定はdefault.configファイルを元に行います。例えば、3838以外のポートで起動させたい場合はdefault.configファイルを以下のコマンドでリネーム&コピーした上で、リネームしたshiny-server.confファイルを編集して、listen 3838;の値をlisten 80;などに変えてみましょう。

 ポート変更の場合は、AWSのSecurity Groupで外部接続を許可するポートの追加も忘れないようにしましょう。

$ sudo cp /opt/shiny-server/config/default.config /etc/shiny-server/shiny-server.conf
$ sudo vi /etc/shiny-server/shiny-server.conf

 その他のShiny Serverの設定変更は Administrator's Guide(英語)を参考にしてください。なお、Shiny Serverの停止、ステータス確認、起動のコマンドは以下のとおりになります。設定を変更した場合、忘れずに再起動しましょう。

$ sudo stop shiny-server  # 停止
shiny-server stop/waiting
$ sudo status shiny-server  # ステータス確認
shiny-server stop/waiting
$ sudo start shiny-server  # 起動
shiny-server start/running, process 8158

次回後編について

 今回、RのプログラムをShinyとして公開する準備が整いました。 あとは、あなたのShinyアプリを作りさえすれば、不特定多数のユーザーが見れるRの分析レポートを公開することができます。後編となる次回記事では実際の中身、つまり、Shinyアプリの具体的な作り方についてご紹介させていただきます。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:近未来の技術トレンドを先取り! 「Tech-Sketch」出張所

もっと読む

著者プロフィール

  • 白石 康司(TIS株式会社)(シライシ コウジ)

    TIS株式会社 コーポレート本部 戦略技術センター所属。 現在、機械学習技術の研究、機械学習をベースとしたアプリケーションの企画・開発を、PythonやR言語をベースに行っている。 機械学習その他に関する社内研修やオープンな技術勉強会(Tech-Circle)の企画運営にも従事。 もと...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5