インフラ屋さんのためのR言語: 環境構築編

# はじめに
Rは統計解析用の言語として広く使われているもので、その開発/実行環境はオープンソース(フリー・ソフトウェア) として提供されています。
R多様な統計手法に対応しているらしいのですが、私は統計には全く疎いのでその辺は置いておいて...

* **スクリプト言語なのでお手軽に使える**: フリーの開発環境も充実しているし、インタプリタ言語ながらそれなりに高速に処理できるらしい
* **きれいなグラフが比較的容易に描ける**		
* **レポート作成の自動化がしやすい**: Word, PDFなどの静的レポートだけでなく、HTML文書, WebアプリのようなInteractiveにグラフを動的に操作できるレポートも作れる！	

という辺りの特徴に注目すると、システム(OS、ミドルウェア、アプリ等)が出力するログを分析して可視化(グラフ化)するのに使うといいんじゃないかと。
例えば、プロセス毎のCPU使用率、メモリ使用率、ディスクの消費量なんかをグラフ化してあげたりとか。
つまり、手っ取り早くパフォーマンス情報を可視化するためのツールとしてRを使ってみようということです。
なので、ここでは小難しい統計の話は省略し(というかできない)、グラフ化ツールとしてのRを使ってみた時のTipsなんかをまとめていきます。(タイトルに"インフラ屋さんのための"としてますが、それ以外でも色々参考にして頂ける場面はあると思います。)
一応最終的な目標としては、取り込んだデータ(csvファイル、RDB、REST/JSON等)を、Webアプリとしてグラフ化する(ShinyというRのパッケージを使用)というあたりを目指そうと思います。
前置きが長くなりましたが、まずは環境構築編です。

