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版)
[3] 過去の互換性からr-baseというパッケージも存在しますが、これはr-base-coreとr-recommendedに依存しているだけのメタパッケージです。よって両方を明示的にインストールするのであれば、r-baseのインストールは不要です。ちなみにr-base-coreはr-recommendedに依存はしておらず、Recommendsフィールドにのみ記述してます。つまり「sudo apt install --no-install-recommends r-base-core
」と実行することで、CRANパッケージをまったくインストールしない環境を構築できます。ただし後述のRStudioがr-baseにRecommendsしているので、RStudioインストール時にも注意が必要です。
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] 。
[4] FLOSS版のライセンスはどちらもAGPLv3 です。また本記事では商用版については考慮していません。サポートが必要な場合や多人数が関わるプロジェクトで利用する場合、もしくは金銭的な形でプロジェクトに貢献をしたい場合は、商用版の利用を検討すると良いでしょう。
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=80
」で80番ポートに変更できます し、「 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は、XeTeX とLuaTeX のどちらか一方しか使わないのであれば、もう片方はインストールしなくても問題ありません。今回は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
」の行は削除してください。