鶴見教育工学研究所

rocker/binderに日本語設定を追加してApple Silicon (arm64) 向けにビルドしました

タイトルの通りなのですが。今さらですが、Dockerを初めて使ってみました。

Dockerの (大まかな) 仕組みや、現在主流であることはもちろん10年近く前から知ってはいましたが、「作り込んだ環境が保持されない」「ストレージを多く消費する」「仮想化のオーバーヘッドがある」といった印象 (思い込み?) から、使っていませんでした。今回も、自分で使う意図はあまりない1のですが、大学の講義 (標準PCがMac) や研修で、トラブルのないデータサイエンス (RStudio, Jupyter) 環境を配布したい、ということでイメージを作成しました。全部Google Colabでやればいいのですが、他の講義にRStudioを前提としているものもあり、この講義ではRStudio、この講義ではGoogle Colabとバラバラなのもなぁ、ということで「学部の標準データサイエンス環境」を意図しています。2

ベースとして、rockerプロジェクトでテンプレートとして配布されているbinderを使おうと思ったのですが、Dockerfile内ではgeospatialイメージを使用していて、このイメージがamd64 (x64) 用しかありませんでした。もちろん、Apple SiliconのMacでも --platform linux/amd64 オプションを指定すれば動きますが、せっかくなら仮想化にエミュレーションを重ねるよりは、arm64でビルドしたいと考えました。そこで、rockerプロジェクトのGitHubリポジトリをコピーして、改変することにしました。

…そこからが大変で、rockerプロジェクトで公開されているDockerfileをコピペで組み合わせれば動くだろう、と思ったらまぁうまくいかず、結局まる3日くらい試行錯誤してしまいました。作成した環境には、jupyter-rsession-proxyが導入されているので、RStudio ServerはJupyter Labのメニューから起動することになります。

Docker Hubに登録しているので、以下のコマンドでダウンロードし、実行できます。

1
docker pull manabi/jp_binder_arm64

なお、イメージは上記の通りarm64向けにビルドしているので、Apple Silicon搭載のMacでしか (最近のCopilot+PCも対応?) 使えません。また、Rの環境には、筆者が研修や講義でよく紹介するので、radiantパッケージをインストールしています。radiantは多くのパッケージに依存するShinyアプリであるため、Dockerfileから手元でビルドしようとすると、やたらと時間がかかります。

…いろいろ苦労して思ったのですが、やっぱりDockerはいらなくて、(大学教育に関しては) 1年次にHomebrewをベースとした「間違えのない」環境構築をさせて、それ以降は講義ごとに {renv} パッケージやuvコマンドで仮想環境を作るように指導した方が楽そうですね🤪


  1. そもそも普段はVSCodeを使っているので、RStudioもJupyterも使わないのですが。 ↩︎

  2. 一介の非常勤講師が考えることじゃないんですけど🤪でも、せんせー方が誰も「イマドキのデータサイエンス事情」を知らずにデータサイエンス教育をしているので🤪 ↩︎