RとRStudioのインストール

はじめに

ここでは,Dockerを使って,RとRStudioを利用する環境を構築する。R本体は,インターフェイスがコマンドラインなので,必ずしもユーザーフレンドリーではないが,統合環境であるRStudioを用いれば直感的な操作が可能となる。RStudioを介してRを操作することで,コードを編集して実行したり,結果を確認したりといった一連の作業をシームレスに行うことができるので,現在では多くの人がRStudioを使ってRを操作している。

RやRStudioは,Windows版やMac版をローカル環境にインストールして使うこともできるが,分析の再現性や環境構築の簡略化のためにDockerを用いるのがおすすめ。Linuxやコマンドラインに慣れていないと少し難しく感じるかもしれないが,Dockerを使えば,ホストマシンがWindowsであってもMacであっても,完全に同じ環境を作ることができる。

Dockerは,目的ごとに作成された「コンテナ」と呼ばれる仮想環境を動かす仕組み。雑にいえば,パソコン (ホストマシン)の中で,別の小さなパソコン (コンテナ)を動かすようなもの。仮想マシンと違って,コンテナはカーネルをホストOSと共有するため,より軽量で高速。Dockerfileというファイルに,ベースとなるOSイメージを指定し,必要なソフトや設定をインストールするスクリプトを記述することで,コンテナを作成することができる。たとえば,ここで用いるRStudio Serverのコンテナは,UbuntuのベースイメージにR本体やRStudio Serverなどがインストールされており,ユーザーはブラウザでコンテナにアクセスしてRStudioを利用する。コンテナではUbuntuが動いているので,ホストマシンのOSが何であっても完全に同じ環境を再現することができる。

Rocker Projectでは,Rを利用するためのさまざまなバリエーションのコンテナが提供されており,セットアップのコストが最小限ですむ上に,OSに関係なく簡単に同じ環境を構築することができる。ここでは,このプロジェクトで提供されているrocker/rstudioコンテナをベースに,いくつかよく使うものを追加でインストールしたコンテナを作成して用いる。

完全に同じ環境を構築できるということは,分析結果の再現性を担保するという観点から決定的に重要。たとえば,共同研究者の間で同じデータを共有して分析する場合,共同研究者はWindowsを使っていたり,Macを使っていたりするだろう。また,分析に利用するR本体やRのパッケージも,すべての共同研究者が同じバージョンをインストールしているとは限らない。それにより,同じコードを実行しているにもかかわらず分析結果が異なる可能性がある。また,パッケージをアップデートすることにより,以前に得られた分析結果を自分でも後から再現できないということも起こりうる。

このような問題を解決するための方法として考えられるのは,共同研究者の数だけ同じ機種のパソコンを用意し,同じバージョンのソフトウェアをインストールして配布するということだが,もちろんそれは現実的ではない。コストがかかるし,パッケージの追加やアップデートのたびにパソコンを回収したり新しいパソコンを用意したりしなければいけない。Dockerは,物理的なパソコンではなく,Dockerfileを配布することで,どのようなコンピュータでも同じ仮想環境の構築を可能とする。

Dockerを使わずにインストールする方法

Dockerを使わずにRとRStudioをインストールする方法については,高知工科大学の矢内先生のホームページに,非常に丁寧な解説スライドが公開されている。Ubuntu,Mac,Windows版があるので,これらを参考にインストールすると良い。ただし,うまくいかなくても矢内先生に直接質問のメールを送ったりはしないこと。

導入準備

作業はWindwosの場合,WSL2のUbuntuのコマンドラインで行う (ただし,WSL2のUbutuとDocker DesktopのインストールはPowerShellで行う)。Macの場合はターミナルで行う。

Docker Desktopの導入

WSLのインストール

Windowsの場合は,WSL (Windows Subsystem for Linux)が必要。WSLをインストールしていない場合は,PowerShellから次のコマンドでUbuntuをインストール可能。

wsl --install Ubuntu

インストール後,ユーザー名とパスワードを聞かれるので,入力すればUbuntuが利用可能になる。WindowsターミナルでUbuntuを起動することもできるし,PowerShellからwslコマンド,もしくはUbuntuコマンドで,Ubuntuのコマンドラインに入ることもできる。

Docker Desktopをインストール

WSLをインストールして一度ログインしたら,次にDocker Desktopをインストールする。PowerShellから以下のコマンドでインストール可能。

winget install Docker.DokerDesktop

Docker Desktopインストール後は,必ずPCを再起動する。

