RとRStudioのインストール

はじめに

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

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

Dockerは,目的ごとに作成された「コンテナ」と呼ばれる仮想環境を動かす仕組み。雑にいえば,パソコンの中で,別のパソコン (仮想マシン)を動かすようなもの。たとえば,ここで用いるRStudio Serverのコンテナは,Linux仮想マシンにRStudio Serverがインストールされており,ユーザーはブラウザでコンテナにアクセスしてRStudioを利用する。コンテナはDockerfileというスクリプトが書かれたファイルから作成されるので,Dockerfileさえ共有すれば,ホストとなるパソコンのOSにかかわらず完全に同じ環境を再現することができる。

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

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

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

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が利用可能になる。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コマンドが使えるようになる。

Docker Desktopをインストール

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

インストール後は,必ず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に登録する。

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

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

これで,id_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

Dockerイメージのビルド

ホームフォルダで次のコマンドを打てば,イメージをビルドできる。

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

コンテナの起動

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

docker compose up -d

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

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

RStudioの画面

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

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

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

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

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

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

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

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

ヘルプの参照

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

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

?table