SlideShare a Scribd company logo
続・はじめてのShiny


          2013/01/26
          Tokyo.R#28
            和田 計也

サイバー系
サイバー系


     はじめに


    ※この発表は個人の見
    解であり、所属する組
    織の公式見解ではあり
    ません。
                     2
2013/01/26
サイバー系


     自己紹介
 u 和田 計也(@wdkz)
        u 静岡県袋井市出身




 u サイバー系企業でデータマイニングエンジニア職
        u 最近は奥華子ばっか聴いてます




 u 前職はバイオベンチャー
        u バイオマーカ探索してた
        u 学生時代は枯草菌の研究




                                     3
2013/01/26
サイバー系


     今日のお話

   u Shinyとは?


   u とりあえずShiny


   u Shinyアプリの配布


   u Shinyの実例




                            4
2013/01/26
サイバー系


     今日のお話

   u Shinyとは?


   u とりあえずShiny


   u Shinyアプリの配布


   u Shinyの実例




                            5
2013/01/26
サイバー系


     (いきなり脱線しますが)Mathematica 9が出ました
   u シャイニングウィザードと発音するみたいです




                                              6
2013/01/26
サイバー系


     Mathematica 9が出ました
   u        MathematicaからRを使うことで
     ➡こんなインタラクティブなのが出来るみたいです!




                                            7
2013/01/26
サイバー系


     Shiny
   u        それ出来ます、そうShinyを使えばね




         http://glimmer.rstudio.com/wdkz125/theWorld/

                                                                8
2013/01/26
サイバー系


     Shinyとは?
   u        Shinyとは、インタラクティブなWebアプリをR
             でチョー手軽に作れるRのライブラリ
              Rとnode.jsをwebsocketsで繋いでる感じ
   u        2012年11月に初登場
   u        Joe Chengさん作 (RStudio Inc.)
             UseR!2012でwebsocketsの話してた人やー




                                                    9
2013/01/26
サイバー系


     ShinyかわいいよShiny
   u        rApacheとかあったじゃん!?
              だがあれはインタラクティブではない




              それにrApacheの作者はもう飽きたらしい


                                            すまん
                                            飽きた
             UseR!2012でwebsocketsの話してた人やー




                                                      10
2013/01/26
サイバー系


     今日のお話

   u Shinyとは?


   u とりあえずShiny


   u Shinyアプリの配布


   u Shinyの実例




                            11
2013/01/26
サイバー系


     とりあえずShiny
   u        さっきの再び出します
   u        これを実際にやってみましょう




                                      12
2013/01/26
サイバー系


     Shinyでwebアプリを作る①
   u        適当なフォルダを作成
           今回の例では「01_plot」とした
   u        その中に2個のファイルを作成
             ⅰ)server.R
             ⅱ)ui.R

          上記2つのファイル名は必ず
         こうしなければいけない!!




                                        13
2013/01/26
サイバー系


     Shinyでwebアプリを作る②
   u        viewの作成はui.R
  library(shiny)
  shinyUI(pageWithSidebar(
     headerPanel("Hello Shiny!"),
     sidebarPanel(
          numericInput("obs",
                       "Number of points:",
                       1000),
          sliderInput("mean",
                     "Mean:",
                       min=-100, max=100,
                       value=0),
          sliderInput("sd",
                     "Standard Deviation:",
                       min=0, max=100, value=1)
     ),
                                                  viewは3つからなる
     mainPanel(                                   ⅰ)ヘッダー・・・タイトル
          plotOutput("distPlot")                  ⅱ)サイドバー・・・インプットのとこ
     )
                                                  ⅲ)メイン・・・アウトプットのとこ
  ))
                                                                               14
2013/01/26
サイバー系


     Shinyでwebアプリを作る③
   u        view部分ui.Rの深入り_sidebar
                                                  inputオブジェクトには固有の名前をつけておく
     sidebarPanel(                                (server.Rから入力値を取得するのに使う)
          numericInput("obs",
                       "Number of points:",
                       1000),
          sliderInput("mean",
                     "Mean:",
                       min=-100, max=100,
                       value=0),
          sliderInput("sd",
                     "Standard Deviation:",
                       min=0, max=100, value=1)
     ),

      サイドバーは、 Inputを書き足すこと
      でどんどん増やせる。 Inputに何があ
      るかはCRAN上のShinyのReference
      Manual等を見るとわかる

                                                                               15
2013/01/26
サイバー系


     Shinyでwebアプリを作る④
   u        logicの作成はserver.R
  library(shiny)                               ui.Rで定義した、アウトプットの固有名


  shinyServer(function(input, output) {
     output$distPlot <-
         reactivePlot(function() {
             dist <- rnorm(input$obs,
                           mean=input$mean,       ui.Rで定義した、インプットの固有名を
                           sd=input$sd)           使うことで値を取得できる
             hist(dist, prob=TRUE)
             lines(density(dist, adjust=2),
                   lty="dotted", col="blue")
     })
  })


       メインパネルは、server.R内で
       reactive 関数をオーバーライドするこ
       とでinteractiveな描写ができるようにな
       る。reactive 関数に何があるかは
       Reference Manual等を見るとわかる
                                                                              16
