Shiny は R のパッケージの一つで、 このパッケージを使うと R を用いて対話的に操作する Web アプリケーションを作成することができます。Web 上のユーザーインタフェース部分を司る ui.R と、内部動作を司る server.R の二つの R 言語スクリプトで、サーバーサイドのコンテンツを作成できることが大きな特徴です。
RStudio 上で Shiny による Web アプリケーションを作り始めたので、理解したことを備忘録としてまとめたことを不定期に紹介していきます。
自分が R を使って解析したい特定の分野について、Web アプリケーションを作成し、参考サイト [2] にある Shiny Server を Linux で稼働させて、作った Web アプリケーションを利用できるようにすることが目標です。しかし現時点では、その Web アプリケーションを作るだけの知識が伴っていないので、しばらくの間、簡単なサンプルで試行錯誤を続けて、判ったことをまとめていきたいと思います。
本記事で使用している動作環境は次の通りです。
- OS: Fedora 29 beta (x86_64)
- R: R-core-3.5.1-1.fc29.x86_64, R-core-devel-3.5.1-1.fc29.x86_64
- RStudio: rstudio-server-1.1.456-1.x86_64
Web App の作成 : Iris explorer ver. 3.0
前回の Shiny の記事 [3] で紹介した Iris explorer ver. 2.1 をベースにして、shinydashboard パッケージを用いたレイアウトに変更してみました。
まず、実行例を以下に示しました。
shinydashboard パッケージによるレイアウト
shinydashboard パッケージによるレイアウトの基本構成は以下のようになっています。
library(shiny) library(shinydashboard) dashboardPage( dashboardHeader(), # ヘッダー部分 dashboardSidebar(), # サイドバー部分 dashboardBody() # ボディー(メイン)部分 )
ヘッダー部分は、このアプリケーションではアプリケーション名を文字列で定義しているだけです。
dashboardPage(
dashboardHeader(title = "..."),
...
...
)
ちなみに、ヘッダーのタイトル右側にある ☰ をクリックするとサイドバーの部分を非表示/表示にすることができます。
左側のサイドバーの部分には、メニュー (sideBarMenu) を利用してメニューアイテム (menuItem) とその下にサブメニュー (menuSubItem) を定義しています。このサブメニューで、サブメニューに表示する文字列と、サブメニューをクリックした時にボディー(メイン)の部分に表示するタブの名前を定義しています。このタブの名前は、ボディーの部分で対応させます。
dashboardPage( ... dashboardSidebar( sidebarMenu( menuItem( "Menu Name", menuSubItem("Sub Menu Name 1", tabName = "Tab Name 1"), menuSubItem("Sub Menu Name 2", tabName = "Tab Name 2"), ... ... menuSubItem("Sub Menu Name N", tabName = "Tab Name N") ) ) ), ... )
ボディーの部分には、サイドバーで定義したタブの名前に対応するタブアイテム (tabItem) を定義して、そこに表示するプロットやウィジェットのレイアウトを記載します。
dashboardPage( ... ... dashboardBody( tabItems( tabItem( "Tab Name 1", ... ... ), tabItem( "Tab Name 2", ... ... ), ... ... tabItem( "Tab Name N", ... ... ) ) ) )
サンプルコード
このサンプルのコードを紹介します。今回は global.R を加えた以下の三種類のファイルです。この global.R はアプリケーションが起動する前に実行されます。global.R で生成されたオブジェクトは ui.R と server.R からアクセスできます [4]。
- global.R
- ui.R
- server.R
global.R を以下に示しました。パッケージのロードとアプリケーションのバージョン情報および ggplot2 で使用する共通のテーマを記載しています。
ui.R を以下に示しました。
server.R を以下に示しました。この部分は、前回の Shiny の記事 [3] で紹介した Iris explorer ver. 2.1 の server.R と同じ内容です。
まとめ
以上、簡単なサンプルでも shinydashboard パッケージを利用すれば、格好の良いレイアウトで簡単に実行できるようになるので、もしかしたら自分でも実用的なスバラシいアプリを作ることができるかもしれない、という幻想を抱かせてくれます…もとい、開発意欲を駆り立ててくれます。
実際に本格的なアプリケーションを構築しようとすれば、いろいろな問題に直面することが予想されますが、とにかく業務で使っている R のコードを Shiny で動くようにすることを検討しています。ひきつづき本ブログ記事では、関連する情報を簡単なサンプルを使って備忘録的にまとめていきたいと考えています。
参考サイト
- Shiny - RjpWiki
- Download Shiny Server - RStudio
- bitWalk's: R Shiny を使ってみる (4)
- An introduction to global.R - Learning Shiny
にほんブログ村
0 件のコメント:
コメントを投稿