【備忘録】WindowsでのClaude codeマルチエージェントシステム基盤としての Dev Container環境構築について


## はじめに

この記事は、Windows環境でMulti-Claude AI開発環境をDev Containerで構築した際の **個人的な備忘録** です。

実際に試行錯誤しながら動作する環境を構築できた手順をまとめていますが、環境によっては異なる結果になる可能性があります。参考程度にご活用ください。

また、本文章はClaude Sennot 4を用いて生成したものを、人間の手によって修正したものになります。ところどころ日本語が自然じゃない場合がありますがご愛嬌ということで。

## 謝辞

この環境構築の背景としては下記があります。：

- **@sutaminajing40** さん: [brew 一発で任意のプロジェクトに対応する「Multi-Claude」マルチエージェントシステムを作ってみた](https://qiita.com/sutaminajing40/items/bef8b822a1f58aac842a)
- **@akira_papa_AI** さん: [【tmuxでClaude CodeのMaxプランでAI組織を動かし放題のローカル環境ができた〜〜〜！ので、やり方をシェア！！🔥🔥🔥🙌☺️](https://qiita.com/akira_papa_AI/items/9f6c6605e925a88b9ac5)

お二方の技術共有を見て、windows環境の自分でもdocker環境で実現したいな！ということで構築しました。また、技術共有しようと思ったのもこれがあったためです。素晴らしい技術共有心より感謝いたします。

---

## 📖 目次

1. [導入概要](#1-導入概要)
2. [事前準備](#2-事前準備)
3. [基盤構築](#3-基盤構築)
4. [Dev Container環境構築](#4-dev-container環境構築)
5. [Multi-Claude環境構築](#5-multi-claude環境構築)
6. [運用の基本](#6-運用の基本)
7. [Docker Hubへのアップロード](#7-docker-hubへのアップロードオプション)

---

## 1. 導入概要

### 🎯 このガイドで実現できること

- **セキュアなMulti-Claude環境** - Dev Containerで隔離実行
- **AI組織の自動監視** - cronによる定期チェック
- **快適な開発体験** - VS Code Dev Containersで直感的操作
- **環境の完全再現** - 設定の共有が可能

### 🏗️ 構築する環境の全体像

```
Windows 10/11
├── Docker Desktop
├── WSL2 (Ubuntu 22.04)
├── VS Code + Dev Containers拡張
└── Multi-Claude Container
    ├── Node.js v22.16.0 (nvm管理)
    ├── Claude Code v1.0.30
    ├── Multi-Claude System
    ├── tmux (セッション管理)
    └── 完全日本語対応
```

---

## 2. 事前準備

### 🔍 システム要件

- **OS**: Windows 11 64bit / Windows 10 64bit (ビルド19041以上)
- **メモリ**: 16GB以上推奨 (最低8GB)
- **ストレージ**: 30GB以上の空き容量
- **CPU**: 64bitプロセッサ (SLAT対応)

### 🔑 Claude認証の準備

Claude Codeの認証には以下のいずれかの方法が利用できます：

#### 方法1: Claude Pro/Maxプラン（推奨）
- Claude.aiのPro または Max プランに加入済みの場合
- 追加のAPIキー取得は不要
- 認証時にClaude.aiアカウントでログイン

#### 方法2: Anthropic Console (API)
1. **Anthropic Console にアクセス**
   - https://console.anthropic.com/
   
2. **APIキー作成**
   - 「API Keys」→「Create Key」
   - キー名を設定（例：Multi-Claude-Dev）
   
3. **APIキーを保存**
   - 後で使用するため安全に保存

:::note info
**認証方法の選択**
Pro/Maxプランをお持ちの場合は、方法1のサブスクリプション認証が簡単でお勧めです。
APIを直接使いたい場合や、より詳細な制御が必要な場合は方法2をお選びください。
:::
---

## 3. 基盤構築

### 🔧 WSL2セットアップ

1. **PowerShellを管理者権限で開く**
   ```
   Windows + X → 「Windows ターミナル (管理者)」
   ```

2. **WSLインストール**
   ```powershell
   wsl --install
   ```

3. **再起動後、WSL2をデフォルトに設定**
   ```powershell
   wsl --set-default-version 2
   ```

### 🐳 Docker Desktop インストール

1. **公式サイトからダウンロード**
   - https://www.docker.com/products/docker-desktop/

2. **インストーラーを管理者として実行**

3. **初期設定で以下を選択**
   - ☑️ **「Use advanced settings」**
   - ☑️ **「Update to the latest version of WSL 2 from Microsoft」**

### ✅ 動作確認

```bash
# WSLを開く
wsl

# Dockerテスト
docker --version
docker run hello-world
```

---

## 4. Dev Container環境構築

### 🛠️ VS Code準備

1. **Dev Containers拡張機能をインストール**
   - VS Codeを開く
   - 拡張機能タブ (Ctrl+Shift+X)
   - 「Dev Containers」を検索してインストール

### 📁 プロジェクトセットアップ

1. **WSLで作業ディレクトリ作成**
   ```bash
   mkdir -p /mnt/c/MultiClaude-Project
   cd /mnt/c/MultiClaude-Project
   ```

2. **Dockerfileを作成**
   ```bash
   nano Dockerfile
   ```

   **Dockerfile内容:**
   
   :::note info
   **設定のカスタマイズについて**
   - `your_password_here`: claudeユーザーのパスワードを任意の値に変更してください
   - `<container-name>`: 任意のコンテナ名を入力してください（例：multi-claude-dev）
   :::

   ```dockerfile
   FROM ubuntu:22.04

   # 環境変数設定
   ENV DEBIAN_FRONTEND=noninteractive
   ENV TZ=Asia/Tokyo
   ENV NVM_DIR=/home/claude/.nvm
   ENV NODE_VERSION=22.16.0

   # 基本パッケージインストール
   RUN apt-get update && apt-get install -y \
       build-essential \
       curl \
       wget \
       git \
       vim \
       nano \
       tmux \
       htop \
       cron \
       sudo \
       ca-certificates \
       gnupg \
       locales \
       unzip \
       tree \
       && rm -rf /var/lib/apt/lists/*

   # 日本語環境設定
   RUN locale-gen ja_JP.UTF-8
   ENV LANG=ja_JP.UTF-8
   ENV LC_ALL=ja_JP.UTF-8

   # 開発用ユーザー作成
   RUN useradd -m -s /bin/bash claude \
       && echo 'claude:your_password_here' | chpasswd \
       && usermod -aG sudo claude \
       && echo 'claude ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

   # nvmインストール
   USER claude
   WORKDIR /home/claude

   RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash \
       && bash -c "source ~/.nvm/nvm.sh && nvm install ${NODE_VERSION} && nvm use ${NODE_VERSION} && nvm alias default ${NODE_VERSION}"

   # PATH設定
   RUN echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc \
       && echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.bashrc \
       && echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' >> ~/.bashrc

   # Claude Code インストール
   RUN bash -c "source ~/.nvm/nvm.sh && npm install -g @anthropic-ai/claude-code"

   # Multi-Claude インストール
   RUN git clone https://github.com/sutaminajing40/multi-claude.git \
       && cd multi-claude \
       && chmod +x install.sh \
       && chmod +x bin/*.sh \
       && ./install.sh

   # PATH追加
   RUN echo 'export PATH=$PATH:/home/claude/multi-claude/bin' >> ~/.bashrc

   # tmux設定
   RUN cat > ~/.tmux.conf << 'EOF'
   # Multi-Claude用tmux設定
   set -g prefix C-a
   unbind C-b
   set -g base-index 1
   setw -g pane-base-index 1
   set -g mouse on

   # ウィンドウ分割
   bind | split-window -h
   bind - split-window -v

   # ステータスバー
   set -g status-bg colour234
   set -g status-fg colour137
   EOF

   # 作業ディレクトリ作成
   RUN mkdir -p /home/claude/workspace
   WORKDIR /home/claude/workspace

   # 起動スクリプト作成
   USER root
   RUN cat > /start.sh << 'EOF'
   #!/bin/bash
   service cron start
   su - claude -c "cd /home/claude/workspace && exec bash"
   EOF
   RUN chmod +x /start.sh

   USER claude
   WORKDIR /home/claude/workspace
   CMD ["/start.sh"]
   ```

### 🔨 WSLでコンテナビルド

:::note info
**コンテナ名について**
`<container-name>` の部分は任意の名前を入力してください。
例：`multi-claude-dev`, `my-claude-env` など
:::

```bash
# Dockerイメージをビルド
docker build -t <container-name> .

# ビルド確認
docker images | grep <container-name>
```

### 🚀 コンテナ起動

:::note info
**セキュリティに関する注意**
コンテナ起動後は、Dockerfileで設定したパスワードでclaudeユーザーにログインできます。
セキュリティを重視する場合は、起動後にパスワードを変更することをお勧めします。
:::

```bash
# インタラクティブモードで起動（重要：-it オプション必須）
docker run -it --name <container-name> \
  -v /mnt/c/MultiClaude-Project:/home/claude/workspace \
  <container-name>

# 起動確認（コンテナ内に入った状態になる）
# プロンプトが claude@コンテナID:/workspace$ になれば成功
```

---

## 5. Multi-Claude環境構築

### 🔗 コンテナ内での環境セットアップ

**※重要: コンテナ起動後、コンテナ内で以下の作業を実行**

#### 5-1. nvmセットアップ（手動実行が必要）

```bash
# nvmインストール
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

# 環境変数設定
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

# nvmバージョン確認
nvm --version  # 0.39.0 が表示されれば成功
```

#### 5-2. Node.jsセットアップ

```bash
# Node.js v22.16.0をインストール
nvm install 22.16.0
nvm use 22.16.0
nvm alias default 22.16.0

# バージョン確認
node --version  # v22.16.0
npm --version   # 10.x.x
```

#### 5-3. Claude Codeインストール

```bash
# npmグローバル設定
mkdir -p ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
export PATH=~/.npm-global/bin:$PATH

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

# インストール確認
claude --version  # 1.0.30 (Claude Code)
```

#### 5-4. Multi-Claudeセットアップ

```bash
# ホームディレクトリに移動
cd ~

# Multi-Claudeクローン
git clone https://github.com/sutaminajing40/multi-claude.git
cd multi-claude

# 実行権限付与とインストール
chmod +x install.sh bin/*.sh
./install.sh

# PATHに追加
echo 'export PATH=$PATH:/home/claude/multi-claude/bin' >> ~/.bashrc
export PATH=$PATH:/home/claude/multi-claude/bin

# インストール確認
multi-claude --help
```

### 🧪 環境動作確認

```bash
# 各ツールのバージョン確認
node --version        # v22.16.0
claude --version      # 1.0.30 (Claude Code)
multi-claude --help   # Multi-Claudeヘルプ表示

# 作業ディレクトリに移動
cd /workspace
```

### 🤖 Claude Code認証

```bash
# Claude Code認証（初回のみ）
claude

# 表示される認証URLにアクセス
# 事前準備で取得したAPIキーを入力
# 認証完了後 Ctrl+C で終了
```

### 🏢 Multi-Claude動作テスト

```bash
# テストプロジェクト作成
mkdir test-project
cd test-project
echo "# Test Project" > README.md

# Multi-Claude起動
multi-claude
```

**正常動作の確認:**
- tmuxセッションが開始される
- PRESIDENT、BOSS、WORKERエージェントが起動
- 各エージェント用のターミナルが表示される

---

## 6. 運用の基本

### 🚀 日常的な操作

**環境起動手順:**
1. WSLを開く
2. プロジェクトディレクトリに移動: `cd /mnt/c/MultiClaude-Project`
3. コンテナ起動: `docker run -it --name <container-name> -v /mnt/c/MultiClaude-Project:/home/claude/workspace <container-name>`
4. コンテナ内で作業開始

**既存コンテナの再起動:**
```bash
# コンテナが停止している場合
docker start <container-name>

# コンテナに接続
docker exec -it <container-name> bash

# 環境変数を再設定（セッションごとに必要）
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
export PATH=~/.npm-global/bin:$PATH
export PATH=$PATH:/home/claude/multi-claude/bin
```

**VS Code接続（オプション）:**
- 別ターミナルでWSLを開く
- `F1` → 「Dev Containers: Attach to Running Container」
- 「<container-name>」を選択

**環境停止:**
```bash
# Multi-Claude停止
multi-claude --exit

# コンテナから出る
exit

# コンテナ停止
docker stop <container-name>
```

### 🤖 エージェント操作

```bash
# PRESIDENTへの指示（戦略レベル）
./bin/agent-send.sh president "Webアプリケーションを設計してください"

# BOSSへの指示（管理レベル）
./bin/agent-send.sh boss "認証機能を実装してください"

# WORKERへの指示（実装レベル）
./bin/agent-send.sh worker "ログイン画面を作成してください"
```

### 🔧 トラブルシューティング

**コンテナに接続できない:**
```bash
# コンテナ状態確認
docker ps -a

# コンテナ再起動
docker restart <container-name>
```

**Multi-Claude起動しない:**
```bash
# tmuxセッション確認
tmux list-sessions

# 古いセッション削除
tmux kill-server
```

**Claude Code認証エラー:**
```bash
# 再認証
claude
```

### 📝 次回構築時の重要な注意点

- **コンテナ起動**: 必ず `-it` オプション付きで起動する
- **手動セットアップ**: Dockerビルド時のnvmインストールが不完全なため、コンテナ内で手動設定が必要
- **環境変数**: セッションごとにnvmとPATHの再設定が必要
- **APIキー**: 新しい環境では再認証が必要
- **プロジェクトデータ**: `/workspace` ディレクトリ（ホストの `/mnt/c/MultiClaude-Project` と同期）
- **VS Code接続**: オプションだが、快適な開発には推奨

### 🔧 既知の制限事項

1. **Dockerビルド時のnvmインストール問題**
   - 原因: USER切り替え時の環境変数継承の問題
   - 対策: コンテナ起動後に手動でnvmセットアップ

2. **環境変数の永続化**
   - bashrcに設定しても、セッションごとに再設定が必要な場合がある
   - 対策: 起動時に環境変数を手動でexport

---

## 7. Docker Hubへのアップロード（オプション）

### 🐳 Docker Hubにイメージを保存

環境をバックアップ・共有するためにDocker Hubにアップロードできます。

```bash
# Docker Hubにログイン
docker login

# イメージにタグ付け
docker tag <container-name> <your-username>/<container-name>:latest
docker tag <container-name> <your-username>/<container-name>:v1.0.0

# Docker Hubにプッシュ
docker push <your-username>/<container-name>:latest
docker push <your-username>/<container-name>:v1.0.0
```

### 📥 アップロードした環境の利用

**新しい環境での利用方法:**

```bash
# イメージをプル
docker pull <your-username>/<container-name>:latest

# コンテナ起動
docker run -it --name multi-claude-env \
  -v $(pwd):/home/claude/workspace \
  <your-username>/<container-name>:latest

# コンテナ内で環境セットアップ（手動実行が必要）
# ※以下の手順は「5. Multi-Claude環境構築」と同じ

# nvmセットアップ
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

# Node.js, Claude Code, Multi-Claudeセットアップ
nvm install 22.16.0 && nvm use 22.16.0 && nvm alias default 22.16.0
npm install -g @anthropic-ai/claude-code
# 以下、「5-4. Multi-Claudeセットアップ」の手順を実行
```

### 🎯 Docker Hub利用の利点

- **環境バックアップ**: ローカルイメージが破損しても安心
- **クロスプラットフォーム**: 別PCでも同じ環境を即座に構築
- **バージョン管理**: 複数バージョンを保持可能
- **チーム共有**: 必要に応じて他の人と共有可能

---

## 🎉 構築完了

以下の環境が完成しました：

✅ **WSL2ベースのDev Container環境**  
✅ **Claude Code + Multi-Claude統合システム**  
✅ **VS Code完全統合開発環境**  
✅ **再現可能な構成管理**  


---

## おわりに

この記事は個人的な備忘録として作成しましたが、同様の環境構築を検討されている方の参考になれば幸いです。

環境によっては異なる結果になる可能性がありますので、その点はご了承ください。


## 参考文献

- [Claude Code公式ドキュメント](https://docs.anthropic.com/en/docs/claude-code/overview)