PC再起動後にDocker Desktopのウィンドウが立ち上がるので,Setting > Resouces > WSL integrationに移動し,Enable integration with additional distros: のUbuntuをオンにする。これで,Ubuntuのコマンドラインからdockerコマンドが使えるようになる。

以下では,とくに断らない限り,Windowsの場合の操作はUbuntuのコマンドラインで行う。

Docker Desktopをインストール

Homebrewを使って,Docker Desktopをインストールする。ターミナルから以下のコマンドを実行。

brew install DockerDesktop

インストール後は,必ずMacを再起動する。

試してみる

Docker Desktopをインストールすれば,Rocker Projectのコンテナをダウンロードして起動することができる。ただし,何も設定していない状態では,データの読込み保存などはできない。また,一度コンテナを終了すると作業内容は消えてしまう。それでも,RStudio Serverがどういうものかを知るために,一度試してみると良い。

Ubuntuのコマンドライン (Windows),もしくはターミナル (Mac)で,以下のコマンドを入力すれば,コンテナのダウンロードと起動が行われる。

docker run --rm -ti -e PASSWORD=yourpassword -p 8787:8787 rocker/rstudio

コンテナが起動したら,ブラウザで, http://localhost:8787を開けばRStudio Serverにアクセスできる。ユーザー名はrstudio,パスワードはyourpasswordでアクセスできる。

gitの設定

gitの設定をしていない場合は,以下のコマンドでユーザー名とメールアドレスを設定する (ここで設定するユーザー名とメールアドレスはgithubのアカウントと同じである必要はない)。

git config --global user.name "****** *****"
git config --global user.email "*******@***.***"

githubのアカウント作成と公開鍵の登録

githubのアカウント作成は必須。だれでも作成できるし,コストもゼロ。アカデミック登録すれば,Proの機能も無料で使える。とくにgithub copilotを無料で利用できるので,学生・教員の方にはアカデミック登録することをおすすめする。

アカウントができたら,秘密鍵と公開鍵のペアを作成して,公開鍵をgithubに登録する。

まず,次のコマンドで秘密鍵と公開鍵のペアを作成する。

ssh-keygen
  1. 鍵を作成する場所を聞かれるが,デフォルトの~/.sshで問題ないので,そのままEnter。
  2. パスフレーズを聞かれるので,設定する場合は入力してEnter。パスフレーズは設定しなくてもかまわない。設定しない場合は何も入力せずにEnter。

これで,~/.sshid_ed25519というファイル (秘密鍵)と,id_ed25519.pub (公開鍵)というファイルが作成される。このうち,公開鍵の方をgithubに登録すれば,秘密鍵を使ってgithubにアクセスすることができる。公開鍵から秘密鍵を復元することはほぼ不可能なので,公開鍵はだれかに知られても問題ない。秘密鍵の方は,ほかの場所にコピーしたりだれかに見られたりすることがないように注意する。

秘密鍵のパスフレーズは必要か?

秘密鍵にパスフレーズを設定しておけば,万が一秘密鍵が漏洩しても,パスフレーズなしでは秘密鍵を使うことができないため,セキュリティは向上する。しかし,秘密鍵にパスフレーズを設定すると,使用する際に毎回パスフレーズを入力する必要があり,かなりの負担になる。秘密鍵のファイルを移動したりコピーしたりしなければ,個人的には秘密鍵にパスフレーズは必要ないと思う。なお,ssh-agentを利用すれば,パスフレーズを記憶させることも可能。

githubに公開鍵を登録するには,githubのwebページ右上のアカウントのアイコンをクリックしてsettingsに入り,SSH and GPG keysを選ぶ。New SSH keyボタンを押せば,TitleとKeyを入力する画面になるので,Titleには適当に入力し,Keyには先ほど作成した公開鍵の内容をコピーして貼り付ける。コマンドラインで,id_ed25519.pubの内容を確認するときには,以下のコマンドを使う。

cat ~/.ssh/id_ed25519.pub

公開鍵が登録できたら,sshコマンドでgithubにアクセスできるか確認する。

ssh git@github.com

成功すれば,以下のようなメッセージが表示される。

PTY allocation request failed on channel 0
Hi tomokazu518! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

Dockerのコンテナ作成と起動

リポジトリのクローン

ホームフォルダに移動して,githubのレポジトリをクローンする。ホームフォルダはWSLでもMacでも同じで/home/ユーザー名。ホームフォルダは~/でもアクセスできる。また,コマンドラインからcdとだけ打つとホームフォルダに移動することができる。

cd
git clone git@github.com:tomokazu518/Research-tools.git

ホームフォルダに,Research-toolsというフォルダができるので,そのフォルダに入る。