2013/01/26
サイバー系


     Shinyでwebアプリを起動する
   u        カレントフォルダに01_plotフォルダ
             があってその中にserver.Rとui.Rと
             がある状態でRコンソールから

             > library(shiny)
             > runApp(“01_plot”)


             Listening on port 8100




      デフォルトブラウザが起動




                                              17
2013/01/26
サイバー系


     今日のお話

   u Shinyとは?


   u とりあえずShiny


   u Shinyアプリの配布


   u Shinyの実例




                            18
2013/01/26
サイバー系


     Shinyアプリの配布方法_ローカル編
   u        プログラムごと渡してローカルで起動してもらう
             1.フォルダごとzipで固めて渡す。渡された人は解凍してR
       起動してshiny::runApp( hogehoge )する
       利点:最も汎用性高い
               欠点:ITリテラシーの高くない人に、Rを起動してrunApp
                  してもらうことの絶望感
             2.Gistにコードを上げて
              shiny::runGist( hogehoge )してもらう
        利点:URLを教えるだけでいいのが楽
              欠点:社外秘情報を含むものには使えないし、1同様
             3.@hoxo_mさん作成のOpenShiny.exeを使う
              利点:ITリテラシーに関係なく使ってもらえそう
              欠点:Winマシン限定。exeファイルを配布するというドキドキ感
                                                        19
2013/01/26
サイバー系


     3.OpenShiny.exeの紹介
   u        @hoxo_mさんが.netで作った「Shinyをワンクリックで起動する
             やつ」
             配布方法:適当なフォルダに①「OpenShiny.exe」
          ②「server.R」③「ui.R」を置いてフォルダごと配布
      使用方法:もらった人はOpenShiny.exeをクリックするだけ!!



                                       フォルダ名は
                                       適当なのつけてね




                                                        20
2013/01/26
サイバー系


     Shinyアプリの配布方法_サーバ編
   u        サーバにデプロイしてURLをみてもらう
             4.rApacheに組み込んじゃう
              無理



                                      即答




     5.Shinyホスティングサービス(RStudio.com運営)を使う
              楽
              β版だからいつ止まっても(有償化しても)おかしくない
              社外秘情報を含むものには使えない
             6.Shiny-serverを使ってデプロイ
              ちょい面倒だけど社内で使うならこれかな
                                                   21
2013/01/26
サイバー系


     5.RStudio.com運営shinyホスティングサービス
   u        まああれだ、ホスティング用のアカウント発行したぜ!って
             いうe-mailに書かれてる通りやればできる
             1.sshでログインして
             2.自分のホームに /ShinyApp/ディレクトリ作って
             3.そこに適当なディレクトリ(例えばtheWorld)作って
             4.scpでそこにui.Rとserver.Rをアップロード




        http://glimmer.rstudio.com/wdkz125/theWorld/
                                               ディレクトリ名
                             ユーザ名                         22
2013/01/26
サイバー系


     6.Shiny-serverについて
                http://blog.rstudio.org/2012/12/04/shiny-update/




                                                とりあえずlinux
                                                で動くけどwinと
                                                かmacosxで動
                                                かないよ

                                                オープンソースに
                                                してみたよ!!

                        有償版も考えてるらしい                                    23
2013/01/26
サイバー系


     6.Shiny-server有償版についてわかっていること




             とりあえず、有償版では何らかの認証ができたらいいな
             って思ってるらしい

                                                 24
2013/01/26
サイバー系


     6.Shiny-serverのインストール
   u        Shiny-severインストールに必要なもの
         1. R.2.15.0以上
         2. Rのshinyライブラリをユーザフォルダじゃないところに
         インストール
         3. node.js 0.8.16以上
              ubuntuの場合
   	
  	
  	
  	
  	
  	
  	
  sudo	
  apt-­‐get	
  install	
  python-­‐software-­‐properties	
  python	
  g++	
  
   	
  	
  	
  	
  	
  	
  	
  make
   	
  	
  	
  	
  	
  	
  	
  sudo	
  add-­‐apt-­‐repository	
  ppa:chris-­‐lea/node.js
   	
  	
  	
  	
  	
  	
  	
  sudo	
  apt-­‐get	
  update
   	
  	
  	
  	
  	
  	
  	
  sudo	
  apt-­‐get	
  install	
  nodejs	
  npm

   u        Shiny-severのインストール
         	
  	
  	
  	
  sudo	
  npm	
  install	
  -­‐g	
  shiny-­‐server
         	
  	
  	
  	
  sudo	
  useradd	
  -­‐r	
  shiny
         	
  	
  	
  	
  sudo	
  mkdir	
  -­‐p	
  /var/shiny-­‐server/www
         	
  	
  	
  	
  sudo	
  mkdir	
  -­‐p	
  /var/shiny-­‐server/log
                                                                                                                             25
