読者です 読者をやめる 読者になる 読者になる

Data Science by R and Python

統計学を、広く、深く、わかりやすく。

Shiny -Rでつくるウェブアプリケーション!-

shinyでウェブアプリケーションを作成する

Rでは、"shiny"というライブラリを使うことで、ウェブアプリケーションを作成することができます。僕も、最近知って今日初めて少しだけ勉強したので、ここに書いてみます。まだ、少ししか見ていないのですが、結構可能性のあるライブラリだなと思っています。最後の参考という項目にいろいろ書いているので、是非見てください!

ウェブアプリケーションの構成

shinyで作成するアプリケーションは「ui.R」と「server.R」の2つから構成されます。「ui.R」には、ユーザーインターフェースの情報を下記、「server.R」には、サーバーがどのように動作してほしいのかを記述します。


さて、ui.Rは、shinyUI関数からつくります。このshinyUIの中身には、「headerPanel」「sidebarPanel」「mainPanel」の3つの関数から構成します。それぞれが、ウェブ作成で言うところの、ヘッダー、サイドバー、メインコンテンツに対応しています。ここにそれぞれの表示したい部品を設定するということになります。※)ちなみに、いろんな書き方があるようです。

以下、サンプルコードです。

#ui.R
library(shiny)

#define UI
shinyUI(
	pageWithSidebar(
		#header
		headerPanel("Hello Shiny"),
		#sidebar
		sidebarPanel(
			sliderInput(
				"obs",
				"Number of observations:",
				min=0,
				max=1000,
				value=500
			)
		),
		#main page
		mainPanel(
			plotOutput("distPlot")
		)
	)
)

サーバー側はこんな感じで。

#server.R
library(shiny)

#define server logic required to plot various variables against mpg

shinyServer(function(input, output){
	output$distPlot <- renderPlot(function(){
		dist <- rnorm(input$obs)
		hist(dist)
	})
})


書き終わったら、何らかのフォルダーに保存して、ターミナルから以下のコマンドを打てば、動き始めます。それから、ブラウザーでそのURLを開けば終わりです。

 R -e "shiny::runApp('ディレクトリ')"

f:id:tomoshige_n:20140817231952p:plain

まとめ

なんか、本当に勉強はじめで、今回のはR上級ハンドブックを参考に書かせていただきました。今、下記のページで勉強中ですのでレベルアップしたら、また書きます。