cd Research-tools

フォルダの中身を確認するには,lsコマンドを使う。

ls -la

重要なのは,Dockerfileとdocker-compose.ymlの2つのファイル。otherというフォルダにはテンプレートやスクリプトを入れてある。

Dockerイメージのビルド

Research-toolsフォルダで次のコマンドを打てば,イメージをビルドできる。初回のビルドにはかなり時間がかかる。

docker build --rm -f "Dockerfile" -t researchtools:latest "."

コンテナの起動

イメージのビルドが終わったら,次のコマンドでコンテナを起動する。

docker compose up -d

コンテナが起動したら,ブラウザで, http://localhost:8787を開けばRStudio Serverにアクセスできる。ユーザー名とパスワードによる認証は無効にしてある。有効にしたい場合にはdocker-compose.ymlを書き換えれば良い。

chromeでアプリとして登録すれば,デスクトップ版のRStudioとまったく変わらない外観と操作性を実現できる。

セットアップスクリプトの実行

otherフォルダのなかのinit.shを実行すれば,以下の設定が行われる。必要ない部分は削除して実行しても良い。

~/other/init.sh
  • DVCのインストール
  • tinytexのRパッケージと本体のインストール
  • 原ノ味フォントのインストール
  • TexCountのインストール
  • gnuplot-lua-tikz.styのインストール
  • .bashrcと.bash_profileの設定 (PATHの処理)
  • HackGenフォントのインストール (RStudio Serverインターフェイス用)

RStudioの画面

RStudioを起動すると,細かい違いはあれ下のような画面が表示されるはず。

Chromeでアプリとして登録したRStudio Serverの画面

デフォルトでは白背景の配色になっていると思うが,コードを書くときは黒や青背景の方が見やすいので変更している。見た目を変更するには,RStudioのメニューから[Tools]>[Global Options…]を選び,Appearanceで設定する。フォントについては,init.shでインストールしたHackgenフォントがおすすめ。長時間の作業を行う場合には,色やフォントによって作業効率や目の疲れ方がけっこう変わってくるので,いろいろ試して自分にあった設定にしよう。

RStudioの画面は,デフォルトで4ペイン(4分割)。最初はそのまま使っても良いと思うが,画面のレイアウトは比較的自由に変えることができるので,慣れてきたら自分が使いやすいように設定しよう。

各ペインにはタブが複数配置されている。まずは,よく使うものだけ説明する。

  • Sourceペイン: デフォルトでは左上。何もファイルが開かれていない状態では最小化されているので,画面左上の+マークで新しいスクリプト・ファイル(R Script)を作成してみよう。
  • Consoleペイン: デフォルトでは左下。Rにコマンドを入力して実行するCosoleタブ,OS (Docker上のUbuntu)のターミナルを操作するタブ,バックグラウンドの処理をモニタするタブ。
  • Environmentなどのペイン: デフォルトでは右上。Environmentタブには記憶されている変数やデータなどが表示される。Historyタブには実行したコマンドの履歴が表示され,選択して再度実行できる。
  • Filesなどのペイン: デフォルトでは右下。Filesタブには現在のディレクトリにあるファイルのリストが表示される。ファイル名をクリックすればファイルを開くことができる。RのソースコードやデータフレームはSourceペインで開かれる。Plotsタブはグラフなどが表示される場所。

Rで単発のコマンドを実行するときには,Consoleタブで行う。ただし,通常はスクリプト・ファイルにコマンドを書いて一つずつ実行していったり,いくつかのコマンドをまとめて実行したりすることが多い。Consoleでコマンドを実行した場合にも,Histroyタブからスクリプト・ファイルへと実行したコマンドを貼り付けておくと良い。そうすれば,いつでも作業を最初から再現できる。研究では,結果を再現できることが極めて重要。再現性を担保できることは,ExcelではなくRを使うメリットの一つ。

スクリプト・ファイルに書かれたコマンドを実行する場合,Ctrlを押しながらEnterを押す。範囲が選択されていない場合には,カーソルのある行 (コマンドが複数行にまたがっていてもOk)が実行される。範囲を選択してCtrl+Enterを押せば,選択された範囲のコードが順に実行される。

ヘルプの参照

Rのコマンド・ヘルプは?のあとにコマンド名を入力すれば参照できる。ヘルプは,Helpタブ(デフォルトでは右下のペイン)に表示される。知らないコマンドが出てきたらまずはヘルプを読む。英語が苦手でもDeepLで翻訳すればだいたい読める。

たとえば,table関数のヘルプを読みたければ,

?table