2013/01/26
サイバー系


     6.Shiny-serverの起動
   u        以下のディレクトリに適当な名前のディレクトリ作成して
             そこにui.Rとserver.Rとをコピって
             /var/shiny-server/www/AppName
   u        起動
          sudo shiny-server
   u        ブラウザからアクセス
             http://<hostname>:3838/AppName




                                                      26
2013/01/26
サイバー系


     今日のお話

   u shinyとは?


   u とりあえずshiny


   u shinyアプリの配布


   u shinyの実例




                            27
2013/01/26
サイバー系


     shinyの実例デモ
   u デモで使うデータはもちろんiris
      irisに関する詳しい資料は以下を参照して下さい➡
             「irisの正体 (R Advent Calendar 2012 6日目)」
              http://d.hatena.ne.jp/tsutatsutatsuta/20121206/1354737461




                                                                                  28
2013/01/26
サイバー系


     shinyの利用例

                 tabで
                      いろいろ
                          選べる




                                        29
2013/01/26
サイバー系


     shinyの利用例

                 summ
                     aryの
                         tabを
                             選択す
                                ると




      もっと下のほうにsummary結果も出てるんだけど、見えんな
                                               30
2013/01/26
サイバー系


     shinyの利用例



             ここでデータのレンジを絞ると、下のグラフ中のデータポイント
                            も変化する




                                                     31
2013/01/26
サイバー系


     shinyの利用例

                 WebG
                     L使って
                         3次元p
                             lotも出
                                  来る




                                               32
2013/01/26
サイバー系


     shinyの利用例


                 決定木
                    選んで
                       みたり




                                     33
2013/01/26
サイバー系


     shinyの利用例


                 GLM選
                     んでみ
                         たり




                                      34
2013/01/26
サイバー系


     shinyの利用例




              サイド
                 バーも
             ックス     チェッ
                 オンオ     クボ
             変わる     フで動
                 よ       的に



                                      35
2013/01/26
サイバー系


     shinyのTips
   u        staticなページ(タブ)を作りたい
         HTML()関数でhtmlを直書きする
   u        インタラクティブすぎる
         submitButtonを配置すれば、ボタン押すまで反映しない
   u        サイドバーパネルもインタラクティブにしたい
             conditionalPanelを使う
             conditionalPanel(condition= input.@@=true ,,,)
   u        サイドバーパネルをもっとインタラクティブにしたい
             ui.R中はuiOutput("rice") みたいにしておいてserver.Rで
             output$rice <- reactiveUI(function(){
                  selectInput( gets , dandy , choice=1:10, selected=1)
             })
             ってすればいい。↑ここでinputの値取得して条件分岐とかバリバリ書く

                                                                             36
2013/01/26
サイバー系


     shinyのここがイマイチ
   u        日本語一切使えない。コメントにすら日本語が含まれると動かない


   u        左にサイドバーパネル、右にグラフパネルという構図が固定
             幅とか変えたいのに....


   u        レンジスライダーのレンジを保持して左右に動いて欲しい


   u        レンジスライダー、キーボードの矢印で操作できない


   u        レンジスライダーにintegerの値しか使えない


   u        submitButtonをcheckboxで出したり消したりしたい

                                                         37
2013/01/26
サイバー系


     参考文献
   u        shiny
         https://github.com/rstudio/shiny/

   u        shiny-server
         https://github.com/rstudio/shiny-server

   u        tutorial
         http://rstudio.github.com/shiny/tutorial/

   u        google group
         https://groups.google.com/forum/?fromgroups#!forum/shiny-discuss

   u        shinyでrglを使う
         https://github.com/trestletech/shiny-sandbox/tree/master/rgl

   u        hoxo_mさんのShinyアプリをワンクリックで起動するやつ
         http://d.hatena.ne.jp/hoxo_m/20121122/p1

   u        バタデ先生の、みんなでシャイニイイイイイイイイイイイイイイイ
         http://d.hatena.ne.jp/dichika/touch/20130118/1358470135

                                                                                    38
2013/01/26
サイバー系


     まとめ


 1. シャイニングウィザードを紹介して
 2. ついでにshinyも紹介して

 3. shinyアプリの配布方法も紹介して

 4. 最後にデモった
             




                                 39
2013/01/26

More Related Content

What's hot

RによるBox-Cox変換
RによるBox-Cox変換RによるBox-Cox変換
RによるBox-Cox変換wada, kazumi
 
「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR #11
「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR  #11「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR  #11
「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR #11
Koichi Hamada
 
がうす・まるこふ の定理とかそのへん
がうす・まるこふ の定理とかそのへんがうす・まるこふ の定理とかそのへん
がうす・まるこふ の定理とかそのへんT T
 
敵対的学習に対するラデマッハ複雑度
敵対的学習に対するラデマッハ複雑度敵対的学習に対するラデマッハ複雑度
敵対的学習に対するラデマッハ複雑度
Masa Kato
 
階層モデルの分散パラメータの事前分布について
階層モデルの分散パラメータの事前分布について階層モデルの分散パラメータの事前分布について
階層モデルの分散パラメータの事前分布について
hoxo_m
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門Kawamoto_Kazuhiko
 