## 関連記事
[インフラ屋さんのためのR言語: 環境構築編](http://qiita.com/tomotagwork/items/5cd9362f386d330fe96a) <= 当記事
[オフラインでのR環境構築 on RHEL](http://qiita.com/tomotagwork/items/9e86d2fc67a7c7b644d5) 
[z/OSにRを導入してみた](http://qiita.com/tomotagwork/items/83791c46421fef8de912) 
[インフラ屋さんのためのR言語: プログラミング編](http://qiita.com/tomotagwork/items/24d1d11a12bb38aa9f35)
[R Markdownによるレポート生成](http://qiita.com/tomotagwork/items/c92fb40a76f56ea16aa4)
[R MarkdownのHTMLレポートをブラッシュアップ](http://qiita.com/tomotagwork/items/3061a74e1d25cf46e891)
[R - ShinyによるWebアプリケーション作成: 基礎編](http://qiita.com/tomotagwork/items/b56071ea2b276ba87476)
[R - ShinyによるWebアプリケーション作成: shinydashboard編](http://qiita.com/tomotagwork/items/0efe3f08ddd1f268c8f8)
[R - ShinyによるWebアプリケーション作成Tips: shinydashboardでの画面遷移制御](https://qiita.com/tomotagwork/items/bc061a363eb36382d2e2#_reference-c7c49926f78c0fc44cc0)
[R - ShinyによるWebアプリケーション作成Tips: UIオブジェクトの動的制御](http://qiita.com/tomotagwork/items/d3c3a0533224e3faea7d)
[R - Shinyアプリ/管理サーバー テンプレート](https://qiita.com/tomotagwork/items/3041efde7ae0b46e4c5f)
[R - ShinyアプリでJリーグの勝点推移グラフを作成してみた](https://qiita.com/tomotagwork/items/3162cfef78c71ef4b977)

# 前提
基本、Windows環境で開発/テスト/実行をする想定です。
最終的に、開発/テスト環境: Windows7、Webアプリとしての実行環境: Linuxという感じを想定しているので、一部Linux(CentOS7)についても触れて行こうと思います。
まぁ最初のうちはWindows環境だけで完結するので、Windowsだけあればよいでしょう。

# 導入
## R本体
R本体と、RStudioをインストールします。
R本体はR ProjectのサイトCRAN(Comprehensive R Archive Network)というサイトのミラー・サイトからダウンロード可能です。

参考:
[R Project](https://www.r-project.org/)
[CRAN(日本のミラーサイト)](https://cran.ism.ac.jp/)

使用するプラットフォームに従って必要なものを入手します。

### Windowsの場合
Windows版のダウンロードは [コチラ](https://cran.ism.ac.jp/bin/windows/base/)から。
インストーラーをダウンロードして実行し、あとは指示に従っていけばOKです。

### CentOS7の場合
1.EPELのインストール

```
# yum -y install epel-release
```

/etc/yum.repos.d/epel.repo編集し、"enabled=1" をすべて "enabled=0"に変更(EPEL リポジトリが有効になっていると yum 実行時に既存のレポジトリと競合することがあるため、EPEL 無効にしておき、必要な時にオプション指定するようにします)


2.R本体のインストール

```
 yum install R --enablerepo=epel
```

## 開発環境(RStudio)
Rだけでも使えますが、普通は開発ツールを使うのがよいでしょう。他にも開発支援ツールはあるようですが、オーソドックスにRStudio使っておけばよさそうなのでそれ使います。

RStudioは、デスクトップ版とサーバー版があります。
サーバー版はその名の通りサーバーに入れて、クライアントマシンからはブラウザでアクセスして利用できるようです。
さらに、無償版と有償版がありますが、ここでは無償のデスクトップを入れます。

[RStudioダウンロード](https://www.rstudio.com/products/rstudio/download2/)

Windows版の場合、ダウンロードしたexeを実行すればセットアップ用のウィザードが起動するので指示に従ってインストールすればOK。

# とりあえず使ってみる
## RStudio操作イメージ
![image01_01.jpg](https://qiita-image-store.s3.amazonaws.com/0/132331/206542fd-c36a-dadc-ff32-414cb3d68eb8.jpeg)

レイアウトは自由に変えられますが、最初はこんな感じです。
コンソールはRのコマンドや結果を確認するためのインターフェースです。
変数に値を代入したりすると右上のペインで中身を確認したりできます。
コンソールで色々動きを確かめながらソースを編集していくという感じで使うとよいです。
例えば、エディターで開いたソースから、実行したい部分のコードを複数行コピーして、コンソール上に貼り付けると、その部分が実行されます。
あるいは、ソース中でCtrl+Enterで、カーソルのある行だけ実行してくれたりします。
Rのコードはゴロゴロ転がってるので、最初は適当なソース見繕ってそれをベースに使ってみるとよいでしょう。

## パッケージのインストール
Rオープンソースなので、R本体が提供している機能に加えて、どこぞやかの有能な方々が日々な有用な機能を追加していってくれています。
ユーザーが作成したライブラリーは"パッケージ"としてCRANというサイトにアップされています。
それらの各種追加機能は、パッケージをR上にインストールすることで利用することができます(OSへのインストールではなく、Rの操作としてのインストールです)。

既にインストールされているパッケージは、library()コマンドを実行するか、RStudioを使っていれば右下のペインのPackegesタブで確認できます。
![image01_02.jpg](https://qiita-image-store.s3.amazonaws.com/0/132331/a6d720a7-f52a-4705-d0c3-68cd347518c8.jpeg)

Installボタンを押して、パッケージ名を指定すればCRANからパッケージをダウンロードしてインストールすることができます。
![image01_03.jpg](https://qiita-image-store.s3.amazonaws.com/0/132331/039b3839-426e-5b84-a8c0-adce41532f45.jpeg)

色々やってみていくうちに必要なパッケージが出てくると思うので、必要になったらその都度追加でインストールしていけばよいです。

# オフラインでの環境構築
インターネットに接続できないマシン(お客様先とか)で、R環境を構築したい場合のTipsです。

## Windows
R本体、RStudioはインストーラーがダウンロードできるので、それをDVDに焼くか、どうにかして該当マシンにファイル転送してインストールすればよいです。
ただ、追加で必要なRパッケージのインストールは、上の方法だとWebからダウンロードなのでそのままではNGです。
パッケージをアーカイブファイルとしてダウンロードできるので、必要なパッケージは個別にダウンロードして、そこからインストールすることができます。
RStudioの例だとInstall from:の所でCRANではなくPackage Archive File(.zip; .tar.gz)を選び、インストールしたいパッケージのアーカイブファイルを指定すればよいです。
ただ、この方法だと依存するパッケージは自動でインストールしてくれないので(CRANだとあるパッケージインストール時に他に必要なパッケージがあると勝手にインストールしてくれる！)、ちょっと面倒です。

パッケージをブラウザから個別にダウンロードする場合はこちら。
[Available CRAN Packages By Name](https://cran.r-project.org/web/packages/available_packages_by_name.html)

コマンドでまとめて(依存するものも含めて)ダウンロードもできるらしい。
[miniCRANパッケージを使ってパッケージをオフラインインストールする](http://datasciesotist.hatenablog.jp/entry/2015/03/24/004539)

正式な方法かどうかは分かりませんが、手っ取り早い方法としては...
Windows版にパッケージをインストールすると、Rインストールディレクトリ下のlibraryディレクトリにそのパッケージ関連のファイルが展開されます。
なので、Webに接続できるマシン上で必要なパッケージを一通りインストールしてあげて、libraryディレクトリ以下をまるごとzipで固めて対象マシンに持っていって、ディレクトリごと置き換えてあげます。
とりあえずそれでうまくいってます。

## Linux
おそらくソースをダウンロードしてmakeする必要があると思われる。

参考:
[R Installation and Administration](https://cran.r-project.org/doc/manuals/r-devel/R-admin.html#Installation)

コンパイラとかOSとして必要なものが色々ありそう。	
※実際に試してみたことはないのであしからず。	

# RのバージョンとRStudioの関係
Rは複数バージョンを同一OS上にインストールすることができます。
RStudioではどのバージョンのRを使用するかを選択できます。デフォルトではマシンのデフォルトバージョンとなっています。
Tool - Global Options... から、使用するRのバージョンを選択できます。
![image01_04.jpg](https://qiita-image-store.s3.amazonaws.com/0/132331/c29354ba-d93c-dd36-6367-9556da244b35.jpeg)

# Rソースのバージョン管理
Gitによるバージョン管理もできるようです。
まだ手を出せてないですが、この辺使っていくと色々便利そうです。
[RStudioではじめるGitによるバージョン管理](http://qiita.com/uri/items/6b94609f156173ed43ed)