#0. 背景
私は放射線科専攻医で、秋の学会に向けてR + EZR で統計解析を行うことになりました。ローカル環境を汚したくないので Docker 上で行うことにしたのですが、非常に躓いたので同じように困っている医療関係者も多数いらっしゃるだろうと思い、Qiitaに残すこととしました。
理解が不十分なまま、動いているから許容した箇所もあるため、ご容赦ください。
#0-1. Rとは
皆様御存知の通り、統計解析に特化したプログラミング言語及びその開発実行環境の事です。
#0-2. EZRとは
自治医科大学附属さいたま医療センター血液内科の神田善伸が作成されたRのカスタマイズパッケージです。通常のRではスクリプトを打って操作する必要がありますが、EZRではマウス操作で簡単に医療統計を行うことができます。作者自身がEZRを用いた統計解析の本も出版しておられ、日本語マニュアルが充実していることも魅力です。
#0-3. Dockerについて
Dockerの詳しい仕組みについては省略します。メリットを簡単に言うと、パソコン本体のOS(windows 10/11, macOS, Linux)に依存せず、同じ状態を使い回すことができます。そのため、パソコンを買い替えた際にも同じ状態を維持できますし、他の方が作られた統計解析を使いたいときも環境をそのままもらうこともできます。しかもローカル環境を汚さずに試行錯誤することができます。
#1. 私の環境
m3 macbook Air(最近買い替えたのでローカルを汚したくない...)
OS: macOS Sonoma 14.4.1
メモリ: 16GB
SSD: 512GB
Docker: version 26.1.1
Docker image: rocker/rstudio:4.4.0
#2. macOS側操作
# Homebrewをインストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Hmebrew経由でDocerをインストール
brew install --cask docker
# RとRstudioがインストールされたdocker imageをダウンロード
docker pull rocker/rstudio:4.4
# Docker内で動くGUIアプリを表示(X Window Systemを利用)するためにXQuartzをダウンロード
brew install --cask xquartz
# XQuartzを起動
open -a XQuartz
# DockerコンテナからXQuartzを利用できるように設定を変更する
# setting>Security: Authenticate connections -> OFF, Allow connections from networck clients -> ON
# アプリを⌘cmd + Q で一度終了し、再度アプリを起動
open -a XQuartz
# Display変数が空になっているので、Dockerからアクセスできるように設定
export DISPLAY=:0.0
# Dockerでコンテナを起動
docker run --rm -ti -p 8787:8787 --net host -e DISPLAY=$DISPLAY -v ~/.Xauthority:/root/.Xauthority:ro rocker/rstudio
# --rmを消すと、コンテナをstopした後もコンテナを残すことができる
docker run -ti -p 8787:8787 --net host -e DISPLAY=$DISPLAY -v ~/.Xauthority:/root/.Xauthority:ro rocker/rstudio
#3. Dockerコンテナ内での操作
# aptを最新にアップデート
sudo apt update
# Rcmderをインストールするために基本的なパッケージをインストール
sudo apt install zlib1g-dev cmake libssl-dev libxml2-dev libcurl4-openssl-dev tcl8.6-dev tk8.6-dev
# GUIアプリを使うためにX11をインストール
sudo apt install xserver-xorg
# macOSのDisplayに出力するようにDisplayのパスを通す
export DISPLAY=host.docker.internal:0.0
#4. RStudio内での操作
# ブラウザで localhost:8787 にアクセス
# RStudioにログインする
# ID: rstudio
# PASSWORD: ターミナルに表示されているパスワード
# Rcmdrをインストール(依存関係もインストールされるので非常に時間がかかります
install.packages("Rcmdr", dependencies=TRUE)
# RcmdrPlugin.EZRをインストール(依存関係もインストールされるので非常に時間がかかります
install.packages("RcmdrPlugin.EZR", dependencies=TRUE)
# Rcommanderを呼び出す
library(Rcmdr)
# RcmdrのGUIからtool>load Rcmdr plug-in>RcmderPlugin.EZR をOKにし、設定を保存する
#5. containerをimageとして保存し、使い回せるようにする
# コンテナのIDを確認
docker container ls -a
# containerをimageとして保存
docker commit <container ID> <あなたがimageにつけたい名前>
6. 最後に
エクセルなどの保存された、好きな作業フォルダをマウントして、解析してください。この記事が、皆様のお力になれましたら幸いです。