ブートストラップ法とその周辺とR
ブートストラップ法とその周辺とRブートストラップ法とその周辺とR
ブートストラップ法とその周辺とRDaisuke Yoneoka
 
分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47
分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47
分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47
horihorio
 
変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)Takao Yamanaka
 
幾何と機械学習: A Short Intro
幾何と機械学習: A Short Intro幾何と機械学習: A Short Intro
幾何と機械学習: A Short Intro
Ichigaku Takigawa
 
協調フィルタリング入門
協調フィルタリング入門協調フィルタリング入門
協調フィルタリング入門
hoxo_m
 
Stan超初心者入門
Stan超初心者入門Stan超初心者入門
Stan超初心者入門
Hiroshi Shimizu
 
パターン認識 第10章 決定木
パターン認識 第10章 決定木 パターン認識 第10章 決定木
パターン認識 第10章 決定木 Miyoshi Yuya
 
識別モデルと生成モデルと損失データ
識別モデルと生成モデルと損失データ識別モデルと生成モデルと損失データ
識別モデルと生成モデルと損失データ
Shohei Miyashita
 
R-CNNの原理とここ数年の流れ
R-CNNの原理とここ数年の流れR-CNNの原理とここ数年の流れ
R-CNNの原理とここ数年の流れ
Kazuki Motohashi
 
Reinforcement Learning(方策改善定理)
Reinforcement Learning(方策改善定理)Reinforcement Learning(方策改善定理)
Reinforcement Learning(方策改善定理)
Masanori Yamada
 
バンディットアルゴリズム入門と実践
バンディットアルゴリズム入門と実践バンディットアルゴリズム入門と実践
バンディットアルゴリズム入門と実践
智之 村上
 
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
Kenshi Abe
 
2 4.devianceと尤度比検定
2 4.devianceと尤度比検定2 4.devianceと尤度比検定
2 4.devianceと尤度比検定
logics-of-blue
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
mlm_kansai
 

What's hot (20)

RによるBox-Cox変換
RによるBox-Cox変換RによるBox-Cox変換
RによるBox-Cox変換
 
「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR #11
「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR  #11「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR  #11
「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR #11
 
がうす・まるこふ の定理とかそのへん
がうす・まるこふ の定理とかそのへんがうす・まるこふ の定理とかそのへん
がうす・まるこふ の定理とかそのへん
 
敵対的学習に対するラデマッハ複雑度
敵対的学習に対するラデマッハ複雑度敵対的学習に対するラデマッハ複雑度
敵対的学習に対するラデマッハ複雑度
 
階層モデルの分散パラメータの事前分布について
階層モデルの分散パラメータの事前分布について階層モデルの分散パラメータの事前分布について
階層モデルの分散パラメータの事前分布について
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
ブートストラップ法とその周辺とR
ブートストラップ法とその周辺とRブートストラップ法とその周辺とR
ブートストラップ法とその周辺とR
 
分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47
分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47
分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47
 
変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)
 
幾何と機械学習: A Short Intro
幾何と機械学習: A Short Intro幾何と機械学習: A Short Intro
幾何と機械学習: A Short Intro
 
協調フィルタリング入門
協調フィルタリング入門協調フィルタリング入門
協調フィルタリング入門
 
Stan超初心者入門
Stan超初心者入門Stan超初心者入門
Stan超初心者入門
 
パターン認識 第10章 決定木
パターン認識 第10章 決定木 パターン認識 第10章 決定木
パターン認識 第10章 決定木
 
識別モデルと生成モデルと損失データ
識別モデルと生成モデルと損失データ識別モデルと生成モデルと損失データ
識別モデルと生成モデルと損失データ
 
R-CNNの原理とここ数年の流れ
R-CNNの原理とここ数年の流れR-CNNの原理とここ数年の流れ
R-CNNの原理とここ数年の流れ
 
Reinforcement Learning(方策改善定理)
Reinforcement Learning(方策改善定理)Reinforcement Learning(方策改善定理)
Reinforcement Learning(方策改善定理)
 
バンディットアルゴリズム入門と実践
バンディットアルゴリズム入門と実践バンディットアルゴリズム入門と実践
バンディットアルゴリズム入門と実践
 
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
 
2 4.devianceと尤度比検定
2 4.devianceと尤度比検定2 4.devianceと尤度比検定
2 4.devianceと尤度比検定
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
 

Similar to はじめてのShiny

AWS Lambda + Python資料 ver0.94 20160825
AWS Lambda + Python資料 ver0.94 20160825AWS Lambda + Python資料 ver0.94 20160825
AWS Lambda + Python資料 ver0.94 20160825
Yasuharu Suzuki
 
そろそろRStudioの話
そろそろRStudioの話そろそろRStudioの話
そろそろRStudioの話
Kazuya Wada
 
Shiny-Serverあれこれ
Shiny-ServerあれこれShiny-Serverあれこれ
Shiny-Serverあれこれ
Kazuya Wada
 
