3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

renvとdockerによるRの分析環境構築

Last updated at Posted at 2020-06-13

2021/10/17追記

いろいろ考え直したことがあり、新しい記事を書いた。

概要

Rを使う必要に迫られ、自分なりに環境を準備した際のメモ。以下の条件を満たす環境を目指す。

1. ローカルの環境を汚したくない
2. Rのバージョンを明確に指定可能、なおかつ適宜変更可能
3. 利用するパッケージをプロジェクトごとに管理可能(pythonにおけるvenvのイメージ)
4. 複数のプロジェクトで同じパッケージを利用する際、一度のインストールで済む

1,2は使いたいバージョンのRがインストールされたdockerイメージを準備すれば解決。3はrenvというRのパッケージをインストールするのが便利。4docker runの際に適切なオプションを指定する。

環境

私の環境は以下の通り。dockerを利用するので他の環境でも概ね問題ないはず。

  • windows 10, version 2004
  • Ubuntu 18.04 LTS (WSL2)
  • docker 19.03.8 (Docker Desktopではない)

dockerイメージの準備

以下、必要なファイルの内容について解説する1。まずはDockerfile。

Dockerfile
FROM r-base:4.0.0
COPY ./entrypoint.sh /
COPY ./init.R /
RUN apt update && \
    apt install -y  mecab mecab-ipadic-utf8 fonts-ipafont libmecab-dev && \
    apt install -y  libcurl4-openssl-dev libssl-dev libxml2-dev && \
    Rscript /init.R && \
    chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

1行目のr-base:4.0.0はRの公式dockerイメージ。別のバージョンが必要なら4.0.0の部分を変える。利用予定のRのパッケージが依存する機能はapt installでインストールしておく。

Rscriptで実行しているinit.Rの内容は以下の通り、renvをインストールするのみ。

init.R
install.packages("renv")

ENTRYPOINTで指定しているentrypoint.shの内容は以下の通り。/syncというディレクトリに移動してRを起動する。

#!/bin/bash
cd /sync
R

あとはローカルでビルドしてもいいが、私はGithubにpushしたらDockerHubで自動的にビルドされるよう設定しているのでそれを利用する。プライベートリボジトリではないので、誰でもdocker pullできる2

dockerイメージの利用

まずはプロジェクトのフォルダに移動。dockerが使える環境なら、以下のコマンドでRが起動する。末尾のタグでRのバージョンを変えられるようそのうち準備したい(まだlatestしかない)。

docker run -it --rm -v $(pwd):/sync -v $HOME/.renv:/root/.local/share/renv dr666m1/myr:latest

-vが2つあるが、1つ目はカレントディレクトリをdockerコンテナと共有している。2つ目はインストールしたRのパッケージの保存先を、ローカルの$HOME/.renvに指定している。これを指定しておくことで、別のプロジェクトで同じパッケージを利用する際に無駄なインストールが走らない。

renvの使い方について詳しい説明はしないが、初回はrenv::init()でプロジェクトの初期化をすること。

私の使い方

エディタはneovimを使うことが多いため、neotermを起動して以下3のように利用している。右半分でコードを書き、左半分でRを起動してコードを実行している。グラフはpngなどで保存して見に行くことになるため若干手間だが、今のところ好きなエディタを使えるメリットの方が大きい。
qiita.png

  1. ファイルは全てGithubにも置いておく。

  2. とりあえずタグはlatest。Rのバージョンごとにタグを変えたら後々便利だろうとは思っている。

  3. shellがfishだからdocker runオプションの書き方が、上に記載したものと若干異なる。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?