Help us understand the problem. What is going on with this article?

やってみよう分析!第9章:Scala, Eclipse(Scala IED for Eclipse), R で作る簡易分析環境 for Windows

More than 5 years have passed since last update.

はじめに

今回も始まりました。やってみよう分析!シリーズ

前章から引き続きScalaを活用した簡易分析環境の構築方法を紹介します。本章でも Windows 7 Professional上に環境を作っていきます。

Pythonはライブラリが充実していて、特にmatplotlibという強力なプロット機能を持つライブラリが存在します。一方ScalaはPythonと異なりプロット機能がデフォルトでは充実いていません。そこで本章ではひとつの方法として、R を使います。 R は統計処理を行うソフトウェアとして有名ですが、ここではScalaからRを呼び出し、データプロットするために使います(R はデータの可視化にも優れています)。もちろんプロットだけではなく、様々なデータ分析をEclipse上でRと連携させて実行することが可能です。

※Java/R Interface と RCaller について※
本文ではJava/R Interfaceを使ったJavaとRの連携方法の紹介をしています。この文章を書いた後で RCaller と呼ばれる別の連携用モジュールを見つけました。少しいじっただけなのですが、こちらも非常に使いやすいようですので興味のある方は参考にしてみてください。

Scalaのインストール

Java JDKのインストール

Scalaをインストールするためには JavaのJDKを先にインストールしておく必要があります。最新のJDKはこちらのサイトから入手することが可能です。インストールファイルをダウンロードしてから実行しインストールを完了させます。インストールが完了したらbinフォルダへパスを通します。環境変数のシステム環境変数を編集し、javaのbinフォルダの場所を指定します。例えば、C:\Program Files\Java\jdk1.7.0_51\bin; のようにです。設定が完了したらコマンドプロンプトからjava -version と入力しJavaのバージョン情報が出力されれば完了です。

Scalaのインストール

Scalaのこのページからインストールファイルをダウンロードして実行します。インストールが完了したら環境変数のシステム環境変数のPathにScalaのbinフォルダを指定します。例えば C:\scala\bin;を追加します(C:\scalaの直下にbinがある場合)。設定が完了したらコマンドプロンプトを起動して scala -versionと入力します。バージョン情報が出力されれば問題ありません。

Scala IED for Eclipseのインストール

Eclipseが既にインストールされているものとします(8章参照)。Eclipseを起動します。 Help➞Install New Software➞Addと進み、こちらからScala IDE for EclipseをダウンロードするためのURLを取得、Locationに貼り付けます(ここでNameはScala IDE for Eclipseとしました)。貼り付けたらOKします。

fig02.png

Scala IDE for Eclipseにチェックを入れてNextで進みインストールを完了させます。 Window➞Open Perspective➞Otherと進み、Scalaを選択してOKします。

fig03.png

Eclipse上でScalaのコーディングをするためにPerspectiveをScalaに切り替えます。

fig04.png

File➞New➞Scala Projectとしてプロジェクト名を記入してFinishします(ここではscalaTestとしましょう)。scalaTestアイコンの上で右クリックして New➞PackageでそのままFinishボタンを押します。続いてscalaTest packageアイコンの上で右クリックして New➞Scala Objecを選択します。nameはここでも適当にtestとつけておきます。

object testの後ろに extends Appと付け加え、print("hello world")と書き込みます。最後に実行してhello worldと表示されればOKです。

fig05.png

Rのインストール

次はEclipse上でRを使うための設定を紹介していきます。ここではhamadakoichi blogの次の2つのページを参考にしました。

Rのインストール

Rをインストールあするためにここのページからインストール用ファイルをダウンロードして実行します。

fig06.png

WalWareのインストール

Rのインストールが完了したら次はEclipseの設定に移ります。Eclipse Plug-inとしてWalWareを使います。Eclipseを起動させ、 Help➞Install New Software➞Addから

と入力してOKします(LocationのURLはEclipseのバージョンに依存しています。詳しくはWalWareのサイトを参照指定ください。)。

fig07.png

Eclipseへインストールするプラグインで必要なファイル類にチェックを入れてNextで先に進みインストールを完了させます。 Window➞Open Perspective➞Otherから StatETを選択ししておきます。