Morioka As 0x06 Usagi Koyomirya
Morioka As 0x06 Usagi KoyomiryaMorioka As 0x06 Usagi Koyomirya
Morioka As 0x06 Usagi Koyomirya
兎 伊藤
 
【テックリンク】平日の夜1時間で学ぶ!RubyonRails初心者ハンズオン
【テックリンク】平日の夜1時間で学ぶ!RubyonRails初心者ハンズオン 【テックリンク】平日の夜1時間で学ぶ!RubyonRails初心者ハンズオン
【テックリンク】平日の夜1時間で学ぶ!RubyonRails初心者ハンズオン
linkbal
 
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
Naruhiko Ogasawara
 
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介NilOne Ltd.
 
オープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリオープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリ
陽平 山口
 
130329 perl casual_ruik
130329 perl casual_ruik130329 perl casual_ruik
130329 perl casual_ruik
Rui Kimura
 
SwaggerとAPIのデザイン
SwaggerとAPIのデザインSwaggerとAPIのデザイン
SwaggerとAPIのデザイン
Kazuhiro Hara
 
iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜
Yusuke SAITO
 
Fluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in TokyoFluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in TokyoKyosuke Inoue
 
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Kazuya Wada
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in TokyoKyosuke Inoue
 
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpAPIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjp
Takeshi Komiya
 
DeployR使ってみた話
DeployR使ってみた話DeployR使ってみた話
DeployR使ってみた話
Kazuya Wada
 
9/16 Tokyo Apache Drill Meetup - drill vs sparksql
9/16 Tokyo Apache Drill Meetup - drill vs sparksql9/16 Tokyo Apache Drill Meetup - drill vs sparksql
9/16 Tokyo Apache Drill Meetup - drill vs sparksql
Mitsutoshi Kiuchi
 
Realm meet up #17
Realm meet up #17Realm meet up #17
Realm meet up #17
Daisuke Nagata
 
Hardware Sketching Workshop 2013
Hardware Sketching Workshop 2013Hardware Sketching Workshop 2013
Hardware Sketching Workshop 2013
Shigeru Kobayashi
 
AnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + αAnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + α
yaegashi
 

Similar to はじめてのShiny (20)

AWS Lambda + Python資料 ver0.94 20160825
AWS Lambda + Python資料 ver0.94 20160825AWS Lambda + Python資料 ver0.94 20160825
AWS Lambda + Python資料 ver0.94 20160825
 
そろそろRStudioの話
そろそろRStudioの話そろそろRStudioの話
そろそろRStudioの話
 
Shiny-Serverあれこれ
Shiny-ServerあれこれShiny-Serverあれこれ
Shiny-Serverあれこれ
 
Morioka As 0x06 Usagi Koyomirya
Morioka As 0x06 Usagi KoyomiryaMorioka As 0x06 Usagi Koyomirya
Morioka As 0x06 Usagi Koyomirya
 
【テックリンク】平日の夜1時間で学ぶ!RubyonRails初心者ハンズオン
【テックリンク】平日の夜1時間で学ぶ!RubyonRails初心者ハンズオン 【テックリンク】平日の夜1時間で学ぶ!RubyonRails初心者ハンズオン
【テックリンク】平日の夜1時間で学ぶ!RubyonRails初心者ハンズオン
 
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
 
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
 
オープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリオープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリ
 
130329 perl casual_ruik
130329 perl casual_ruik130329 perl casual_ruik
130329 perl casual_ruik
 
SwaggerとAPIのデザイン
SwaggerとAPIのデザインSwaggerとAPIのデザイン
SwaggerとAPIのデザイン
 
iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜
 
Fluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in TokyoFluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in Tokyo
 
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in Tokyo
 
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpAPIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjp
 
DeployR使ってみた話
DeployR使ってみた話DeployR使ってみた話
DeployR使ってみた話
 
9/16 Tokyo Apache Drill Meetup - drill vs sparksql
9/16 Tokyo Apache Drill Meetup - drill vs sparksql9/16 Tokyo Apache Drill Meetup - drill vs sparksql
9/16 Tokyo Apache Drill Meetup - drill vs sparksql
 
Realm meet up #17
Realm meet up #17Realm meet up #17
Realm meet up #17
 
Hardware Sketching Workshop 2013
Hardware Sketching Workshop 2013Hardware Sketching Workshop 2013
Hardware Sketching Workshop 2013
 
AnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + αAnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + α
 

More from Kazuya Wada

オンラインTVサービスの分析事例
オンラインTVサービスの分析事例オンラインTVサービスの分析事例
オンラインTVサービスの分析事例
Kazuya Wada
 
道玄坂Lt#2 wdkz
道玄坂Lt#2 wdkz道玄坂Lt#2 wdkz
道玄坂Lt#2 wdkz
Kazuya Wada
 
ハイレゾの話
ハイレゾの話ハイレゾの話
ハイレゾの話
Kazuya Wada
 
データサイエンティストカジュアルトーク by wdkz
データサイエンティストカジュアルトーク by wdkzデータサイエンティストカジュアルトーク by wdkz
データサイエンティストカジュアルトーク by wdkz
Kazuya Wada
 
