SlideShare una empresa de Scribd logo
1 de 39
続・はじめての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

Más contenido relacionado

La actualidad más candente

Rで階層ベイズモデル
Rで階層ベイズモデルRで階層ベイズモデル
Rで階層ベイズモデル
Yohei Sato
 
第五回統計学勉強会@東大駒場
第五回統計学勉強会@東大駒場第五回統計学勉強会@東大駒場
第五回統計学勉強会@東大駒場
Daisuke Yoneoka
 

La actualidad más candente (20)

時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?
 
混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)
 
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」  佐野正太郎明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」  佐野正太郎
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
 
ベイズ最適化
ベイズ最適化ベイズ最適化
ベイズ最適化
 
構造方程式モデルによる因果探索と非ガウス性
構造方程式モデルによる因果探索と非ガウス性構造方程式モデルによる因果探索と非ガウス性
構造方程式モデルによる因果探索と非ガウス性
 
GAN(と強化学習との関係)
GAN(と強化学習との関係)GAN(と強化学習との関係)
GAN(と強化学習との関係)
 
機械学習におけるオンライン確率的最適化の理論
機械学習におけるオンライン確率的最適化の理論機械学習におけるオンライン確率的最適化の理論
機械学習におけるオンライン確率的最適化の理論
 
Rで階層ベイズモデル
Rで階層ベイズモデルRで階層ベイズモデル
Rで階層ベイズモデル
 
楽にggplotを描く・整える
楽にggplotを描く・整える楽にggplotを描く・整える
楽にggplotを描く・整える
 
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
 
関数データ解析の概要とその方法
関数データ解析の概要とその方法関数データ解析の概要とその方法
関数データ解析の概要とその方法
 
線形計画法入門
線形計画法入門線形計画法入門
線形計画法入門
 
第五回統計学勉強会@東大駒場
第五回統計学勉強会@東大駒場第五回統計学勉強会@東大駒場
第五回統計学勉強会@東大駒場
 
R による文書分類入門
R による文書分類入門R による文書分類入門
R による文書分類入門
 
Stanの便利な事後処理関数
Stanの便利な事後処理関数Stanの便利な事後処理関数
Stanの便利な事後処理関数
 
重回帰分析で交互作用効果
重回帰分析で交互作用効果重回帰分析で交互作用効果
重回帰分析で交互作用効果
 
[DL輪読会]近年のエネルギーベースモデルの進展
[DL輪読会]近年のエネルギーベースモデルの進展[DL輪読会]近年のエネルギーベースモデルの進展
[DL輪読会]近年のエネルギーベースモデルの進展
 
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
 
2 3.GLMの基礎
2 3.GLMの基礎2 3.GLMの基礎
2 3.GLMの基礎
 
ベイズモデリングと仲良くするために
ベイズモデリングと仲良くするためにベイズモデリングと仲良くするために
ベイズモデリングと仲良くするために
 

Similar a はじめてのShiny

中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
NilOne Ltd.
 
Fluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in TokyoFluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in Tokyo
Kyosuke Inoue
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in Tokyo
Kyosuke Inoue
 

Similar a はじめての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の インフラを管理する話 + α
 

Más de Kazuya Wada

RのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみたRのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみた
Kazuya Wada
 

Más de 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
 

Último

TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
YukiTerazawa
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
koheioishi1
 

Último (8)

TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
 
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
 

はじめての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