Rの統合開発環境(Integrated Development Environment, IDE)のデファクトスタンダードともいえるRStudioにはサーバー版の RStudio Server が用意されています。RStudio ServerはWebサーバーベースなのでOS環境(プラットフォーム)への依存性が最小限です。イメージ技術と併用することでプラットフォームをクリーンに保ち、環境の共有が楽になるというメリットがあります。ここでは最小限の知識と手間でRStudio Serverの環境を構築する方法を紹介します。

 

メリット

RStudio Server はRStudio Desktopの使い勝手そのままにLinux上のWebサーバーをベースに動くRStudioです。RStudio Serverを使うと

  • 日本語版Windows環境における文字コードの問題が解決する
  • (18.04LTSより前の)Ubuntu環境での日本語入力問題が解決する
  • macOSでhomebrewを使わなくても済むようになる
  • GPUを利用する環境の構築が楽になる
  • Webブラウザがあればどの環境からも使える

RStudio Desktopが各プラットフォームで抱えている固有の問題を解決することができます。このRStudio Serverを Docker のコンテナ技術を用いることで、Linuxサーバや仮想環境を立ち上げることなくWindows(要Hyper-V)、macOS、Linuxの各プラットフォームのローカル環境上で単一環境のRStudioを実現することができます。

 

“rocker”, the Docker Images

rocker というDockerイメージが公開されています。rockerはベーシックなR単体のイメージをベースに様々なバリエーションが作られています。代表的なイメージは下表の通りです。

Image Description
rocker/r-ver Versioned R (Base R)
rocker/rstudio rocker/r-ver + RStudio Server
rocker/tidyverse rocker/rstudio + tidyverse, devtools
rocker/verse rocker/tidyverse + TinyTex + bookdown, rticles, rJava, jdk

この他に機械学習用のイメージも用意されています。ただし、全てのイメージには日本語ロケールや日本語フォントが含まれていませんので、日本語が必要な場合には追加が必要です。

 

環境構築

Dockerはサーバーだけでなくデスクトップ環境でも利用できますので、以降、デスクトップ環境を前提に簡単に説明します。DockerにはCE(Community Edition)とEE(Enterprise Edition)の二つのエディションが存在しますが、ここではフリー版であるDocker CEを用います。CEとEEの違いについては こちら で確認してください。

 

Dockerのインストール

Dockerのインストールに関しては 公式ドキュメント を参考にしています。

Windows

Windows環境でDockerを使う場合にはHyper-Vが必須です。 公式ドキュメントの環境条件とインストール手順 を参考の上でインストールしてください。

 

Ubuntu

Ubuntuにおけるインストール手順は 公式ドキュメント に記載されています。大まかな手順は以下のようになります。

  1. 旧バージョンをアンインストールする
  2. インストールするための準備
    1. HTTPS経由でリポジトリが使えるように設定する
    2. GPG keyを追加する
    3. fingerprintを確認する
    4. リポジトリを追加する
  3. Docker CEをインストールする
    1. インストール結果を確認する
  4. 動作テスト

 

Dockerの使い方

Docker CEがインストールできましたら。早速、使ってみましょう。例題で使われるHello Worldでは少しつまらないので rocker rocker/tidyverseを使ってみます。

最初にrocker/tidyversepullしますが、環境によってはダウンロードに時間がかかります。

sudo docker pull rocker/tidyverse

ダウンロードとパッケージの解凍が完了したら以下のコマンドでイメージが作成されていることを確認します。

sudo docker images

イメージが確認できたらイメージを以下のコマンドを使って起動します。

sudo docker run -p 8787:8787 -v [host-dir]:[mp] -e PASSWORD=[password] rocker/tidyverse

オプションの詳細は Docker run リファレンス に記載されています。

Option オプション概要
-e 環境変数を指定します(この場合はログインパスワードの指定です)
-d イメージをバックグラウンドで起動します(デタッチドモード)が最初は使わない方が動きが分かりやすいと思います
-p 公開するポート番号を「ホスト側:イメージ側」の形式で指定します
--rm イメージ終了時に自動的にイメージと関連するファイルシステムなどを削除します(デタッチドモードでは指定できません)
-v ホスト側ディレクトリ(絶対パス)をコンテン側ディレクトリ(絶対パス)にマウントします

[host-dir] - イメージ環境にマウントしたいホスト側のディレクトリ(絶対パス) [mp] - イメージ側のマウントポイント(絶対パス) rocker/*のイメージはデフォルトユーザがrstudioですので/home/rstudioディレクトリ配下にマウントポイントを作ることをおすゝめします。

[password] - RStudio Serverへのログインパスワード

イメージが起動したらブラウザでlocalhost:8787にアクセスします。 起動状態は以下のコマンドで確認することができます。

sudo docker ps -a

イメージで加えた変更(Rパッケージの追加、RStudioの設定変更)はイメージを終了させると破棄されてしまいます。変更を保存するにはdocker commitコマンドを利用してイメージを保存してください。IDdocker ps -aコマンドで確認します。

sudo docker commit -m "Comment" ID rocker/tidyverse

 

日本語対応イメージの作成

Tokyo.Rの有志によるrocker/tidyverseの日本語対応のイメージが tokyor/rstudio で公開されていますが、残念ながらこの1年程更新がなく、Rのバージョンが3.4.3で止まっています。日本語対応のrockerが欲しい場合には公開されている Dockerfile を利用してローカルビルドすることにより日本語対応のrockerイメージを作成してください。

 

Dockerfileの例

rocker/tidyverseをベースとして日本語が使えるようにするには以下のようなDockerfileを作成します。

# ベースとするイメージ(任意のrocker/*に変更可能です)
FROM rocker/tidyverse:latest

# OS環境(rockerはdebianベース)に日本語ロケールを追加し切り替えます
ENV LANG ja_JP.UTF-8
ENV LC_ALL ja_JP.UTF-8
RUN sed -i '$d' /etc/locale.gen \
  && echo "ja_JP.UTF-8 UTF-8" >> /etc/locale.gen \
    && locale-gen ja_JP.UTF-8 \
    && /usr/sbin/update-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
RUN /bin/bash -c "source /etc/default/locale"
RUN ln -sf  /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

# 日本語フォントをインストールします
RUN apt-get update && apt-get install -y \
  fonts-ipaexfont \
  fonts-noto-cjk

Dockerfikeの準備ができましたら以下のコマンドで、イメージをビルドします。

sudo docker build -f [dockerfile] -t [containername] .
Option オプション概要
-f Dockerfileを明示的に指定します
-t 作成するイメージ名を指定します

ビルドが完了しましたら、sudo docker runコマンドでイメージを起動してみましょう。引数は前述の通りです。