RStudio Shiny チュートリアル レッスン7 Shinyアプリを共有しよう

> この記事は Shiny 公式サイトのチュートリアルを翻訳したものです。
> http://shiny.rstudio.com/tutorial/lesson7/

チュートリアル目次：http://d.hatena.ne.jp/hoxo_m/20151222/p1

# LESSON7 Shinyアプリを共有しよう

これまでのレッスンで、あなたは有用な Shiny アプリを構築できるようになりました。
しかし、作ったアプリを他の人と共有するにはどうすればいいでしょうか？
このレッスンでは、あなたの作った Shiny アプリを共有するいくつかの方法を紹介します。

Shiny アプリを共有する方法は、大きく分けると次の 2 つになります：

1. **2つのファイル(`server.R`と`ui.R`)を共有する。**これは、アプリを共有する最も単純な方法です。ただし、この方法がうまくいくのは、相手のコンピュータに R がインストールされていて、相手が使い方を知っている場合だけです。この 2 つのファイルを使えば、相手はあなたと同じようにしてアプリを自分のコンピュータ上で立ち上げることができます。
2. **Webページとして共有する。**これは、確実に最もユーザに優しいアプリの共有方法だと言えます。相手は Web ブラウザを使って、インターネット上でアプリを使うことができます。あなたが Web 上のアプリを最新に保っていれば、ユーザはいつでも最新のちゃんと動くアプリを使うことができます。

## 2つのファイルを共有する

R があれば誰でも Shiny アプリを実行できます。
ユーザは `server.R` と `ui.R` の 2 つのファイルのコピーを持っている必要があります。
また、アプリ内で使われる補助的なファイル(例えば、`www` フォルダや `helper.R` ファイル)も持っている必要があります。

共有したい相手になんらかの方法(email など)で、これらのファイルを送ります。

受け取った相手はワーキングディレクトリにアプリフォルダを作り、その中にファイルを置きます。
これにより、あなたがアプリを起動するのと同じ方法で、ユーザはアプリを起動することができます。


```r
# install.packages("shiny")
library(shiny)
runApp("census-app")
```

