SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

近未来の技術トレンドを先取り! 「Tech-Sketch」出張所

R言語のデータ分析レポートをShinyでインタラクティブにしてみる~「アプリケーション作成編」

近未来の技術トレンドを先取り! 「Tech-Sketch」出張所 第17回(後編)


  • X ポスト
  • このエントリーをはてなブックマークに追加

Shiny Serverへのデプロイ

 さあ、「環境構築編」で準備したShiny Serverへデプロイして、関係者が分析レポートを見られるようにしましょう。

 クライアントマシンからShiny Serverが稼働しているマシンにファイルを転送して、sshで接続します(「shiny_server.pem」と「XXX.XXX.XXX.XXX」は自身のEC2(サーバーマシン)環境に合わせて変更してください)。

$ scp -i shiny_server.pem -r CodeZine-wordcloud ubuntu@XXX.XXX.XXX.XXX:
$ ssh -i shiny_server.pem ubuntu@XXX.XXX.XXX.XXX

 サーバーマシン上で、プロジェクトディレクトリを/srv/shiny-server/に配置し、必要なパッケージをインストールします。パッケージインストール時はShiny Serverは停止させておきます。

$ sudo stop shiny-server  # 停止
$ sudo cp -r ~/CodeZine-wordcloud /srv/shiny-server/
$ sudo su - -c "R -e \"install.packages('wordcloud', repos='http://cran.rstudio.com/')\""
$ sudo su - -c "R -e \"install.packages('memoise', repos='http://cran.rstudio.com/')\""
$ sudo start shiny-server  # 起動

 ブラウザからShiny Serverにアクセスすると先ほど同様ワードクラウドレポートが表示されていることでしょう。これで公開に必要な作業はすべて完了しました。

まとめ

 筆者が実際にShinyアプリを作ってみた感想として、Shinyアプリはこんなシーンでオススメです。

  • 社内でRの動的な分析レポートを常に最新の状態で共有したい
  • 単ページで完結するシンプルな構成のアプリを作りたい
  • Rの知識はあるけどWebアプリ開発に関する知識・開発経験が少ない場合

社内でRの動的な分析レポートを常に最新の状態で共有したい

 Rで分析したレポートの配布方法(公開方法)については、Rユーザーの関心事の一つではないでしょうか。RにはRMarkdownknitrの組み合わせで静的レポートを生成し、配布するという選択肢もありますが、基本的には静的なレポートなのでレポートの魅力が最大限発揮できないかもしれません。さらに、レポートをファイルで配布する場合、配布バージョンの管理が煩雑になります。その点Shiny Serverを利用することで、常に最新バージョンの動的な分析レポートがエンドユーザーへ提供できます。

 一方、不特定多数での利用はパフォーマンス的に厳しいです。もちろん、サーバースペック&処理内容にもよりますが、数人が同時にアクセスしただけで役に立たなくなることもあります。IPアドレスなどでアクセス数を制限できる範囲内で利用するのが良い気がします。ただし、複数サーバーでRのプロセスを起動させて分散処理させることも可能です。具体的にはwdkz氏の資料「Shiny-Serverあれこれ」が詳しいです。興味がある方はぜひ参照してみてください。

単ページで完結するシンプルな構成のアプリを作りたい

 Shinyで作るWebアプリは画面からの入力を受けてRの関数に投げて結果を表示するだけのような、分析手法的には複雑であっても、Rの処理内容的には簡潔なシーンに向いています。server.Rui.Rと+αのファイルで書ける程度の構成であれば簡単にWebアプリ化できます。

 一方、ログイン認証や、画面遷移などを行う分析以外の役割を持たせた多機能なWebアプリとしては向いていません。他の言語のWebアプリのフレームワークであれば簡単にライブラリをインストールすることで導入できるようなことも、自前で作成する必要があったりします。このあたりは、Shinyのバージョンアップによって今後状況が変わっていくかもしれません。

Rの知識はあるけどWebアプリ開発に関する知識・開発経験が少ない場合

 Shinyは基本的なRの知識と、ShinyをインストールするためのちょっとしたOSの知識さえあればShinyアプリとして簡単に公開できます。Rプログラマの中には他の言語には詳しくない方や、Webアプリの開発経験がない方も少なくないと思いますが、Shinyがある程度吸収してくれるのでRStudioでui.Rserver.Rを作成しさえすればWebアプリを簡単に開発できます。リアクティブ・プログラミングのサポートもあり開発者は関心事を最大限に分析へフォーカスできます。

さらにShinyを勉強したい方へ

 Shinyは公式サイト上のチュートリアルが充実しています。こちらをひと通り試してみて、まずはShinyに慣れることをお勧めします。

 以上、「環境構築編」「アプリケーション作成編」の2回にわたって、Shinyを紹介させていただきました。興味を持たれた方はぜひShinyを試してみてください。

 Tech-Sketch出張所の次の記事は、近日公開に向け企画中です。次回もお楽しみに!

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
近未来の技術トレンドを先取り! 「Tech-Sketch」出張所連載記事一覧

もっと読む

この記事の著者

白石 康司(TIS株式会社)(シライシ コウジ)

TIS株式会社 コーポレート本部 戦略技術センター所属。現在、機械学習技術の研究、機械学習をベースとしたアプリケーションの企画・開発を、PythonやR言語をベースに行っている。 機械学習その他に関する社内研修やオープンな技術勉強会(Tech-Circle)の企画運営にも従事。 もともと、金融系基幹Webシステム開発でのアプリケーションアーキテクチャ/データモデル設計、データベース(Oracle)担当を経...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8226 2015/02/06 13:58

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング