データシステム演習(スライド資料3回)
「Shiny によるデータシステム演習」では,Web 情報システムに関する次のことを演習形式で学ぶ.
- Shiny では「ウィジェット」を組み合わせて,Web 画面を組み立てる.これは ui.R に書く.
 - ユーザが Web 画面で操作するたび,その情報がサーバに送られる.そして,サーバが返答する.これは server.R に書く.
 
1. Shiny のギャラリー
YouTube 動画: https://www.youtube.com/watch?v=POOORv2BFCM 資料: Shiny のギャラリー [PDF], [パワーポイント]
URL: https://shiny.rstudio.com/gallery/
-  Shiny は,ビジュアルでインタラクティブ
Webブラウザでボタン,スライダ,メニュー 等を操作すると,直ちに結果が得られる
 - データ解析機能は Rシステムが担う
 
Shiny の機能
-  Webページの中に,さまざま配置できる
- テーブル
 - グラフ
 - 画像
 - 数式
 - ウィジェット
 
 - Word, PDF等でのレポート生成機能もある
 
2. Shiny の仕組み
YouTube 動画: https://www.youtube.com/watch?v=-Qb2LNNovZY 資料: Shiny の仕組み [PDF], [パワーポイント]
Shiny の機能
- Webサーバ
 - データ解析機能
 - データ解析機能での解析結果をHTML化する機能
 - Webブラウザでのユーザからの指示やデータ入力をデータ解析機能に伝える機能
 
R システムの標準オブジェクト
-  R システムのコンソールで,「faithful」と打ち込む.データが出てくる.
faithful はオブジェクト名.標準オブジェクトである.
米国イエローストン公園内の間欠泉「オールド・フェイスフル・ガイザー」 その噴出持続時間 (erupition)と、噴出間隔 (waiting)
 - R システムのコンソールで, 「data()」と打ち込む.標準オブジェクトの一覧が表示される
 
shiny のインストール
install.packages("shiny")
shiny を動かしてみる
-  次の 2つのファイルを作成.
ファイル名はこの通りにすること. 2つのファイルは、同じディレクトリ(フォルダ) に置くこと
ui.R
library(shiny) shinyUI(fluidPage( sidebarLayout( sidebarPanel( sliderInput("breaks", "please select a number:", min = 1, max = 50, value = 30) ), mainPanel( plotOutput("distPlot") ) ) ))server.R
library(shiny) shinyServer(function(input, output) { output$distPlot <- renderPlot({ hist(faithful[,2], breaks = input$breaks) }) }) - ui.R, server.R のディレクトリ名(フォルダ名)を確認
 -  R システムのコンソールで,次のように操作
「C:/Users/user」の部分は、
実際に ui.R, server.R があるディレクトリに読み替える
library(shiny) runApp("C:/Users/user") 
3. Shiny のウィジェット
YouTube 動画: https://www.youtube.com/watch?v=qA-BVSfzbYQ 資料: Shiny のウィジェット [PDF], [パワーポイント]
library(shiny)
shinyUI(fluidPage(
  sidebarLayout(
      sidebarPanel(
            sliderInput("breaks",
                        "please select a number:",
                        min = 1,
                        max = 50,
                        value = 30)
    ),
    mainPanel(
      textOutput("distPrint")
    )
  )
))
library(shiny)
shinyServer(function(input, output) {
  output$distPrint <- renderText({
    input$breaks * 12
  })
})
library(shiny)
shinyUI(fluidPage(
  sidebarLayout(
          sidebarPanel (
            numericInput("breaks",
                        "value = ?", value=0)
    ),
    mainPanel(
      textOutput("distPrint")
    )
  )
))