3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

前回の記事では、Kaggleとngrokを活用して、課金を気にせずに利用できる無料のLLM APIサーバーを構築しました。

今回はその続きです。前回の最後に少し触れた 「AIエージェントによるほったらかし自動開発」 を実際に試すための、AI開発サンドボックス環境(安全な遊び場)を設定する手順を紹介します。

AIに自由にコーディングやファイル操作を任せると、自分のPC環境を意図せず破壊されてしまわないか心配になりますよね。そこで本手順では、自分のPC環境を汚さずに、安心してAIエージェントを動かせる隔離された環境を作っていきます。

前提条件

Windows 11(Home/Pro)で利用できるWSL2(Windows Subsystem for Linux 2)を使用します。
※Windowsを利用しておらず、LinuxをメインOSとして利用されている方は、Windowsの手順をスキップしてください。

構成

  1. Windowsホスト: WSL2を動かす土台となり、ユーザーが操作するデスクトップ画面を提供。
  2. WSL2 Debian: Windows上で軽量なLinux環境を実行。
  3. Podman: アプリケーションを「コンテナ」として実行するツール。Docker互換のコンテナを非ルート権限で起動できるため、ホスト環境を破壊しないサンドボックスを作り出すツールとして利用します。
  4. VSCode + Roo Code: AIにほったらかし開発をしてもらうためのIDE環境。類似ソフトウェアとして、ClineやAntigravity、Claude Codeなどがあります。
  5. 外部LLM APIサーバー: APIを通じてタスク実行やコーディングを行います(前回の記事で構築済みのもの)。

構築手順

ここからはAI開発サンドボックス環境の構築手順です。
ホストとなるWindowsの操作なのか、Debianの操作なのか、それともコンテナ内部の操作なのか。少し階層が多くて最初は難しく感じるかもしれませんが、意識しながら順番に進めてみてください。

手順1. WSL2とDebianのインストール手順

 1. スタートから「Windows PowerShell (管理者)」を開きます。
 2. 以下のコマンドを実行し、WSL本体とDebianディストリビューションをインストールします。

powershell
wsl --install -d Debian

 

 3. インストールが完了したら、Linux用のユーザー設定が求められます。お好みのユーザー名とパスワードを設定してください。
 4. exitを2回入力し、ターミナル(管理者)を終了します。
 

 5. 再度スタートメニューから「Windows PowerShell」を開きます。(※今度は管理者ではなく、通常モードで開いてください)
 6. 以下のコマンドを実行し、Debianを通常ユーザーで起動します。

powerShell
wsl -d Debian

 7. 初回起動時のみ、もう一度Linux用のユーザー設定が求められます。先程と同じユーザー名とパスワードを設定してください。
 8. Debianのターミナル(プロンプト)が表示されたら、以下のコマンドを順番に実行してシステムを最新化し、Podmanをインストールします。

bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y podman

image.png
image.png

手順2. コンテナの作成(WSL2 Debianでの作業)

ホスト側(Windowsの場合はDebianのターミナル)で以下のコマンドを実行し、非ルート化された(管理者権限でない)隔離コンテナを作成します。
'--userns=keep-id' を付与することで、コンテナ内の一般ユーザーとホスト側のユーザーIDを安全にマッピングします。

bash
# 作業用ディレクトリの作成
mkdir -p ~/ai_dev_sandbox_home

# 完全隔離コンテナの作成
podman run -d \
  --name ai-dev-sandbox \
  --userns=keep-id \
  --shm-size=2g \
  --device /dev/snd \
  -v /run/user/$(id -u)/pulse/native:/tmp/pulse-socket \
  -e PULSE_SERVER=unix:/tmp/pulse-socket \
  -v ~/ai_dev_sandbox_home:/workspace \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e DISPLAY=$DISPLAY \
  -e QT_QPA_PLATFORM=xcb \
  -w /workspace \
  debian:13 sleep infinity

12_失敗しているかも.png

手順3. パッケージとVSCodeのインストール(コンテナ内・root作業)

コンテナ自体は一般ユーザー権限で動作していますが、インストール作業時のみ -u root を指定してコンテナに入ります。

bash
# root権限でコンテナにログイン
podman exec -u root -it ai-dev-sandbox /bin/bash

14_rootログイン.png

ログイン後、以下のコマンド群を一気にコピー&ペーストして実行してください。VSCodeの依存関係、日本語環境、Git、そしてVSCode本体をインストールします。

bash
# 1. 依存パッケージとGitのインストール
apt update && apt install -y curl wget gnupg2 dirmngr apt-transport-https git \
  libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 \
  libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 libasound2 \
  xdg-utils locales fonts-noto-cjk fcitx5 fcitx5-mozc dbus-x11

