Lesson1 – Shiny へようこそ

Shiny へようこそ

Shinyは、Rから直接的にインタラクティブなWebアプリケーション(app)を簡単に構築できるRパッケージです。このレッスンは、Shinyアプリをすぐに作れるようにするためのものです。

Shinyパッケージをまだインストールしていない場合は、R から次を実行してください



Shinyパッケージには、Shinyがどのように動作するかを説明する11個の組込みのサンプルがあります。それぞれの例は、組込みのShinyアプリケーションです。

一つ目の例であるHello Shinyは、R に同梱された faithful データセットをプロットするもので、ビン(階級)数の変更を行えるようスライダーバーが付けられ、その変更に即座に応答するようになっています。このHello Shinyを通して Shiny アプリの構造を探ると共に、最初のアプリを作成していきます。

Hello Shinyを実行するには、次のように入力します:

Shiny アプリの構造

Shiny アプリには、app.R という1つのスクリプトに含まれます。スクリプト app.R が、例えばディレクトリ newdir/ にあった場合、app は runApp(“newdir”) で実行することができます。

app.R は3つのコンポーネントから構成されています:

  • ユーザインタフェース(ui)オブジェクト
  • サーバ関数
  • shinyApp 関数の呼び出し

ユーザインターフェイス(ui)オブジェクトは、アプリケーションのレイアウトと外観を制御します。サーバ関数には、コンピュータがアプリケーションを構築するために必要な命令が含まれています。最後の shinyApp 関数は、明示的な UI/server のペアから Shiny アプリケーションオブジェクトを作成します。

注意:バージョン 0.10.2 以前のバージョンでは、Shiny は単一ファイルでのアプリケーションしかサポートしていなかったため、ui オブジェクトとサーバ関数をそれぞれ ui.R と server.R という別々のスクリプトに入れる必要がありました。この機能は、Shiny では未だにサポートされていますが、チュートリアルやサポート文書の多くは単一ファイルのアプリケーションが中心になっています。

単一ファイルアプリケーションの優れている点の1つは、アプリ全体をコピーして R コンソールに貼り付けることができるため、他のユーザが試したいコードを簡単に共有できることです。例えば、上のコードをコピーして R のコマンドラインに貼り付けると、Shiny アプリケーションを実行することができます。

ui
例で示した Hello Shiny の ui オブジェクトは次の通りです。

server
Hello Shiny のサーバ関数は次の通りです。

Hello Shiny のサーバ関数は非常に単純です。 スクリプトはいくつかの計算を行い、要求されたビン数のヒストグラムをプロットします。

しかし、注目してほしいのは、プロットを生成しているコードが renderPlot という関数にラップされているということです。関数の上のコメントに、そのことを少しだけ説明しています。もし今の段階で分からなくても安心してください。この概念については間もなく詳細に説明します。

Hello Shiny アプリに触れてみて、ソースコードを再確認してください。アプリがどう動くのか、その感覚を発展させてみてください。 しかし、そうする前に、app.R ファイルの中は、Shiny パッケージのロードで始まり、shinyApp の呼び出しで終了する必要があります:

Hello Shiny アプリが動いている間は、R セッションがビジー状態になり、それ以外の R コマンドを実行することはできなくなります。R は、アプリとアプリのリアクションの実行を監視しているのです。R セッションのビジー状態から元に戻るには、エスケープキー(Esc)を押すか、RStudio のコンソールパネルの右上にある赤いストップアイコンをクリックして下さい。

アプリの実行

Shiny アプリケーションは、全て ui と server を含む app.R ファイルという同じ構造をしています。 Shiny アプリケーションを作成するには、新しいディレクトリを作成し、そこに app.R ファイルを保存します。 各アプリは独自のディレクトリに置くことをお勧めします。

runApp 関数に、先程のディレクトリ名を指定することで、Shiny アプリケーションを実行することができます。例えば、Shiny アプリケーションが my_app というディレクトリにある場合は、次のコードで実行します:

