DockerコンテナによるVS CodeでのRコーディング
Rコードを共有したのに、「私のマシンでは動くのに…」という問題のデバッグに何時間も費やしたことはありませんか?Dockerコンテナは、コード用の輸送コンテナのようなものです。R環境、ライブラリ、依存関係を1つのボックスにパッケージ化し、どこでも同じように動作させることができます。Docker Hubには何万もの事前構築イメージがあり、すぐに使える環境が公開されているため、手動インストールの手間を省けます。このチュートリアルでは、VS CodeとDocker Desktopを使って、隔離された再現可能な環境でRを実行する方法を学びます。
主要な概念
- Docker Desktop - コンピュータ上でコンテナを実行し、隔離された環境を管理するアプリケーション
- Dev Container - Dockerコンテナ内で完全なIDEサポートでコーディングできるVS Code機能
- コンテナ隔離 - コードは別のLinux環境で実行され、プロジェクトフォルダのみが見え、コンピュータ全体は見えません
- Rocker - R開発用に特別に設計された事前構築Dockerイメージ
必要なもの
- VS CodeでRコーディングを完了
- GitHub Desktopの基本を完了
- 20〜25分
ステップ1:Docker Desktopをインストール
- Docker Desktopダウンロードページにアクセス
- Download for Windowsをクリック(またはシステムに基づいてMac/Linux)
- インストーラーを実行し、インストールウィザードに従う
- プロンプトが表示されたら、WSL 2を有効にする(Windowsユーザー)またはデフォルト設定を受け入れる
- インストール後、Docker Desktopを起動
- Dockerエンジンが起動するまで待つ(左下に緑色のステータスインジケーターが表示されます)
ステップ2:Dev Containers拡張機能をインストール
- VS Codeを開く
- 左サイドバーの拡張機能アイコンをクリック(または表示 > 拡張機能をクリック)
- 検索ボックスに
dev containersと入力 - MicrosoftのDev Containersを見つける
- インストールをクリック
ステップ3:GitHub DesktopでVibeプロジェクトをクローン
- GitHub Desktopを開く
- File > Clone repositoryをクリック
- URLタブをクリック
- Repository URLフィールドに貼り付け:
https://github.com/gexijin/vibe - プロジェクトを保存する場所を選択(Local Pathフィールド)
- Cloneをクリック
- GitHub Desktopが選択した場所にプロジェクトをダウンロードします
ステップ4:VS Codeでプロジェクトを開く
- VS Codeでファイル > フォルダーを開くをクリック
- クローンした
vibeフォルダに移動 - フォルダーの選択をクリック
- エクスプローラーサイドバーにプロジェクトファイルが表示されます
ステップ5:コンテナで再度開く
- 右下に通知が表示されます:Folder contains a Dev Container configuration file
- Reopen in Containerをクリック
- 通知が表示されない場合は、左下隅の緑色のアイコンをクリック
- メニューからReopen in Containerを選択
- VS Codeがコンテナをビルドします(初回は5〜10分かかります)
- ビルドステップを示す進行通知が表示されます
- 完了すると、緑色のアイコンにDev Container: R in Dockerと表示されます
注: コンテナにはR拡張機能とlanguageserverパッケージが自動的に含まれます。Dockerfileとdevcontainer.jsonがこれを処理します。
ステップ6:コンテナ環境を理解する
これでLinuxコンテナ内でコーディングしています。これが何を意味するか探索しましょう。
- ターミナル > 新しいターミナルをクリックしてコンテナ内のターミナルを開く
- 現在の場所を確認:
pwd
/workspaces/vibeと表示されます - これはコンテナ内のプロジェクトフォルダです。
- ファイルをリスト:
ls
プロジェクトと同じファイルが表示されます:R/、.devcontainer/、README.mdなど。
- 一つ上のディレクトリに移動してみる:
cd ..
ls
vibe/だけが表示されます - コンテナは隔離されています。コンピュータの他のフォルダ、デスクトップ、ドキュメントにはアクセスできません。この隔離により、R環境がクリーンで再現可能になります。
- プロジェクトフォルダに戻る:
cd vibe
ステップ7:Rコードを行ごとに実行
コンテナには一般的なパッケージ付きのRがプリインストールされています。シンプルなデータ分析スクリプトを実行しましょう。
- VS Codeエクスプローラーで
R/iris_analysis.Rに移動 - クリックしてファイルを開く
- irisデータセットを分析するRコードが表示されます
- 最初の行を選択:
data(iris) Ctrl+Enter(Windows/Linux)またはCmd+Enter(Mac)を押して実行- Rターミナルが開いていない場合、最初に作成され、2回目でコードが実行されます
- 各行を1つずつ実行し続ける
head(iris)を実行すると、ターミナルに最初の6行が表示されますsummary(iris)を実行すると、統計的な要約が表示されますhist()コマンドを実行すると、ヒストグラムプロットが別ウィンドウで開きます- 複数の行を選択して
Ctrl+EnterまたはCmd+Enterで一緒に実行することもできます
ステップ8:アプリを実行
プロジェクトには対話型ヒストグラムを作成するデモShinyアプリが含まれています。
- VS Codeエクスプローラーで
R/app.Rに移動 - クリックしてファイルを開く
- Shiny Webアプリケーション用のコードが表示されます
- エディターウィンドウの右上に▶ボタンを探す
- その横のドロップダウン矢印をクリックしてRun Shiny Appを選択
- アプリが起動し、VS Codeが自動的にポート3838をフォワードします
- 通知が表示されます:Open in Browser
- Open in Browserをクリック
- ShinyアプリがWebブラウザで開きます
- スライダーを動かしてヒストグラムのビン数を変更 - チャートがリアルタイムで更新されます
ステップ9:簡単な変更を加える
アプリを変更して開発がどのように機能するか見てみましょう。
- アプリを実行したまま
- VS Codeで
R/app.Rを編集 - 16行目を見つける:
titlePanel("Old Faithful Geyser Data") - 以下に変更:
titlePanel("初めてのR Dockerアプリ")
- ファイルを保存(ファイル > 保存)
- Shiny拡張機能が自動的にアプリをリロードします
- ブラウザを更新(または自動的に更新される場合があります)
- タイトルがカスタムテキストで表示されます
ステップ10:Dockerfileを理解する(オプション)
- VS Codeエクスプローラーで
.devcontainer/Dockerfileに移動 - クリックしてファイルを開く
- 完全な設定が表示されます:
# Docker Hubベースイメージを選択
FROM rocker/shiny-verse:latest
# 1. Rパッケージに一般的に必要なシステム依存関係
RUN apt-get update && apt-get install -y \
libcurl4-openssl-dev libssl-dev libxml2-dev git curl && \
rm -rf /var/lib/apt/lists/*
# 2. VS Code統合用のRパッケージ:言語サーバー + デバッガー
RUN R -q -e 'install.packages(c("rstudioapi", "languageserver"), repos="https://cloud.r-project.org")'
# 3. NodeSourceからNode.js LTSをインストール
RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - \
&& apt-get install -y nodejs \
&& npm install -g npm@latest
# 4. Claude Codeをグローバルにインストール
RUN npm install -g @anthropic-ai/claude-code
# 5. Shinyサーバーポートを公開
EXPOSE 3838
重要な部分:
FROM rocker/shiny-verse:latest- R、Shiny、tidyverseがプリインストールされたベースイメージRUN apt-get install- Rパッケージ用のLinuxシステムライブラリRUN R -q -e 'install.packages(...)'- Rパッケージを永続的にインストールRUN curl... && apt-get install -y nodejs- Claude Codeを実行するために必要なNode.jsをインストールRUN npm install -g @anthropic-ai/claude-code- AIアシスタンス用にClaude CodeをグローバルにインストールEXPOSE 3838- Shinyアプリ用にポート3838を開く
使用できる他のRockerイメージ:
rocker/r-ver:4.5.3- Rのみ(特定バージョン)rocker/rstudio:latest- RとRStudio Serverrocker/tidyverse:latest- Rとtidyverseパッケージrocker/shiny-verse:latest- RとShinyとtidyverse(使用中)
ベースイメージを変更した後、コンテナを再ビルドして変更を適用してください。
ステップ11:DockerイメージにRパッケージをインストール(オプション)
Rコンソールでインストールしたパッケージ(install.packages())は一時的で、コンテナを再ビルドすると消えます。パッケージを永続的にするには、Dockerfileに追加してください。
- VS Codeエクスプローラーで
.devcontainer/Dockerfileに移動 - クリックしてファイルを開く
- 他の’install.packages’の行の下に新しい行を追加して
data.tableパッケージをインストール:
RUN R -q -e 'install.packages("data.table", repos="https://cloud.r-project.org")'
- ファイルを保存(ファイル > 保存)
- 左下隅の緑色のアイコンをクリック
- メニューからRebuild Containerを選択
- VS Codeが新しいパッケージでコンテナを再ビルドします(2〜5分かかります)
- 確認するには、Rターミナルを開いて入力:
library(data.table)
エラーなく読み込まれれば、パッケージは永続的にインストールされています。
次のステップ
- 新しいRスクリプトを作成 -
R/フォルダに新しい.Rファイルを作成し、mtcarsやirisなどの組み込みデータセットを使用してデータ分析コードを書く - Rパッケージをインストール - Dockerfileを編集してコンテナを再ビルドして、必要なパッケージを追加
- tidyverseを探索 - サンプルデータセットを使用して
dplyrでデータ操作、ggplot2で可視化を試す
トラブルシューティング
- Docker Desktopが実行されていない - Docker Desktopを開き、コンテナを再度開く前に緑色のステータスインジケーターを待つ
- コンテナビルドが失敗 - インターネット接続を確認。最初のビルドは約2GBダウンロードします。Rebuild Containerをクリックして再試行
- ポート3838がすでに使用中 - そのポートを使用している他のアプリを停止するか、
.devcontainer/devcontainer.jsonでポートを変更
ワークフロー概要
このセットアップにより、プロフェッショナルなR開発環境が得られます:
- VS CodeがシンタックスハイライトとIntelliSenseを持つコードエディターを提供
- DockerコンテナがRとすべての依存関係を持つ隔離されたLinux環境を実行
- Rockerイメージ(
rocker/shiny-verse)がR、Shiny、tidyverse、開発ツールを含む - Dev Container設定(
.devcontainer/)がRデバッグと言語サポート用のVS Code拡張機能を自動的にインストール - ポートフォワーディングによりコンテナ内で実行されているShinyアプリにブラウザからアクセス可能
日常のワークフロー
すべてがセットアップされたら、日常のルーティンは以下の通りです:
- Docker Desktopを起動 - アプリを開いて緑色のステータスインジケーターを待つ(Dockerが実行されている必要があります)
- VS Codeを開く - VS Codeを起動してプロジェクトフォルダを開く
- コンテナで再度開く - まだコンテナ内でない場合、緑色のアイコン(左下)をクリックしてReopen in Containerを選択
- コードを書いて実行 -
.Rファイルを編集し、Ctrl+Enter/Cmd+Enterで行ごとに実行、またはShinyアプリを▶ Run Shiny Appボタンで実行 - 作業を保存 - コードファイル(
.R、.Rmd)はコンピュータに保存され、セッション間で永続 - コミットしてプッシュ - GitHub Desktopを使用して変更をコミットし、リポジトリにプッシュ
Steven Geが2025年12月7日に作成。