R-3.0.0でGLM
R-3.0.0でGLMR-3.0.0でGLM
R-3.0.0でGLM
Kazuya Wada
 
JuliaでGLM
JuliaでGLMJuliaでGLM
JuliaでGLM
Kazuya Wada
 
Rで触れる日本経済~RでVAR編~
Rで触れる日本経済~RでVAR編~Rで触れる日本経済~RでVAR編~
Rで触れる日本経済~RでVAR編~
Kazuya Wada
 
RのffでGLMしてみたけど...
RのffでGLMしてみたけど...RのffでGLMしてみたけど...
RのffでGLMしてみたけど...
Kazuya Wada
 
RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~
Kazuya Wada
 
Rでウォーリを探してみた
Rでウォーリを探してみたRでウォーリを探してみた
Rでウォーリを探してみた
Kazuya Wada
 
RのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみたRのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみた
Kazuya Wada
 
RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみた
Kazuya Wada
 
Tokyo.R#16 wdkz
Tokyo.R#16 wdkzTokyo.R#16 wdkz
Tokyo.R#16 wdkz
Kazuya Wada
 

More from Kazuya Wada (13)

オンラインTVサービスの分析事例
オンラインTVサービスの分析事例オンラインTVサービスの分析事例
オンラインTVサービスの分析事例
 
道玄坂Lt#2 wdkz
道玄坂Lt#2 wdkz道玄坂Lt#2 wdkz
道玄坂Lt#2 wdkz
 
ハイレゾの話
ハイレゾの話ハイレゾの話
ハイレゾの話
 
データサイエンティストカジュアルトーク by wdkz
データサイエンティストカジュアルトーク by wdkzデータサイエンティストカジュアルトーク by wdkz
データサイエンティストカジュアルトーク by wdkz
 
R-3.0.0でGLM
R-3.0.0でGLMR-3.0.0でGLM
R-3.0.0でGLM
 
JuliaでGLM
JuliaでGLMJuliaでGLM
JuliaでGLM
 
Rで触れる日本経済~RでVAR編~
Rで触れる日本経済~RでVAR編~Rで触れる日本経済~RでVAR編~
Rで触れる日本経済~RでVAR編~
 
RのffでGLMしてみたけど...
RのffでGLMしてみたけど...RのffでGLMしてみたけど...
RのffでGLMしてみたけど...
 
RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~
 
Rでウォーリを探してみた
Rでウォーリを探してみたRでウォーリを探してみた
Rでウォーリを探してみた
 
RのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみたRのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみた
 
RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみた
 
Tokyo.R#16 wdkz
Tokyo.R#16 wdkzTokyo.R#16 wdkz
Tokyo.R#16 wdkz
 

