SHOEISHA iD

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

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

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

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

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


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

Shinyアプリ作成

 実際に、「Tech-Sketch」出張所版ワードクラウドレポートを実装していきます。完全な形のコードはこちらから取得できます。

global.R

 global.Rであらかじめ記事の一覧をlist型として読み込ませます。

# 全記事をlistとして保持
articles <<- list("R言語のデータ分析レポートをShinyでインタラクティブにしてみる~「環境構築編」"="8148",
                  "WebRTC(PeerJS)で遠隔作業支援システムを作る(実装編2)"="8018",
                  "WebRTC(PeerJS)で遠隔作業支援システムを作る(実装編1)"="8017",
                  ……(以下略)……

 選択した記事の中身の単語をファイルから読み込む関数を定義します。

 ファイルはあらかじめカウント済のTSVファイルを用います。区切り文字はタブなので、read.csv()関数のオプションはsep="\t"としておきます。

  # articleディレクトリから該当記事のTSVファイルをdata.frame型で読み込む
  read.csv(sprintf("./articles/%s.tsv", article), sep="\t", encoding="UTF-8")

ui.R

 ui.Rでは以下をパラメータとして入力できるように定義します。基本的にSidebar PanelMain Panelも変数名、ラベル名以外は先ほどのサンプルコードそのままです。

  # サイドバー
  sidebarPanel(width = 5,
    selectInput("selection", "記事を選んでください",
                choices = articles),
    actionButton("update", "更新"),
    hr(),
    sliderInput("freq",
                "出現頻度の下限値:",
                min=1, max=50, value=5),
    sliderInput("max",
                "最大単語数:",
                min=1, max=300, value=100)
  ),
  # ワードクラウドと記事へのリンクを表示
  mainPanel(width=7,
    plotOutput("plot")

server.R

 続いて、server.Rです。

 server.Rでは、ワードクラウドの入力のデータ型がdata.frame型になりますが、基本的な流れは同じです。

  # 画面(ui.R)へ渡すワードクラウドを変数output$plotへ格納する
  output$plot <- renderPlot({

    article.df <- article()

    # ワードクラウドの作成(min.freqとmax.wordsの値は画面から入力された値を受け取る)
    wordcloud_rep(article.df$word, article.df$freq, scale=c(4,0.5),
                  min.freq=input$freq, max.words=input$max,
                  colors=brewer.pal(8, "Dark2"))
  })

 以上でアプリは完成です。みなさんのクライアントマシンの環境のRコンソール上で以下のコマンドを実行してみてください。

> install.packages(c('wordcloud', 'memoise'))  # パッケージのインストール
> runApp()  # shinyの起動

 以下のようなワードクラウドレポートが表示されたのではないでしょうか。試しに別の記事を選んで「更新」ボタンを押してみてください。選んだ記事のワードクラウドが表示されるでしょう。

「Tech-Sketch」出張所」ワードクラウドレポート
「Tech-Sketch」出張所」ワードクラウドレポート

 もし、日本語が文字化けしている場合は、server.Rで日本語に対応したフォントファミリーの指定が必要です。以下とサンプルコードを参考に指定してみてください。文字化けしていない場合はこちらの対応は不要です。

Macの場合
フォントファミリーの指定
par(family="Hiragino Mincho Pro W6")  # Macの場合
Ubuntuで日本語フォントがインストールされていない場合
フォントのインストール
$ fc-list : family  # インストール済みのフォントファミリーの確認
DejaVu Sans Mono
……(中略)……
$ sudo  apt-get install fonts-ipaexfont  # IPAフォント
フォントファミリーの指定
par(family="IPAexMincho")  # Ubuntu

次のページ
まとめ

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング