2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

windows + docker desktopでclaude-codeが動くデータ分析環境を構築する

Last updated at Posted at 2026-01-16

(タイトルが紛らわしかったので修正しました。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

できたこと.png

この記事で説明すること・しないこと

説明することは以下の通りです。

  • 環境構築の手順や方法について
  • 筆者は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環境を参考にしました。

dockerfile
FROM ubuntu:22.04 

対話モードをオフにし、タイムゾーンを指定する

dockerコンテナを建てる際に対話モードがオンだとエラーになる場合があるので、オフにします。同様にタイムゾーンも指定しておきます。地味ですが、つまづきポイントでした。

dockerfile
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Tokyo

OSを更新し、Pythonをインストールする

前半の更新部分は定石かと思います。後半はPython関係のインストールです。今回はpython3.11としました。理由は前述と同じく、最近のkaggle環境を参考にしました。最後に不要となったディレクトリを削除します。

dockerfile
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をアップグレードしておきます。

dockerfile
# 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をインストールします。

dockerfile
# 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をインストールします。

dockerfile
# Claude Codeのインストール
RUN npm install -g @anthropic-ai/claude-code

データ分析向けのパッケージをインストールする

データ分析関係のPythonライブラリをインストールします。jupyterやscikit-learnなどです。バージョンについては、上述と同じく最近のkaggle環境を参考にしました。目的に応じて適宜、変更して頂ければと思います。

dockerfile
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が起動するようにしています。

dockerfile
# 作業ディレクトリ
WORKDIR /

# デフォルトコマンド
CMD ["jupyter", "lab", "--ip=0.0.0.0", "--allow-root", "--LabApp.token=''"]

compose.ymlを書く

次にcompose.ymlを書きます。ポイントは以下の通りです。

  • ポートはwindowsの8888とコンテナの8888をつなぐ
  • ファイルシステムを共有する
compose.yml
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で決定)
テーマ選択.png

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

あとは画面の指示に従って認証を進めます。途中、メール認証などがあるかもしれませんが、最終的に必要なのは「Authentication Code」という30桁くらいの文字列です。これをターミナルにペーストします。
Authentication_Codeをペースト.png
※途中、6桁の数字を取得したのですが、それはただのログイン認証でした…。私の場合、ログイン後にAuthentication Codeが表示されました。

claudeの認証ができれば、あとはReturnしていくだけでした。
認証後1.png
認証後2.png
認証後3.png

コマンドライン版のClaude Codeが起動しました!
Claude_Code起動.png

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

コンテナの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など)に接続していないか

実行中のコンテナにアタッチする.png

実行中のコンテナ一覧が表示されるので、今回作ったコンテナを選択します。
実行中のコンテナを選択する.png

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

※このやり方だと2つのウィンドウが開いてしまいます…。もっと良いやり方があったら、ぜひコメントを…orz

claude code for vscodeを使ってみる

長い道のりでしたが、最後にclaude code for vscodeを使ってみます。コンテナにアタッチしていることを確認し、[ファイル] => [フォルダを開く]で/workフォルダを開きます。
ファイル_フォルダを開く.png
image.png

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

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

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

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

カーネル選択.png

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

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

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

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

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

Claude Codeタブが開きます。
Claude_Codeタブ.png

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

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

以上です!お疲れ様でした!

おわりに

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

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?