はじめてのShiny

  • 1. 続・はじめてのShiny 2013/01/26 Tokyo.R#28 和田 計也 サイバー系
  • 2. サイバー系 はじめに ※この発表は個人の見 解であり、所属する組 織の公式見解ではあり ません。 2 2013/01/26
  • 3. サイバー系 自己紹介 u 和田 計也(@wdkz) u 静岡県袋井市出身 u サイバー系企業でデータマイニングエンジニア職 u 最近は奥華子ばっか聴いてます u 前職はバイオベンチャー u バイオマーカ探索してた u 学生時代は枯草菌の研究 3 2013/01/26
  • 4. サイバー系 今日のお話 u Shinyとは? u とりあえずShiny u Shinyアプリの配布 u Shinyの実例 4 2013/01/26
  • 5. サイバー系 今日のお話 u Shinyとは? u とりあえずShiny u Shinyアプリの配布 u Shinyの実例 5 2013/01/26
  • 6. サイバー系 (いきなり脱線しますが)Mathematica 9が出ました u シャイニングウィザードと発音するみたいです 6 2013/01/26
  • 7. サイバー系 Mathematica 9が出ました u MathematicaからRを使うことで   ➡こんなインタラクティブなのが出来るみたいです! 7 2013/01/26
  • 8. サイバー系 Shiny u それ出来ます、そうShinyを使えばね http://glimmer.rstudio.com/wdkz125/theWorld/ 8 2013/01/26
  • 9. サイバー系 Shinyとは? u Shinyとは、インタラクティブなWebアプリをR でチョー手軽に作れるRのライブラリ Rとnode.jsをwebsocketsで繋いでる感じ u 2012年11月に初登場 u Joe Chengさん作 (RStudio Inc.) UseR!2012でwebsocketsの話してた人やー 9 2013/01/26
  • 10. サイバー系 ShinyかわいいよShiny u rApacheとかあったじゃん!? だがあれはインタラクティブではない それにrApacheの作者はもう飽きたらしい すまん 飽きた UseR!2012でwebsocketsの話してた人やー 10 2013/01/26
  • 11. サイバー系 今日のお話 u Shinyとは? u とりあえずShiny u Shinyアプリの配布 u Shinyの実例 11 2013/01/26
  • 12. サイバー系 とりあえずShiny u さっきの再び出します u これを実際にやってみましょう 12 2013/01/26
  • 13. サイバー系 Shinyでwebアプリを作る① u 適当なフォルダを作成   今回の例では「01_plot」とした u その中に2個のファイルを作成 ⅰ)server.R ⅱ)ui.R 上記2つのファイル名は必ず こうしなければいけない!! 13 2013/01/26
  • 14. サイバー系 Shinyでwebアプリを作る② u viewの作成はui.R library(shiny) shinyUI(pageWithSidebar( headerPanel("Hello Shiny!"), sidebarPanel( numericInput("obs", "Number of points:", 1000), sliderInput("mean", "Mean:", min=-100, max=100, value=0), sliderInput("sd", "Standard Deviation:", min=0, max=100, value=1) ), viewは3つからなる mainPanel( ⅰ)ヘッダー・・・タイトル plotOutput("distPlot") ⅱ)サイドバー・・・インプットのとこ ) ⅲ)メイン・・・アウトプットのとこ )) 14 2013/01/26
  • 15. サイバー系 Shinyでwebアプリを作る③ u view部分ui.Rの深入り_sidebar inputオブジェクトには固有の名前をつけておく sidebarPanel( (server.Rから入力値を取得するのに使う) numericInput("obs", "Number of points:", 1000), sliderInput("mean", "Mean:", min=-100, max=100, value=0), sliderInput("sd", "Standard Deviation:", min=0, max=100, value=1) ), サイドバーは、 Inputを書き足すこと でどんどん増やせる。 Inputに何があ るかはCRAN上のShinyのReference Manual等を見るとわかる 15 2013/01/26
  • 16. サイバー系 Shinyでwebアプリを作る④ u logicの作成はserver.R library(shiny) ui.Rで定義した、アウトプットの固有名 shinyServer(function(input, output) { output$distPlot <- reactivePlot(function() { dist <- rnorm(input$obs, mean=input$mean, ui.Rで定義した、インプットの固有名を sd=input$sd) 使うことで値を取得できる hist(dist, prob=TRUE) lines(density(dist, adjust=2), lty="dotted", col="blue") }) }) メインパネルは、server.R内で reactive 関数をオーバーライドするこ とでinteractiveな描写ができるようにな る。reactive 関数に何があるかは Reference Manual等を見るとわかる 16 2013/01/26
  • 17. サイバー系 Shinyでwebアプリを起動する u カレントフォルダに01_plotフォルダ があってその中にserver.Rとui.Rと がある状態でRコンソールから > library(shiny) > runApp(“01_plot”) Listening on port 8100 デフォルトブラウザが起動 17 2013/01/26
  • 18. サイバー系 今日のお話 u Shinyとは? u とりあえずShiny u Shinyアプリの配布 u Shinyの実例 18 2013/01/26
  • 19. サイバー系 Shinyアプリの配布方法_ローカル編 u プログラムごと渡してローカルで起動してもらう 1.フォルダごとzipで固めて渡す。渡された人は解凍してR     起動してshiny::runApp( hogehoge )する     利点:最も汎用性高い 欠点:ITリテラシーの高くない人に、Rを起動してrunApp してもらうことの絶望感 2.Gistにコードを上げて shiny::runGist( hogehoge )してもらう      利点:URLを教えるだけでいいのが楽  欠点:社外秘情報を含むものには使えないし、1同様 3.@hoxo_mさん作成のOpenShiny.exeを使う 利点:ITリテラシーに関係なく使ってもらえそう 欠点:Winマシン限定。exeファイルを配布するというドキドキ感 19 2013/01/26
  • 20. サイバー系 3.OpenShiny.exeの紹介 u @hoxo_mさんが.netで作った「Shinyをワンクリックで起動する やつ」 配布方法:適当なフォルダに①「OpenShiny.exe」        ②「server.R」③「ui.R」を置いてフォルダごと配布    使用方法:もらった人はOpenShiny.exeをクリックするだけ!! フォルダ名は 適当なのつけてね 20 2013/01/26
  • 21. サイバー系 Shinyアプリの配布方法_サーバ編 u サーバにデプロイしてURLをみてもらう 4.rApacheに組み込んじゃう 無理 即答   5.Shinyホスティングサービス(RStudio.com運営)を使う 楽 β版だからいつ止まっても(有償化しても)おかしくない 社外秘情報を含むものには使えない 6.Shiny-serverを使ってデプロイ ちょい面倒だけど社内で使うならこれかな 21 2013/01/26
  • 22. サイバー系 5.RStudio.com運営shinyホスティングサービス u まああれだ、ホスティング用のアカウント発行したぜ!って いうe-mailに書かれてる通りやればできる 1.sshでログインして 2.自分のホームに /ShinyApp/ディレクトリ作って 3.そこに適当なディレクトリ(例えばtheWorld)作って 4.scpでそこにui.Rとserver.Rをアップロード http://glimmer.rstudio.com/wdkz125/theWorld/ ディレクトリ名 ユーザ名 22 2013/01/26
  • 23. サイバー系 6.Shiny-serverについて http://blog.rstudio.org/2012/12/04/shiny-update/ とりあえずlinux で動くけどwinと かmacosxで動 かないよ オープンソースに してみたよ!! 有償版も考えてるらしい 23 2013/01/26
  • 24. サイバー系 6.Shiny-server有償版についてわかっていること とりあえず、有償版では何らかの認証ができたらいいな って思ってるらしい 24 2013/01/26
  • 25. サイバー系 6.Shiny-serverのインストール u Shiny-severインストールに必要なもの 1. R.2.15.0以上 2. Rのshinyライブラリをユーザフォルダじゃないところに インストール 3. node.js 0.8.16以上 ubuntuの場合              sudo  apt-­‐get  install  python-­‐software-­‐properties  python  g++                make              sudo  add-­‐apt-­‐repository  ppa:chris-­‐lea/node.js              sudo  apt-­‐get  update              sudo  apt-­‐get  install  nodejs  npm u Shiny-severのインストール        sudo  npm  install  -­‐g  shiny-­‐server        sudo  useradd  -­‐r  shiny        sudo  mkdir  -­‐p  /var/shiny-­‐server/www        sudo  mkdir  -­‐p  /var/shiny-­‐server/log 25 2013/01/26
  • 26. サイバー系 6.Shiny-serverの起動 u 以下のディレクトリに適当な名前のディレクトリ作成して そこにui.Rとserver.Rとをコピって /var/shiny-server/www/AppName u 起動  sudo shiny-server u ブラウザからアクセス http://<hostname>:3838/AppName 26 2013/01/26
  • 27. サイバー系 今日のお話 u shinyとは? u とりあえずshiny u shinyアプリの配布 u shinyの実例 27 2013/01/26
  • 28. サイバー系 shinyの実例デモ u デモで使うデータはもちろんiris    irisに関する詳しい資料は以下を参照して下さい➡ 「irisの正体 (R Advent Calendar 2012 6日目)」 http://d.hatena.ne.jp/tsutatsutatsuta/20121206/1354737461 28 2013/01/26
  • 29. サイバー系 shinyの利用例 tabで いろいろ 選べる 29 2013/01/26
  • 30. サイバー系 shinyの利用例 summ aryの tabを 選択す ると もっと下のほうにsummary結果も出てるんだけど、見えんな 30 2013/01/26
  • 31. サイバー系 shinyの利用例 ここでデータのレンジを絞ると、下のグラフ中のデータポイント も変化する 31 2013/01/26
  • 32. サイバー系 shinyの利用例 WebG L使って 3次元p lotも出 来る 32 2013/01/26
  • 33. サイバー系 shinyの利用例 決定木 選んで みたり 33 2013/01/26
  • 34. サイバー系 shinyの利用例 GLM選 んでみ たり 34 2013/01/26
  • 35. サイバー系 shinyの利用例 サイド バーも ックス チェッ オンオ クボ 変わる フで動 よ 的に 35 2013/01/26
  • 36. サイバー系 shinyのTips u staticなページ(タブ)を作りたい HTML()関数でhtmlを直書きする u インタラクティブすぎる submitButtonを配置すれば、ボタン押すまで反映しない u サイドバーパネルもインタラクティブにしたい conditionalPanelを使う conditionalPanel(condition= input.@@=true ,,,) u サイドバーパネルをもっとインタラクティブにしたい ui.R中はuiOutput("rice") みたいにしておいてserver.Rで output$rice <- reactiveUI(function(){ selectInput( gets , dandy , choice=1:10, selected=1) }) ってすればいい。↑ここでinputの値取得して条件分岐とかバリバリ書く 36 2013/01/26
  • 37. サイバー系 shinyのここがイマイチ u 日本語一切使えない。コメントにすら日本語が含まれると動かない u 左にサイドバーパネル、右にグラフパネルという構図が固定 幅とか変えたいのに.... u レンジスライダーのレンジを保持して左右に動いて欲しい u レンジスライダー、キーボードの矢印で操作できない u レンジスライダーにintegerの値しか使えない u submitButtonをcheckboxで出したり消したりしたい 37 2013/01/26
  • 38. サイバー系 参考文献 u shiny https://github.com/rstudio/shiny/ u shiny-server https://github.com/rstudio/shiny-server u tutorial http://rstudio.github.com/shiny/tutorial/ u google group https://groups.google.com/forum/?fromgroups#!forum/shiny-discuss u shinyでrglを使う https://github.com/trestletech/shiny-sandbox/tree/master/rgl u hoxo_mさんのShinyアプリをワンクリックで起動するやつ http://d.hatena.ne.jp/hoxo_m/20121122/p1 u バタデ先生の、みんなでシャイニイイイイイイイイイイイイイイイ http://d.hatena.ne.jp/dichika/touch/20130118/1358470135 38 2013/01/26
  • 39. サイバー系 まとめ 1. シャイニングウィザードを紹介して 2. ついでにshinyも紹介して 3. shinyアプリの配布方法も紹介して 4. 最後にデモった        39 2013/01/26