UbuntuでRStudioを使う

この記事は[RStudio Advent Calendar 2016](http://qiita.com/advent-calendar/2016/rstudio-ide)の6日目の記事です。

## Ubuntuとは

UbuntuとはLinuxのディストリビューションのひとつで,世界中で非常に多くの人が利用しています。オープンであり,誰でも利用可能であり,そしてWebで多くの情報が公開されています。

デスクトップOSとしても十分に機能しますし,Serverとしても十分に機能され支持されています。また各種仮想イメージも準備されています。詳しくは,Ubuntu Japanese Teamのサイトをご覧ください。

[Ubuntuとは | Ubuntu Japanese Team](https://www.ubuntulinux.jp/ubuntu)

## UbuntuでRStudioを利用するメリット

WindowsでもMacでもなくUbuntu上でR/RStudioを利用するメリットですが，色々あります。

1. 基本的な解析環境をオープンソースのみで準備できる
2. utf-8を標準の文字コードでできる(重要)
3. コンパイラが標準で入っている
4. WindowsやMacよりも仮想環境(Dockerなど)を簡単に組める etc...

Rを使う上で文字コードの問題は深刻で，色んな場面で悲鳴をあげることがあります。またコンパイラについても，MacだとXcodeが重かったりWindowsだとパスがうまく通ってなかったりと面倒なことが多いです。また，個人的には分析環境はローカルから切り離したい方なので，VirturalBox(Vagrantで構築)したりDockerとか利用し始めています。これらはWindowsやMacだとちょっと面倒だったりします。

このような理由から，ぜひUbuntuを利用してもらいたいなとよく感じます。Ubuntu自体の紹介などについては省略しますが，ぜひ検索して探してみてください。

## UbuntuでRStudioを使う

本題です。現在いくつかの手段がありますので，主な方法をご紹介します。

### Desktop版のRStudioを使う

#### ダウンロードとインストール
RStudioは主なLunuxディストリビューション向けにも準備されています。もちろんUbuntuも準備されています。まずはRStudioのダウンローとページヘ行きます:

[Download RStudio &#8211; RStudio](https://www.rstudio.com/products/rstudio/download/)

ここで，Ubuntu向けのインストーラをダウンロードしてください。たぶん多くのマシンは64bitだと思いますが，わからない場合は必ず自分のマシンを確認してください。

あとは，ダウンロードしたdebイメージを開いてインストールしてください。これでOKです。

#### 日本語入力への対応

あとはRStudioを起動すれば通常通り使えるのですが，**Ubuntu14.04以降だとこのままだとRStudio上で日本語入力ができません**[^1]。この問題について，あわしろいくやさんが解決法を提案していただいています:

- 16.04の場合: [Ubuntu 16.04 + Fcitx + RStudio 1.0で日本語を入力する方法 - いくやの斬鉄日記](http://blog.goo.ne.jp/ikunya/e/8508d21055503d0560efc245aa787831)
- 14.04の場合: [Ubuntu 14.04 + Fcitx + RStudio 0.99で日本語を入力する方法 - いくやの斬鉄日記](http://blog.goo.ne.jp/ikunya/e/ca6fd08bb8f304ccb90362b7d78b560c)

[^1]: 正しくはインプットメソッドのFcitxとRStudioに組み込まれているQtに関する問題とのことで，このあたりは自分には非常に厳しいです。本文にリンクを載せているあわしろいくやさんの記事をご覧ください。ありがとうございます。

これで，問題なく日本語入力できるようになります。

### RStudio Serverを使う

RStudioはServer版が提供されていて，ブラウザ経由で利用します。とはいえ，実際使っていく時にはその差異はほとんどありません[^2][^3]。普通にRStudoのデスクトップ版を使っているのであれば，全く問題なく使いこなせるでしょう。

[^2]: RStudioのバージョンが同じであれば，画面の見た目も機能もほぼ一緒です。ただServerなのでServer側にファイルをアップロードするボタンなどがついてたりしますが，あまり気にならないでしょう。
[^3]: なお，Server版はLinuxのみです。

実際にネットワーク上のサーバーに設置することも可能ですが，localhostで使うというのもできます。ここではlocalhostでの利用を前提に説明します[^4]。

[^4]: ネットワーク上，特にオープンな場所に設置するには，当然ですがちゃんとしたセキュリティ設定とサーバーに関する知識が必要になってきます。このあたりは記事の範囲を超えますので触れませんが，Pro版の[公式ドキュメント(pdf)](https://s3.amazonaws.com/rstudio-server/rstudio-server-pro-1.0.44-admin-guide.pdf)が参考になるかもしれません。

#### RStudio Serverのインストール

基本的な流れは以下のようになります:

1. マシンにRをインストール
2. RStudio Serverの.debを取得
3. RStudio Serverのインストール

Rのインストールは省略します。.debの取得とインストールについては本家のドキュメントに手順が書いてあります:

[Download RStudio Server &#8211; RStudio](https://www.rstudio.com/products/rstudio/download-server/)

ここにあるコマンドをローカルの端末で実行すれば，ローカルのマシンに直接RStudio Serverがインストールされます[^5]。あとはブラウザを起動し，`localhost:8787`へアクセスするとログイン画面が出てくるはずです。

[^5]: 紹介しておいてなんですが，現時点でローカルのマシンに直接Server版をインストールするメリットはないと思います。後で触れますが，仮想マシン，もしくはコンテナで準備するのがいいでしょう。

ログイン名とパスワードは，そのLinuxマシンのユーザーのアカウントとパスワードとなります。

#### Vagrantを利用してRStudio Serverを準備

Server版を利用する最大のメリットは，様々な仮想化技術を利用して自動的に環境を構築できることだと私は思ってます。まず，Vagrantを利用してRStudio Serverを準備する方法を紹介します。

基本的な流れは以下のようになります:

1. マシンにVirtualboxとVagrantをインストール
2. 適当な場所にディレクトリを作り，Vagrantfileを準備
3. Vagrant up

1については省略します。2以降については，以前Qiitaに記事を書いてまとめたので参照してください:

[Vagrantでローカルの仮想マシンにRStudioServer環境を作る - Qiita](http://qiita.com/kazutan/items/6048fa8d46683dcad788#%E4%BB%AE%E6%83%B3%E7%92%B0%E5%A2%83%E3%81%A7%E3%83%9E%E3%82%B7%E3%83%B3%E3%82%92%E6%A7%8B%E7%AF%89)

リンク先にあるRStudioのバージョンは適宜変更してください。個人的にはUbuntuでRStudioを利用する場合，一番使いやすいと感じてます。Vagrantfileについては，頑張って調べてください…。

#### Dockerを利用してRStuido環境を準備

コンテナ型仮想環境であるDockerを利用して準備することも可能です。これについても，以前Qiitaに記事を書いてまとめたので参照してください:

[Dockerを利用してRStudio ServerでRStan環境を準備する](http://qiita.com/kazutan/items/f1447cbabed8d4dd50b8)

この記事ではRStan環境を構築する内容ですが，選択するDockerイメージを他のもの(たとえば`tokyor/rstudio`)に差し替えてもらえればOKです。

この方法は非常に手軽で，さくっと環境が構築することができます。ただDockerなのでどちらかというとテスト環境向きだと思うので，使い込んでいくにはちょっと厳しいかなと感じてます。

## まとめと問い合わせについて

個人的には，まずはデスクトップ版のRStudioをUbuntuで使ってもらいたいなと思います。慣れてきたら，ぜひVagrantなどを利用してみて自分好みの環境を簡単構築できるVagrantfileやDockerfileを作ってみるというのが楽しいですし便利だと思います。

なお，私はエンジニアではないので情報が不十分な点があるでしょうし，問い合わせについてちゃんとお答えできないかも知れません…できるかぎり頑張りたいと思いますが，ぜひコメントをお願いします。

**Enjoy!**