Ubuntu Weekly Recipe

第527回UbuntuにRStudioをインストールする方法

6月29日に技術評論社からRユーザのためのRStudio[実践]入門が刊行されました。今回は、この書籍をUbuntu環境で勉強するために、⁠UbuntuユーザーのためのRStudio[インストール方法]入門」をお届けします。

RとRStudioについて

コンピュータ言語Rは統計学的計算とグラフ描画用のソフトウェアであり、データ解析から機械学習、レポート作成YouTubeの視聴やTwitterへのツイートに至るまで幅広く応用されている言語です[1]⁠。また、RStudioはR言語向けの統合開発環境(IDE)です。RStudioのデスクトップ版はGUIツールキットとしてQtを採用しており、クロスプラットフォームを意識した作りになっているため、Ubuntuでも動作します。RとRStudioの詳しい解説は冒頭で紹介した書籍や各種サイトを参照してください。

さて、前述のとおりRもRStudioもUbuntuで動きます。Rについては公式リポジトリにパッケージが存在しますので、インストール方法も比較的簡単です。しかしながらRは今風のプログラミング言語と同程度にはリリース周期が短いソフトウェアです。おおよそ1年間隔で3.3.0、3.4.0、3.5.0とバージョンアップしています。Rを使う動機によっては、どのバージョンをどのようにインストールするかを悩む必要が出てくるかもしれません。

RStudioのリリーススケジュールは不明ですが、こちらも短い周期で新しいバージョンがリリースされているようです。デスクトップ版とサーバー版、FLOSS版と商用版など、RStudioもインストールにあたってさまざまな選択肢が存在します。

それもあってかRユーザのためのRStudio[実践]入門ではmacOSとWindowsのインストール方法は紹介されてはいるものの、Linuxについては「Linux版が存在する」ことのみの紹介にとどまっていました。そこで今回はUbuntuにおけるRとRStudioのインストール方法を紹介します。

Rのインストール

