(タイトルが紛らわしかったので修正しました。2026-01-28)
はじめに
windows + docker desktopを使ってclaude-codeが動くデータ分析環境を構築します。サブスクリプションの場合、claude-codeを使うにはPro以上のプランに入る必要があると思います(筆者はProプラン加入)。API従量課金については経験が無いので分かりません。アカウント作成などはご自身の判断でお願いします。
- OS:
- ホスト: windows 11
- コンテナ: ubuntu-22.04
- Claude
- バージョン: 2.0.70 (Claude Code)
- サブスク: Pro
- Docker Desktop
- バージョン: ???(最新版であれば大丈夫かと…)
- その他
- Cursor: 2.3.35 (user setup)
- Python: 3.11
できたこと
- データ分析環境(コンテナ)をdocker desktopで構築しました
- dockerfileやcompose.ymlを作成したので、同様の環境を容易に構築できます(たぶん)
- Cursorでclaude-codeを使えるようにしました
- AI駆動によるデータ分析を一つのエディタ上で行えるので、開発スピード向上が期待(たぶ…
$ docker ps -a
CONTAINER ID IMAGE ... STATUS ... NAMES
xxxxxxxxxxxx claude311c_i ... Up 1 minutes ... claude311c_c
この記事で説明すること・しないこと
説明することは以下の通りです。
- 環境構築の手順や方法について
- 筆者はClaudeのProプランに加入
- (言葉足らずな部分は多々あると思います…暖かい目で見てやってください)
逆に、説明しないことは以下の通りです。
- docker、claude(-code)、cursorなどの詳しい使い方
- ClaudeのAPI従量課金については、経験なし
- データ分析手法、AI駆動開発手法など
環境構築の流れ
- エディタをインストールする
- docker desktopをインストールする
- dockerfileを書く
- compose.ymlを書く
- コンテナを建てる
- 【初回のみ】claudeの認証を行う
- コンテナに接続する
- claude-code for vscodeを使ってみる
エディタをインストールする
cursorをインストールする
今回、エディタはcursorを使います。インストールの手順は割愛します。
拡張機能をインストールする
Cursorに拡張機能をインストールします。とりあえず必須のパッケージは以下の通りです。
- Claude Code for VS Code: エディタ上でClaude Codeを使うため(名称は合ってる)
- WSL: WSLに接続するため(不要かも???)
- Docker: Dockerコンテナに接続するため
- Dev containers: DOckerコンテナに接続するため
以下は開発を効率するための機能です。他にお好みのパッケージがあればそちらでも良いと思います。
- Jupyter
- Python
- Japanese Language Pack for Visual Studio Code
docker desktopをインストールする
docker desktopをインストールします。ここも手順は割愛させてください。
ディレクトリ構造
ディレクトリ構造は以下の通りです。build_contextフォルダにdockerfileとcompose.yml、.envファイルを作成します。build_contextと同じ階層にworkという名前のフォルダを作成します。workはファイルシステムを共有する予定で、分析や開発はwork内で行う想定です。build_context内には余計なファイルは置かない方が良いらしいです。
.
└── project
├── build_context
│ ├── dockerfile
│ ├── compose.yml
│ └── .env
└── work
└── <データやソースコードなど>
dockerfileを書く
dockerfileを書いていきます。概要は以下の通りです。
- OSを指定する
- 対話モードをオフにし、タイムゾーンを指定する
- OSを更新し、Pythonをインストールする
- Node.jsをインストールする
- claude-codeをインストールする
- データ分析向けのパッケージをインストールする
OSを指定する
今回、OSはubuntu-22:04にします。バージョンについては、最近(2025年)のkaggle環境を参考にしました。
FROM ubuntu:22.04
対話モードをオフにし、タイムゾーンを指定する
dockerコンテナを建てる際に対話モードがオンだとエラーになる場合があるので、オフにします。同様にタイムゾーンも指定しておきます。地味ですが、つまづきポイントでした。
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Tokyo
OSを更新し、Pythonをインストールする
前半の更新部分は定石かと思います。後半はPython関係のインストールです。今回はpython3.11としました。理由は前述と同じく、最近のkaggle環境を参考にしました。最後に不要となったディレクトリを削除します。
RUN apt-get update && apt-get install -y \
software-properties-common \
curl \
git \
&& add-apt-repository ppa:deadsnakes/ppa \
&& apt-get update && apt-get install -y \
python3.11 \
python3.11-venv \
python3.11-dev \
python3-pip \
&& rm -rf /var/lib/apt/lists/*
ubuntu-22.04にはデフォルトでpython3.10が入っているので、pythonコマンドを実行するとpython3.10が動いてしまいます。python3.11をデフォルトに設定し、pipをアップグレードしておきます。
# Python3.11をデフォルトに設定
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1 \
&& update-alternatives --install /usr/bin/python python /usr/bin/python3.11 1
# pipのアップグレード
RUN python3.11 -m pip install --upgrade pip
Node.jsをインストールする
claude code用にNode.jsをインストールします。
# Node.js (Claude Code用)
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
&& apt-get install -y nodejs \
&& rm -rf /var/lib/apt/lists/*
claude-codeをインストールする
npm (Node Package Manager: Node.js環境でJavaScriptのパッケージを管理するためのツール) を使ってclaude-codeをインストールします。
# Claude Codeのインストール
RUN npm install -g @anthropic-ai/claude-code
データ分析向けのパッケージをインストールする
データ分析関係のPythonライブラリをインストールします。jupyterやscikit-learnなどです。バージョンについては、上述と同じく最近のkaggle環境を参考にしました。目的に応じて適宜、変更して頂ければと思います。
RUN pip install \
jupyterlab==3.6.8 \
matplotlib==3.7.2 \
numpy==1.26.4 \
pandas==2.2.3 \
scikit-learn==1.2.2 \
(以下略)
最後にワークディレクトリとデフォルトのコマンドを指定します。コンテナをアップしたらjupyterが起動するようにしています。
# 作業ディレクトリ
WORKDIR /
# デフォルトコマンド
CMD ["jupyter", "lab", "--ip=0.0.0.0", "--allow-root", "--LabApp.token=''"]
compose.ymlを書く
次にcompose.ymlを書きます。ポイントは以下の通りです。
- ポートはwindowsの8888とコンテナの8888をつなぐ
- ファイルシステムを共有する
services:
app:
build: .
env_file: .env
ports:
- '8888:8888'
volumes:
- '../work:/work'
tty: true
stdin_open: true
image: claude311c_i
container_name: claude311c_c
volumes:を- '../work:/work'にすることで、windowsのworkとコンテナ/workが共有されます。本来はdockerfile等で/workを作成した方が良いのかもしれませんが、dockerが/workの有無を自動で判別&作成してくれるので、この書き方でも大丈夫なはずです。
コンテナを建てる
ビルドコンテキストが準備できたので、コンテナを建てます。windowsのターミナル(私はGitBashを使用)を開いて、.../project/build_contextに入り、dockerfileなどがあることを確認します。
$ cd /path/to/project/build_context
$ ls -a
. .. .env compose.yml dockerfile
次にdocker compose upでコンテナを建てます。(余談: docker-composeってもう古い書き方なんですね…)
$ docker compose up --build -d
-dオプションを付けているので、アップが完了したらコマンドも返ってくるはずです。
:
✔Image claude311c_i Built
✔Network bc_default Created
✔Container claude311c_c Created
user@hoge:/path/to/project/build_context$ |
docker psでコンテナの状態を確認します。STATUSがUpならOKです。
$ docker ps -a
CONTAINER ID IMAGE ... STATUS ... NAMES
xxxxxxxxxxxx claude311c_i ... Up 1 minutes ... claude311c_c
【初回のみ】claudeの認証を行う
コンテナができたので、claudeの認証を行います。基本的にここは初回のみでOKのはずです。コンテナを建て直すと、再度実施しなければいけないかもしれません。まずはdocker execでコンテナに入ります。
user@hoge:/path/to/project/build_context$ docker exec -it claude311c_c /bin/bash
コンテナに入り、bashが起動するはずです。(フォントなどが少し変わるはず…)
root@xxxxx:/# |
claudeがインストールできているか確認します。
root@xxxxx:/# claude --version
2.0.70 (Claude Code)
claudeコマンドを実行します。
root@xxxxx:/# claude
Clawdさんが出てきます(名前は今、知りました!)。まずはテーマを選びます。(矢印上下でカーソルを移動し、Returnで決定)

次にサインインのためのURLが表示されます。私はブラウザが開かなかったので、URLをコピペしました。

あとは画面の指示に従って認証を進めます。途中、メール認証などがあるかもしれませんが、最終的に必要なのは「Authentication Code」という30桁くらいの文字列です。これをターミナルにペーストします。

※途中、6桁の数字を取得したのですが、それはただのログイン認証でした…。私の場合、ログイン後にAuthentication Codeが表示されました。
claudeの認証ができれば、あとはReturnしていくだけでした。



コマンドラインで開発するならこれでOKですが、エディタを使いたいので次のステップではCursor上でClaude Code for VS Code(名前は合ってる)を使えるようにします。exitでClaude Codeを抜けます。

コンテナのbashに戻ります。コンテナも抜けます。
root@xxxx:/# exit
exit
hoge@huga:/path/to/project/build_context$ |
コンテナに接続する
先ほどはターミナル上でコンテナに入り、Claude-Codeを起動しました。実際の開発を見据えて、エディタ上でclaude-codeが使えるようにします。まずはエディタからコンテナに接続します。コンテナがUpであることを確認します。
$ docker ps -a
CONTAINER ID IMAGE ... STATUS ... NAMES
xxxxxxxxxxxx claude311c_i ... Up x days ... claude311c_c
Cursorアプリを起動し、shift + ctrl + pでコマンドパレットを開きます。検索窓にDev Containers: Attachなどと入力し、Dev Containers: Attach to Running Containerを選択します。表示されない場合は、以下の点をチェックしてみてください。
- コンテナはUpになっているか
- 拡張機能はインストールできているか
- Cursorが既にローカル以外の環境(WSLなど)に接続していないか
実行中のコンテナ一覧が表示されるので、今回作ったコンテナを選択します。

新しいウィンドウが開き、しばらく待つとコンテナに接続されます。画面左下のメニューバーを参照。

※このやり方だと2つのウィンドウが開いてしまいます…。もっと良いやり方があったら、ぜひコメントを…orz
claude code for vscodeを使ってみる
長い道のりでしたが、最後にclaude code for vscodeを使ってみます。コンテナにアタッチしていることを確認し、[ファイル] => [フォルダを開く]で/workフォルダを開きます。


work直下に適当なファイルを作って開きます。私はtest.ipynbを作って開きました1。

拡張機能がコンテナ(ローカルではない) にインストールされていることを確認します。

無い場合は、コンテナにインストールするボタンをクリックする。

セルを作り、!python -Vを実行します。カーネルを選択する画面になります。Python Environmentsを選択します。

Python環境を選択する画面になります。python3.11を選択します。

改めて!python -Vを実行します。想定通りのバージョンが表示されればOKです。

余裕があれば、!pip listやprint("Hello, World!なども実行し、問題ないか確認しておくと良いと思います。

pandasとnumpyをインポートします。claude-codeが正常に動くか確認するのが目的なので、特に意味はありません。

test.ipynbを開いている状態で、右上のあたりにあるclaudeアイコンをクリックします。

チャット入力欄に「test.ipynbでインポートしているライブラリはなんですか?」と入力し、送信します。

今までの環境構築に問題が無ければ、claude-codeがこたえてくれるはずです!pandasとnumpyをインポートしたことをちゃんと検知してくれています。質問文はあえて「インポート」と書いたのですが、大丈夫でした。賢い。

以上です!お疲れ様でした!
おわりに
- データ分析環境(コンテナ)をdocker desktopで構築しました
- dockerfileやcompose.ymlを作成したので、同様の環境を容易に構築できます(たぶん)
- Cursorでclaude-codeを使えるようにしました
- AI駆動によるデータ分析を一つのエディタ上で行えるので、開発スピード向上が期待(たぶ…
- 感想
- 環境構築・イズ・エブリシング(ちがう)
- dockerによるデータ分析環境構築は実践済みでしたが、そこにNode.jsやClaudeを加えました
- 今回はdocker desktopを使いましたが、個人利用外では有料です
- windows + docker "engine" + claude-codeというケースはもっと大変でした
- WSLを挟まねばならず…
- dockerfileの作成などは、かなり生成AIにお世話になりました
- 独学勢にとっては、本当にいい時代になりました
- AI駆動開発の実践自体はこれからなので、いろいろ改善が必要になるかもしれません
-
ここで操作しているのはコンテナのworkディレクトリです。今回、windowsとファイルシステムを共有しているので、windowsの方にもファイルができているか確認しておくことをお勧めします。 ↩