Eclipseの設定

Window➞Preferences➞StatET➞Run/Debug➞R Enviroments➞Addで R_HOMEを設定します(ここではC:\Program Files\R\R-3.1.1)

fig08.png

次にR Consoleを設定します。 Run➞Run Configurations➞R Consoleをダブルクリック➞New Configurationsを選択。Launch typeで「Rterm」を選択します。Applyを押して一度閉じます。

File➞New➞R Projectを選択(ここではProject nameをtestRとします)。testRアイコンの上で右クリックして New➞R Script Fileを選択。

RをEclipse上で操作テスト

Rを起動させるために Run➞Run Configurations➞R console➞New_configuration➞Runを選択します。Rが起動したらprint("hello world")と入力して Run Entire Command in Rを押します。うまくいけばコンソール画面にhello worldと出力されます。

fig10.png

Java/R InterfaceでEclipseとの連携

Scala(またはJava)上でRを呼び出すための設定を行います。Rを起動してコンソール画面上でinstall.packages("rJava")と入力します。インストールが完了したら連携テストを実施します。

連携テストのためにScalaのProjectを生成します。ここではProject nameをtestRとしておきます。Nextボタンを押してLibrariesタブを開きます。Add External JARsを押してrJava\jriにあるJRI.jarを指定します(自分の環境ではC:\Program Files\R\R-3.1.1\library\rJava\jri)。

fig11.png

つぎにC:\Program Files\R\R-3.1.1\library\rJava\jri\x64にあるjri.dllをコピーしてtestRプロジェクトアイコン上でペーストします。さらにプロジェクト配下にScala Object(ここでnameはtest)を作ります。

fig12.png

Run➞Run Configurations➞Scala Applicationをダブルクリック➞New Configurationを作成。NameをtestRに変更しEnviromentタブを開きます。さらにNew➞Variable➞Edit Variablesを選択し下記4つを設定します。

  • Path: C:\Program Files\R\R-3.1.1\bin\x64
  • R_DOC_DIR: C:\Program Files\R\R-3.1.1\doc
  • R_INCLUDE_DIR: C:\Program Files\R\R-3.1.1\include
  • R_SHARE_DIR: C:\Program Files\R\R-3.1.1\share

※注意※:使っているRが32bitか64bitかでPathの場所が変わります。

下記のScalaのサンプルコードを実行してScalaとRが連携できているか確認します。使い方のおおまかな流れは assignメソッドで変数にデータを格納して、evalメソッドでコマンドを実行します。下記のサンプルのフローは以下のようになっています。

  • -60から60までの整数を aというArrayに格納。
  • 横軸をa、縦軸をsin(a/5)*( 1+sin(a/4) )として折れ線グラフをプロット(プロットのタイプはtype=\"l\"で指定)。
  • グラフがすぐ消えないようにreadLineを挟んでコンソール上でエンターが押されたらグラフが消えるようにしています。
  • dev.off()でグラフの機能を停止させます(これを実行しないと裏でplotのプロセスが生き残ってしまうようです)。
  • 最後にend()で終了。
package testR
import org.rosuda.JRI.{ REXP, Rengine }

object test extends App {
    val engine = new Rengine(Array[String]("--no-save"), false, null)
    engine.assign("a", (-60 to 60).toArray )
    engine.eval( "plot(a, sin(a / 5) * ( 1+ sin(a /4) ) ,type=\"l\" )" )
    print("press enter key to end the process")
    readLine    //enter -> end
    engine.eval("dev.off()") 
    engine.end()
}

うまく実行されると波形プロットが出力されます。

fig13.png

使用した感想としては、JavaからRを立ち上げた時のプロセスの挙動がちょっと不安定な気もしますが、とりあえずローカルでさくっと分析結果を可視化させたいときに重宝すると思います。

===========================================

こちらもよろしくおねがいいたします。

入門編

第1部イントロダクション

第2部エクセルで学ぶ分析入門

第3部 データ可視化(ビッグデータに限らない)

実践編

第4部 Python/Scalaで分析ことはじめ

Appendix

==================

お知らせ:Fringe81エンジニアチームでは仲間を募集しています!

 

 チームの雰囲気や採用情報については下記ページをご覧下さい。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away