注:runApp は、R の read.csv や read.table などのその他の多くの関数に似ています。runApp の最初の引数は、作業ディレクトリからアプリケーションのディレクトリまでのファイルパスです。 上のコードでは、app のディレクトリが作業ディレクトリにあると想定しています。 この場合、ファイルパスは単なるディレクトリ名になってしまいます。

(上のケースで不思議に思われるかもしれませんが、Hello Shiny アプリのファイルは “01_hello” という特別なシステムディレクトリに保存されています。このディレクトリは、runExample (“01_hello”) で動作するように設計されています。)
あなたの番

作業ディレクトリにApp-1という名前の新しいディレクトリを作成します。 上記のapp.Rスクリプトをコピーしてあなたのディレクトリ(Hello Shinyのスクリプト)に貼り付けます。 作業を完了すると、ディレクトリは次のようになります。

やってみよう

作業ディレクトリに App-1 という名前の新しいディレクトリを作成します。 次のソースをコピーし、R studio の script に貼り付け App-1 ディレクトリに app.R と言う名前で保存してください。

作業を完了すると、ディレクトリは次のようになります。

コンソールに runApp(“App-1”) を入力してアプリを起動します。起動を確認したら、エスケープをクリックして、アプリにいくつかの変更を加えてみましょう:

  • タイトルを “Hello Shiny!” から “Hello World!” に。
  • スライダバーの最小値を5に。
  • ヒストグラムのボーダーの色を “white” から “orange” に。

準備ができたら、アプリをもう一度起動します。 新しいアプリは下の画像と一致する必要があります。一致していない場合やコードを確認したい場合は、下記「モデルの解答」の Reveal answer ボタンを押せば、これらのタスクにどう対処したかをご覧いただけます。

デフォルトでは、Shiny アプリは上のアプリのように “normal” モードで表示されます。Hello Shiny やその他の組込みの例は “showcase mode” で、別のモードでは app.R スクリプトをアプリケーションの横に表示します。

あなたのアプリを showcase モードで表示したい場合は、runApp(“App-1”, display.mode = “showcase”) を実行します。

モデル解答

Reveal answer

アプリの再起動

Shiny アプリの起動には、もう一つの方法があります。runApp(“App-1”) を実行する方法の他に、RStudio の機能を使う方法があります。app.R を RStudio で開くと、Shiny 用のファイルを開いたことを RStudio が認識し、Run App ボタンをエディタの右上に表示します。そのボタンをクリックするか、キーボードショートカットの Command+Shift+Enter(Mac)か Control+Shift+Enter(Windows)を使用して起動します。

RStudio は、デフォルトで新しいウィンドウに結果を表示しますが、専用のビューアまたは外部のWebブラウザに表示するように選択することもできます。 [Run App]の横にあるアイコンをクリックして選択してください。

まとめ

独自の Shiny アプリを作成するには:

  • アプリケーション用に myapp/ という名前のディレクトリを作ります。
  • そのディレクトリ内に app.R スクリプトを保存します。
  • runApp か RStudio のキーボードショートカットを使用してアプリケーションを起動します。
  • エスケープを押下して Shiny アプリを終了します。

その他のアプリ

既存の Shiny アプリケーションをコピーして変更することで、Shiny アプリケーションを作成することができます。Shiny ギャラリには、いくつかの良い例があります。下にリストしている11種類の Shiny の例を使用してみてください。

上の例のそれぞれが Shiny アプリの機能を示しています。 すべての Shiny サンプルアプリケーションは、 “showcase”モードで表示されます(app.R スクリプトが表示されます)。

しかし、なぜ他のアプリをコピーすることに制限しているのですか? 次のいくつかのレッスンでは、独自の Shiny アプリケーションをゼロから構築する方法を紹介しています。Shiny アプリの各部分について学び、自分の Shiny アプリをオンラインに展開(deploy)することで完了します。

準備ができたら、Lesson 2 に進みます。Lesson 2 では、Shinyアプリケーションのレイアウトと外観を作成する方法を学習します。

Lesson2 へ