![zip.png](https://qiita-image-store.s3.amazonaws.com/0/2570/ffb0bf66-7339-0675-98a8-23aefff22bd3.png)

Shiny は、Web 上にアップされたファイルを使って簡単にアプリを起動するための 3 つのコマンド(`runUrl`, `runGitHub`, `runGist`)を持っています。

### runUrl

`runUrl` は、Web リンクから直接 Shiny アプリをダウンロードして、起動するためのコマンドです。

使い方は：

- Shiny アプリを ZIP ファイルとして保存します。
- その ZIP ファイルを Web 上に置きます。このファイルにアクセスできる人は誰でも、R 上で次のコマンドを打つことで、アプリを起動できます。


```r
library(shiny)
runUrl( "<the weblink>")
```

### runGitHub

もし、ファイルを置けるような Web サイトを自分で持っていなくても、[GitHub](https://www.github.com) を使えば無料でファイルを Web 上に置くことができます。

GitHub は、R プログラマに人気のあるプロジェクトホスティングサービスであり、ファイルを置く以上のことができます。
GitHub は、イシュートラッキング、Wiki、[git](http://git-scm.com)(バージョンコントロールシステム) など、協調作業をサポートする機能をたくさん提供しています。
GitHub を使うには、サインアップして、ユーザ名を決めてください(無料です)。

GitHub を通じてアプリを共有するためには、まずはリポジトリを作成します。
そしてそのリポジトリ上に `server.R` と `ui.R`、およびアプリで使用する補助的なファイルを保存します。

これにより、次のコマンドでアプリを起動できるようになります：


```r
runGitHub("<your repository name>", "<your user name>") 
```

### runGist

匿名でファイルを Web 上に置きたい場合、GitHub の提供する [Gist](https://gist.github.com) というサービスが使えます。
このサービスを使うのに、GitHub アカウントは必要ありません。
もし GitHub アカウントを持っていたとしても、Gist を使った Shiny アプリの共有は、シンプルかつ素早く利用できるため便利です。

Gist を使ったアプリの共有方法は、

- `server.R` と `ui.R` ファイルを Gist ページにコピー&ペーストします。
- 保存した Gist の URL をメモしておきます。

一度 Gist ページを作成しておけば、ユーザは `runGist(<gist number>)` コマンドによりアプリを起動することができます。
`<gist number>` は、Gist ページの URL に含まれます。

Gist ページの例として、[ここ](https://gist.github.com/jcheng5/3239667)にアプリを置いています。
このアプリを起動するには次のコマンドを実行します。


```r
runGist("3239667")
```

## Webページとして共有する

上記で示したアプリの共有方法には、共通の制限があります。
それは、相手のコンピュータにも R と Shiny をインストールしておく必要があるということです。

しかしながら、Shiny で作られたということは、R を入れていない(かつ入れる意思のない)人々に対してアプリを共有するための絶好のチャンスでもあります。
なぜなら、Shiny アプリは、コミュニケーションツールとして世界で最も広く使われている「Web ページ」だからです。
もし Shiny アプリを Web ページとしてホストしておけば、ユーザはそのアプリに自由に訪れることができます(コードをあれこれする必要もありません)。

もしあなたが Web ホスティングに詳しいのであれば、自分で自分のアプリをホストすることができるでしょう。

もっと簡単な方法やサポートが必要なら、RStudio社はあなたの Shiny アプリを Web ページとしてホストするための 3 つの方法を用意しています：

1. shinyapps.io
2. Shiny Server
3. Shiny Server Pro

### shinyapps.io

あなたの Shiny アプリを Web ページとしてホストする最も簡単な方法は、shinyapps.io を使うことです。
[shinyapps.io](http://www.shinyapps.io) は、RStudio社が提供する Shiny アプリ専用のホスティングサービスです。

Shiny アプリを shinyapps.io へアップロードするのは、RStudio 上の操作で簡単にできます。
(訳注：[RStudio から shinyapps.io に簡単にデプロイできるようになってた件](http://qiita.com/hoxo_m/items/141282a5d1ca0fc4f827) 参照)
アップロードしたアプリの設定は、shinyapps.io のサイト上で変更できます。
もっと詳しく知りたい人は、[shinyapps.io](http://www.shinyapps.io) を訪れて下さい。

### Shiny Server

Shiny Server は、Shiny アプリをホストするために設計された Web サーバです。
Shiny Server は無料で使え、オープンソースであり、GitHub 上でコードが公開されています。

Shiny Server は、Linux サーバが Shiny アプリを Web ページとしてホストできるようにするためのサーバプログラムです。
Shiny Server を使うには、Linux サーバが必要です。
明示的にサポートしているディストリビューションは Ubuntu 12.04 以上(64 bit)と CentOS/RHEL 5(64 bit)です。
これに該当しないものでも、ソースコードからビルドすることで利用可能です。

一つの Shiny Server で複数の Shiny アプリをホストしたり、ファイアウォールの内側からアプリをデプロイしたりできます。

Shiny Server のインストールや設定の詳細な手順を知りたい場合は、[Shiny Server ガイド](https://github.com/rstudio/shiny-server/blob/master/README.md)を見て下さい。

### Shiny Server Pro

Shiny Server は、あなたのアプリを Web 上で公開しておくための全てについて面倒を見てくれます。
しかしながら、Shiny を営利目的で使う場合、お金を支払ってでもサーバプログラムに次のような機能が欲しいと思うかもしれません。

- パスワード認証
- SSL サポート
- 管理者ツール
- 優先的なサポート
- などなど

もしそうなら、[Shiny Server Pro](https://www.rstudio.com/products/shiny/shiny-server/) をチェックして下さい。
Shiny Server Pro は、RStudio社が提供する、Shiny Server のプロフェッショナルバージョンです。

## まとめ

Shiny アプリを共有するのは簡単です。
2 つの R スクリプトファイルを共有するか、Web アプリとして公開することでアプリを共有できます。
それぞれの方法には、それぞれのメリットがあります。

このレッスンで学んだことは：

- R と Shiny と作成したアプリのファイルさえあれば、誰でもそのアプリを起動することができます。
- `runUrl`, `runGitHub`, `runGist` は Web 上にある Shiny ファイルの共有を簡単にしてくれます。
- [shinyapps.io](http://www.shinyapps.io/) によって、作成したアプリを Web 上にデプロイできます。
- オープンソースの Shiny Server を使って、Linux サーバ上で Shiny アプリをホストすることができます。
- より細かく設定したいときや、大きなトラフィックをさばきたいときは、RStudio社が提供する [Shiny Server Pro](https://www.rstudio.com/products/shiny/shiny-server/) を購入して下さい。

おめでとうございます。
あなたは Shiny アプリ開発プロセスの全ての工程を体験しました。
これにより、洗練された reactive なアプリを作り、それをデプロイして他の人と共有できるようになりました。
ユーザはデータと相互にやり取りし、あなたの作った物語を新しい方法で聞くことができます。

次のステップは、実践あるのみです。
また、Shiny に関するより高度な話題を調べてみましょう。

[Shiny Dev Center](http://shiny.rstudio.com/) は、あなたを助けてくれるでしょう。
ここにある [gallery](http://shiny.rstudio.com/gallery/) では、素晴らしいアプリたちをコード付きで見ることができます。

Shiny Dev Center の [article](http://shiny.rstudio.com/articles/) セクションでは、Shiny アプリについてさらに学ぶことができます。
これらの記事は、より深い高度な Shiny の話題との中間に位置します。

Shiny アプリを作る方法について、あなたはすでに十分な知識を持っています。
これから何を作るかは、あなた次第です！

- [チュートリアル目次へ戻る](http://d.hatena.ne.jp/hoxo_m/20151222/p1)