例のごとくRのインストール方法にも複数の選択肢があります。Rそのものを開発するわけでも、複数のバージョンを使いたいわけでもないのであれば、主に次のリポジトリのいずれかが選択肢になるでしょう。

  • Ubuntu公式リポジトリ:3.4.4
  • Rプロジェクトのリポジトリ(CRAN版⁠⁠:3.5.1

Ubuntuの公式リポジトリは一度リリースされたあと、特別な事情がない限りメジャーバージョンが変わるようなパッケージの更新は行われません[2]⁠。不具合対応による更新は行われますが、一般的にはUpstreamの最新版に適用されたパッチを、適宜バックポートしていく形になります。よってUbuntu 18.04 LTSの公式リポジトリを使う限り、Rのバージョンは3.4.4のままです。

3.4.4では困る場合、Rプロジェクトのリポジトリを使うことになります。こちらはRプロジェクトがそのリリースに追随するようパッケージを作成しているため、ほぼノータイムで最新版を利用できます。このようなサードパーティのリポジトリを導入する場合、品質によっては既存の公式リポジトリとの整合性に問題が生じたり、パッケージそのものが問題を抱えているなどのリスクを考慮する必要があります。ただし、Rプロジェクトのリポジトリは、Debianのパッケージをベースに作成しており、十分に品質は高い印象です。

もしRプロジェクトのリポジトリを使う場合は、まず次のようにリポジトリとその公開鍵を登録してください。

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
Executing: /tmp/apt-key-gpghome.AgdGGdg0UK/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
gpg: key 51716619E084DAB9: public key "Michael Rutter <marutter@gmail.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1
$ echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" \
    | sudo tee /etc/apt/sources.list.d/cran.list
$ sudo apt update

まず公開鍵の登録についてです。Debianパッケージは、そのバイナリパッケージの正当性を検証できるよう個々のリポジトリの鍵で署名できる仕組みが備わっています。パッケージをダウンロードするクライアント側は、あらかじめリポジトリごとの公開鍵をダウンロードし鍵束に登録しておくことで、aptコマンドが自動的に署名を検証できるのです。公開鍵についてはいろいろな方法で取得可能ではありますが、その経路がセキュアであることが大前提になります。つまりユーザー側は、提示された鍵IDがまさにリポジトリの管理者が提供している鍵IDであることを何らかの方法で信頼する必要があるのです。

リポジトリの管理者しか変更できないようなサイトにおいて、HTTPSでアクセスできるウェブページ上に書かれていることが一般的です。言い方を変えると、それ以外の鍵IDについては利用するべきではありません。たとえば今回、Rプロジェクトのリポジトリの鍵ID「E084DAB9」を登録するコマンドを紹介しています。しかしながら本記事の読者は、このコマンド列を端末にコピー&ペーストして実行すべきではありません。

より正しい対応方法は、提示されたRプロジェクトのリポジトリへ訪れ、そのサイトがリポジトリの管理者によって作成されたページかどうかや、サイトに安全な経路でアクセスしているかどうかを確認し、その上でそのサイトに書かれている鍵IDを使って登録することです。面倒かもしれませんが、常日頃からこのような確認を行なう癖をつけておきましょう。

ちなみにリポジトリとして「bionic-cran35」を指定していますが、これは18.04(bionic)向けにR 3.5.xを提供するリポジトリです。より古いリリースの場合は、名前が違いますので適宜確認してください。ちなみにbionic向けの3.4.xのリポジトリは存在しません。これはUbuntuの公式リポジトリが3.4.xに対応しているからだと思われます。

さて、公式リポジトリとCRAN版リポジトリ、どちらを使う場合も、パッケージの命名ルールは同じです。よって、バージョン以外についてはどちらのリポジトリを使っているかを意識することはあまりないでしょう。

一般的には、Rは次のようにインストールします。

$ sudo apt install r-base-core

R関連のDebianパッケージはおおよそ次の種別にわかれています。

  • r-base-core:R本体[3]
  • r-recommended:CRANにある有用なRパッケージに依存するメタパッケージ
  • r-cran-FOO:CRANにあるRパッケージをDebianパッケージ化したもの
  • r-base-dev:Rパッケージをインストールする際に必要になる開発版パッケージ
  • r-doc-FOO:Rマニュアル(HTML版、PDF版、Info版)

Rは他の言語と同様に、独自のパッケージ管理システムを持っています。そのRパッケージをアーカイブしているR公式のリポジトリがCRAN(Comprehensive R Archive Network)です。Rはinstall.packages()関数を使うことでインタプリターやスクリプトの中からパッケージをインストールできます。また、Ubuntu公式リポジトリでも主だったRパッケージはDebianパッケージ化されており、それらは「r-cran-FOO」のような名前が付けられています。必要に応じてDebianパッケージ版かCRAN版かを使い分けると良いでしょう。

r-base-coreとr-recommendedに属するCRAN系のパッケージは/usr/lib/R/libraryにインストールされます。それ以外のCRAN系のパッケージは/usr/lib/R/site-libraryにインストールされます。install.packages()を実行した場合のインストール先は環境やオプションに依存します。

r-base-devは、install.packages()を呼び出す際に必要になるパッケージをまとめたものです。Rパッケージによってはインストール時に何がしかのコードをコンパイルすることがあります。よってインストール前にあらかじめコンパイラなどを用意しておく必要があるのです。なお、r-base-devは一般的に必要になるものだけをまとめているので、Rパッケージによっては別途インストールが必要な場合もあります。

r-doc-FOOをインストールすればローカルのウェブブラウザーからRのマニュアルを参照できます。任意のウェブブラウザーで(file:///usr/share/R/doc/manual/)を開いてください。

R本体は次のように起動できます。

$ R

R version 3.4.4 (2018-03-15) -- "Someone to Lean On"
Copyright (C) 2018 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R は、自由なソフトウェアであり、「完全に無保証」です。
一定の条件に従えば、自由にこれを再配布することができます。
配布条件の詳細に関しては、'license()' あるいは 'licence()' と入力してください。

R は多くの貢献者による共同プロジェクトです。
詳しくは 'contributors()' と入力してください。
また、R や R のパッケージを出版物で引用する際の形式については
'citation()' と入力してください。

'demo()' と入力すればデモをみることができます。
'help()' とすればオンラインヘルプが出ます。
'help.start()' で HTML ブラウザによるヘルプがみられます。
'q()' と入力すれば R を終了します。

> version
               _
platform       x86_64-pc-linux-gnu
arch           x86_64
os             linux-gnu
system         x86_64, linux-gnu
status
major          3
minor          4.4
year           2018
month          03
day            15
svn rev        74408
language       R
version.string R version 3.4.4 (2018-03-15)
nickname       Someone to Lean On

ちなみにCRANパッケージにあるパッケージをすべてDebianパッケージ化したPPAも存在しますR 3.5版R 3.4版⁠。これはcran2deb4ubuntuというコマンドで構築しているようです。どうしてもDebianパッケージだけで環境を構築したい場合に便利かもしれません。

Debianパッケージ版のRのみを使う限りは、同じシステム上で複数バージョンのRの共存はできません。もし何らかの理由で異なるバージョンのR本体を使い分けたい場合は、Renvまたは各種言語の「なんとかenv」のラッパーとなるanyenvの使用を検討してください。

RStudioのインストール

FLOSS版のRStudioには2種類のリリースが存在します。ひとつはデスクトップアプリケーションとして動作するRStudio Desktop、もうひとつがサーバーアプリケーションとして動作するRStudio Serverです。デスクトップ版とサーバー版の主な違いは、GUIアプリケーションとして動作するかウェブブラウザーから操作するかの違いだけで、オープンソース版を個人で使う限りできることはほぼ変わらないと考えても良いでしょう。RStudioのサイトには商用版も含めた機能比較表が存在します[4]⁠。

2018年7月上旬現在、RStudioには安定版である1.1.xプレビュー版である1.2.xの2系統が存在します。またプレビュー版のデイリービルドもあります。特に理由がなければ1.1.xを使うことになると思いますが、今から学習を始めるのであれば最初から1.2.xを使う選択肢でもいいかもしれません。本記事では1.1.xをベースに解説するものの、インストール手順としては1.2.xとの違いはないものと考えてください。

RStudio Desktopのインストール

デスクトップ版を使う利点はインストールのかんたんさと、起動していている間だけリソースを使用するという電力的なやさしさです。

しかしながらUbuntuの公式リポジトリにあるGUIアプリケーションと異なり、GUIツールキットであるQtやその他のライブラリーをパッケージの中に内包しているためインストールサイズは大きくなっています。またホストシステムとのバージョン不整合による問題、特に日本語入力関連の問題が発生しがちです。

インストール方法は最新のDebianパッケージをダウンロードしてインストールする、これだけです。

$ wget https://download1.rstudio.org/rstudio-xenial-1.1.453-amd64.deb
$ sudo apt install ./rstudio-xenial-1.1.453-amd64.deb

aptコマンドを使ってDebianパッケージをインストールすると依存関係まで含めてインストールしてくれます。またデスクトップ環境であればファイルブラウザーからDebianパッケージファイルをダブルクリックすることでUbuntuソフトウェアが起動しますので、そこからインストールしてもかまいません。

インストールしたらアクティビティから「rstudio」を検索することでデスクトップアイコンが表示されます。クリックすればRStudioが起動するはずです。よく起動するならアイコンを右クリックして「お気に入りに追加」を選んでおくと良いでしょう。

図1 公式版のRStudioのUIは英語のみだが、内部で日本語を表示することは可能
画像

Ubuntu 18.04 LTSとIBusの組み合わせであれば、1.1.xでも1.2.xでも特に問題なく日本語入力も可能です。古いUbuntuを使っていたりFcitxを使いたい場合は、本連載でもおなじみあわしろいくやさんのブログ記事やそこからたどれる過去記事を参照してください。

RStudio Serverのインストール

サーバー版の利点はローカルにRやRStudioをインストールする必要がなく、ネットワークとウェブブラウザーさえあればどの場所・システムからでも使えるという利便性です。またアカウント管理機能もあるので、複数人で同じRStudioを共用できます。サーバー側の潤沢なリソースを使ってRを動かしたい場合に便利です。

その反面、管理方法がデスクトップに比べると若干複雑です。常時起動するのか必要なときのみ起動するのか、ホスト名やTLS対応、アカウント管理はどうするのかなど考えるべきことはけっこうあります。けっこうあるものの、ただインストールして使うだけであればデスクトップ版とほぼ違いはありません。

ちなみにデスクトップ版での懸念点となる日本語入力もウェブブラウザーが対応していれば問題とはなりません、と言いたいところなのですが、日本語文字列を受け取るJavaScript側で問題となるケースもあるようです。

サーバー版の場合は、公式リポジトリにパッケージが存在しないため、RStudioのサイトのDebianパッケージをダウンロードしインストールします。なお、サーバー版であれば、たとえばRocker Projectが提供しているRStudioイメージなど、Docker用のイメージを使う方法もあります。これに関してはまた別の機会に。

$ wget https://download2.rstudio.org/rstudio-server-1.1.453-amd64.deb
$ sudo apt install ./rstudio-server-1.1.453-amd64.deb
(中略)
Created symlink /etc/systemd/system/multi-user.target.wants/rstudio-server.service → /etc/systemd/system/rstudio-server.service.
● rstudio-server.service - RStudio Server
   Loaded: loaded (/etc/systemd/system/rstudio-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-07-07 18:21:52 JST; 1s ago
  Process: 13911 ExecStart=/usr/lib/rstudio-server/bin/rserver (code=exited, status=0/SUCCESS)
 Main PID: 13921 (rserver)
    Tasks: 3 (limit: 4483)
   CGroup: /system.slice/rstudio-server.service
           └─13921 /usr/lib/rstudio-server/bin/rserver

 7月 07 18:21:52 ubuntu-ax2 systemd[1]: Starting RStudio Server...
 7月 07 18:21:52 ubuntu-ax2 systemd[1]: Started RStudio Server.

インストールしたのちに、上記のようにサーバーが起動するところまで確認できれば、localhost:8787にアクセスします。もし別ホストにインストールしているのであれば「localhost」はそのホストのアドレスに置き換えてください。

図2 サーバー版はログイン画面が表示される
画像

ログインアカウントはそのマシンのアカウントが使われます。つまり普段マシンにログインする時と同じアカウント名・パスワードでログインしてください。

図3 ログイン後のUIはデスクトップ版とほぼ同じ
画像
図4 スマートフォンからもアクセスできる
画像

たとえばChromiumからアクセスすれば、Chromecast経由でTVにRStudioの様子を表示できるのです。

RStudio Serverはsystemdのユニットファイルが用意されています。よってsystemdの流儀でサービスを管理できます。

サービスを停止する
$ sudo systemctl stop rstudio-server.service

サービスを起動する
$ sudo systemctl start rstudio-server.service

自動起動を停止する
$ sudo systemctl disable rstudio-server.service

システム起動時に自動的に起動する
$ sudo systemctl enable rstudio-server.service

サービスのログを表示する
$ journalctl -u rstudio-server.service

サーバーそのものに関する設定は主に/etc/rstudio/rserver.confに記述します。たとえば待受ポートはwww-port=8080番ポートに変更できますし、auth-stay-signed-in-days=に任意の日数を指定することであるブラウザーからアクセスした際のログイン画面スキップ期間を30日間から変更できます

詳細はRStudio ServerのAdministration Guideを参照してください。商用版向けのドキュメントなのでFLOSS版では使えない機能にも言及していますが、ある程度は参考になるはずです。

tidyverseをインストールするには

RユーザのためのRStudio[実践]入門ではtidyverseというRパッケージを利用して解説しています。つまり何はなくともまずinstall.packages("tidyverse")を実行するわけです。このtidyverseは特定の目的に合わせた各種Rパッケージの集合体みたいな扱いであり、さまざまなパッケージがインストールされます。中にはコンパイルが必要なRパッケージも存在し、Ubuntuとしては開発用のヘッダーファイルが含まれるDebianパッケージをあらかじめインストールしておく必要もあります。

一般的にはinstall.packages()実行時にディストリビューションごとに必要なパッケージ名を通知してくれる親切設計なRパッケージが多いため、画面の指示に従ってインストールすれば問題ありません。ただ、せっかくなのでtidyverseをインストールする前に最低限のパッケージはインストールしておきましょう。

$ sudo apt install libssl-dev libxml2-dev libcurl4-openssl-dev

あとはRのプロンプトで、次のコマンドを実行するだけです。PCのスペックによってはそれなりに時間がかかります。

> install.package("tidyverse")

Rのプロンプト上、RStudio上のどちらで実行しても問題ありません。Rの場合は次のように「システムにインストールする権限がないのでユーザーのホームディレクトリにインストールするが良いか?」と問い合わせがありますので「yes」と答えておきましょう。これによりinstall.packages()でインストールしたパッケージは~/R/以下に保存されます。

> install.packages("tidyverse")
Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Warning in install.packages("tidyverse") :
  'lib = "/usr/local/lib/R/site-library"' is not writable
Would you like to use a personal library instead? (yes/No/cancel) yes
Would you like to create a personal library
‘~/R/x86_64-pc-linux-gnu-library/3.5’
to install packages into? (yes/No/cancel) yes

R Markdownで必要なパッケージ

RユーザのためのRStudio[実践]入門の第5章ではR Markdownが紹介されています。R MarkdownではHTMLだけでなくPDFを始めとしたさまざまな文書フォーマットに出力が可能なツールです。しかしながらPDFへ出力する場合はTeX環境を構築する必要があります。そこで本書の第5章を読んだUbuntuユーザーが日本語を含むPDF出力もできるよう、Ubuntu 18.04 LTSでのTeX環境構築方法も紹介しましょう。

「紹介しましょう」も何も、次のパッケージ一式をインストールするだけです。

$ sudo apt install texlive-lang-japanese texlive-xetex \
  texlive-luatex texlive-latex-recommended

texlive-xetexとtexlive-luatexは、XeTeXLuaTeXのどちらか一方しか使わないのであれば、もう片方はインストールしなくても問題ありません。今回はLuaTeXのみを紹介します。texlive-latex-recommendedはプレゼンテーション用のBeamerを使いたい場合に必要になります。

LuaTeXを使って日本語文書を出力したい場合は、Rmdファイルのフロントマターに次のように記述します。

output:
  pdf_document:
    latex_engine: lualatex
documentclass: ltjsbook

これだけで日本語PDFを出力できるようになるはずです。

header-includesにはTeXのプリアンブルに記述したい内容を配列にして渡せます。たとえば埋め込み日本語フォントをIPAexフォントからNotoフォントに変えることを考えてみましょう。まずUbuntu側にNotoフォントをインストールしておきます。

$ apt install fonts-noto-cjk fonts-noto-cjk-extra

そして次のようにフロントマターに最後の3行を追記します。

output:
  pdf_document:
    latex_engine: lualatex
documentclass: ltjsbook
header-includes:
   - \usepackage{luatexja-fontspec}
   - \setmainjfont[BoldFont={NotoSerifCJKjp-Bold}]{NotoSerifCJKjp-Regular}
   - \setsansjfont[BoldFont={NotoSansCJKjp-Bold}]{NotoSansCJKjp-Regular}

Notoフォントはサイズが大きいのでビルドにかなり時間がかかるようになりますが、日本語の太字も正しく太字になったはずです。

これらの設定は出力形式をpdf_documentからbeamer_presentationにした場合も有効です。ただしBeamerを使う際はdocumentclassの行は削除してください。

おすすめ記事

記事・ニュース一覧