# 2. D-Busと日本語ロケールの初期化
dbus-uuidgen > /var/lib/dbus/machine-id
sed -i -E 's/# (ja_JP.UTF-8)/\1/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8

# 3. Microsoft公式リポジトリの追加とVSCodeのインストール
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" | tee /etc/apt/sources.list.d/vscode.list
rm -f packages.microsoft.gpg

apt update && apt install -y code

# rootから抜ける
exit

15_一気に張り付け.png
17_インストール完了.png

手順4. 日本語設定とRoo Codeのインストール(コンテナ内・一般ユーザー作業)

次に、一般ユーザーとしてコンテナに入り直し、Mozc(日本語入力)の設定と、AIエージェントであるRoo Code拡張機能のインストールを行います。

bash
# 一般ユーザーとしてコンテナにログイン
podman exec -it ai-dev-sandbox /bin/bash

18.png

以下のコマンドを実行します。

bash
# Fcitx5プロファイルの作成
mkdir -p ~/.config/fcitx5/conf

cat << 'EOF' > ~/.config/fcitx5/profile
[Groups/0]
Name=Default
Default Layout=jp
DefaultIM=mozc

[Groups/0/Items/0]
Name=keyboard-jp
Layout=

[Groups/0/Items/1]
Name=mozc
Layout=

[GroupOrder]
0=Default
EOF

echo "ShowTrayIcon=False" > ~/.config/fcitx5/conf/classicui.conf

# VSCodeのWSL連携によるお節介機能を無効化
echo 'export DONT_PROMPT_WSL_INSTALL=1' >> ~/.bashrc

# エイリアスの設定(フルパス指定で競合を防止)
echo 'alias code="/usr/bin/code --no-sandbox --user-data-dir=/workspace/.vscode-data"' >> ~/.bashrc
source ~/.bashrc

# Roo Code拡張機能のCUIインストール
export DONT_PROMPT_WSL_INSTALL=1
/usr/bin/code --no-sandbox --user-data-dir=/workspace/.vscode-data --install-extension rooveterinaryinc.roo-cline

# コンテナから抜ける
exit

19_一気に張り付け.png

Do you want to continue anyway? [y/N] の表示で yを応答します。

20_roo-拡張インストールにyで完了.png

手順5. 起動スクリプトの作成(WSL2 Debian側作業)

続いて、ホスト側のターミナル(Debian)でワンクリックで環境を起動するための設定を行います。以下のコマンドを入力します。

bash
cat << 'EOF' > ~/start_ai_dev.sh
#!/bin/bash
echo "🚀 VSCode + Roo Code サンドボックスを起動します..."

xhost +local: > /dev/null 2>&1
podman start ai-dev-sandbox > /dev/null 2>&1

podman exec -it \
  -e DISPLAY=$DISPLAY \
  -e QT_QPA_PLATFORM=xcb \
  -e LANG=ja_JP.UTF-8 \
  -e XMODIFIERS=@im=fcitx \
  -e GTK_IM_MODULE=fcitx \
  -e QT_IM_MODULE=fcitx \
  -e NO_AT_BRIDGE=1 \
  ai-dev-sandbox bash -c "
    export XDG_RUNTIME_DIR=/tmp/xdg-runtime-\$(id -u)
    mkdir -p \$XDG_RUNTIME_DIR
    chmod 700 \$XDG_RUNTIME_DIR
    
    eval \$(dbus-launch --sh-syntax)
    fcitx5 -d --replace
    sleep 2
    
    # VSCodeのWSL連携お節介機能を無効化
    export DONT_PROMPT_WSL_INSTALL=1
    
    # VSCodeの起動
    /usr/bin/code --no-sandbox --user-data-dir=/workspace/.vscode-data > /dev/null 2>&1 &
    exec bash
"
EOF

# 実行権限を付与
chmod +x ~/start_ai_dev.sh

21_一気貼り付け.png

手順6. Windows側に起動アイコンを作成する

Windowsのデスクトップからダブルクリックで起動できるようにショートカットを作成します。
1.Windowsのデスクトップの何もないところで右クリック > [新規作成] > [ショートカット] を選択。
2.「項目の場所を入力してください」の欄に以下を入力して [次へ]。

wsl.exe -d Debian bash -c "~/start_ai_dev.sh"

3.「AI開発環境サンドボックス」などわかりやすい名前を付けて [完了] をクリック。

これでデスクトップにペンギンアイコンのショートカットが作成されます。次回以降はこれをダブルクリックするだけでVSCodeが立ち上がります。

4.ショートカットをダブルクリックし、VSCodeを起動します。
「Skip」をクリックして、サインインは飛ばしてしまって構いません。

開発IDE設定

いよいよ大詰めです。VSCodeのRoo Codeから、前回構築したLLM APIサーバーへ接続する手順を説明します。

1. 認証情報の作成

APIサーバーに設定したBasic認証のIDとパスワードを、Base64形式に変換します。

bash
echo -n "ユーザー名:パスワード" | base64 

2. Roo Codeの基本設定

VS CodeでRoo Codeを開き、Settings(歯車アイコン)から以下を入力します。

項目 設定値 備考
API Provider OpenAI Compatible
Base URL https://xxxx.ngrok-free.app/v1 末尾の /v1 が必須です
API Key ollama 空欄不可のためダミーを入力します
Model ID gemma4:26b APIサーバー側で起動しているモデル名を指定

3. Custom Headersの設定

少し下にスクロールして「Custom Headers」欄の 「+」ボタン を押し、以下の2つのヘッダーを追加します。
• Header 1(Basic認証で使用)
◦ Name: Authorization
◦ Value: Basic <手順1のBase64文字列>
• Header 2(ngrokの警告画面回避のため)
◦ Name: ngrok-skip-browser-warning
◦ Value: true

セキュリティの警告について
設定時、下記の警告が出たら「Use weaker encryption」をクリックして許可してください。キー情報は本来安全なキーストアで保管すべきですが、本コンテナは機能が限定された隔離環境のため、この警告が出ます。サンドボックスとして利用する分には問題ありません。

4. 接続確認

これでようやくAIとチャットしながら、自動開発を進められる環境が整いました!
まずは挨拶してみたところ、しっかり返ってきました。

試しにミニゲームの作成を依頼してみます。

デフォルトでは、コマンド実行やファイル作成のたびに人間への確認(Approve)が求められます。しかし、下記のようにAuto-approve 設定にチェックを入れると、すべて全自動でやってくれます。
(この「ほったらかし」を安全にやるために、わざわざ隔離されたサンドボックス環境を作ったのです!!)

1回の命令で、一気に完成までたどり着けました!

本コンテナで作成されたファイルは、Windowsのエクスプローラーからもアクセス可能です。
エクスプローラーを起動し、Linuxのアイコンから home > 自分で設定したユーザー名 > ai_dev_sandbox_home を開くと、AIが作成したファイルがそのまま入っています。

動作の確認がとれたら、ホスト側(Windows)のPowerShellで以下のコマンドを実行し、サンドボックス環境ごとDebianを終了します。

PowerShell
wsl -t Debian

おわりに

長丁場お疲れ様でした!この構成により、ホスト側の環境を一切汚さず、Roo Codeに自由にファイルの作成やコマンドの実行を許可できる**「安全な遊び場(サンドボックス)」**が手に入りました。
不要になったら podman rm -f ai-dev-sandbox で完全にリセットできるため、AIの挙動やほったらかし開発の学習や体験にご利用ください!!

【付録】WSL2(Debian)の基本操作:起動・終了・初期化

WSLを初めて触る方向けに、知っておくと便利なコマンドをまとめました(Windows側のPowerShellで実行します)。

Debianを完全に終了(停止)させる

WSLはバックグラウンドで動き続けるため、メモリを解放したい場合などに使います。

PowerShell
wsl -t Debian

Debian環境を初期化(まるごと削除)する

手順を間違えて最初からやり直したい場合や、PCの容量を空けたい場合に使います。

Linux環境内のすべてのデータが完全に消去されます。

PowerShell
wsl --unregister Debian

削除後、もう一度 wsl --install -d Debian を実行すれば、まっさらな状態からやり直すことができます。

既知の不具合:最大化時のマウス位置のズレについて

高解像度ディスプレイ(4KやノートPCの高精細液晶など)でWindowsの「拡大縮小(スケーリング)」を125%や150%に設定している場合、コンテナ内のVSCodeを最大化ボタンで全画面にすると、マウスのクリック位置が数十ピクセルほど下にズレる現象が発生します。(2026/4/20現在)

原因

Windows側のWSL、Linux側のVSCodeそれぞれのデスクトップ描画機能が行う座標の計算不具合のようです。

回避策

以下のいずれかの方法で回避してください。

  1. フルスクリーンモード(推奨)
    最大化ボタンを使わず、キーボードの F11 キーを押してフルスクリーンにします。このモードではスケーリングに関わらず位置ズレが発生しません。
  2. 手動でウィンドウサイズを調整する
    最大化ボタンを使わず、ウィンドウの端をドラッグして画面いっぱいに広げます。この方法でもズレは発生しません。
  3. Windows側のスケーリングを100%にする
    ディスプレイ設定で拡大縮小を100%に固定すると、最大化ボタンも正常に動作するようになります。

サイズを元に戻すボタンを押せなくなった場合は、こちらの手順をお試しください。

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?