色々なコーディングエージェントが出ています
自宅のパソコンで使えそうなコーディングエージェントを試してみました。
ローカルLLMについて
自宅のPCは非力ですが、なんとかローカルLLMが動きます。
| 項目 | 内容 |
|---|---|
| CPU | Corei9 13900 |
| RAM | 32GB |
| GPU | GeForce RTX 4060 |
| VRAM | 8GB |
| OS | Windows11 |
| CUDA | ver.13.3 |
| LLMサーバー | llama.cpp-server |
| LLMモデル | Qwen3-Coder-30B-A3B-Instruct-Q4_K_M.gguf |
ローカルLLMサーバーとしては、簡単に動く、LM StudioやOllamaがありますが、llama.cpp-serverは
- huggingfaceからダウンロードしたGGUFモデルをそのままで動かせる
- パラメータを細かく指定できる
ので利用しています。
llama.cpp-serverの起動バッチファイルです。
e:\llama\llama-server ^
-m "E:\llama\models\Qwen3-Coder-30B-A3B-Instruct-Q4_K_M.gguf" ^
--port 9000 ^
-c 60000 ^
--temp 0.1 ^
--top-p 0.9 ^
-ngl 99 --cpu-moe ^
--repeat-penalty 1.1
エージェントに実行させる課題
QRコード生成ソフトをpythonで作ってもらいます。
エージェントに入力するプロンプト
Python で、QRコード画像を作成するデスクトップGUIアプリケーションを作成してください。
【機能要件】
1. 入力
- テキストボックスに任意の文字列(URL、テキストなど)を入力できる
- 「生成」ボタンでQRコードを生成し、プレビュー表示する
- 「消去」ボタンで、テキストボックスを消去する
2. 出力
- PNG形式で画像ファイルを保存できる(保存ダイアログでファイル名・保存先を選択)
3. パラメータ設定(GUI上で変更可能、デフォルト値あり)
- 余白セル数(quiet zone / border): デフォルト 4(セル単位)
- 出力画像サイズ: 幅・高さを指定可能、デフォルト 100 x 100 ピクセル
- 誤り訂正レベル: L / M / Q / H から選択可能、デフォルト M
- QRコードバージョン: 1〜40の範囲で指定可能。未指定(自動)の場合は内容に応じて自動選択する
(※バージョンを固定指定した場合、入力文字列がそのバージョンの許容データ量を超えたらエラーメッセージを表示する)
4. exe化
- cx_Freeseでのビルドスクリプトを作る
【技術要件】
- 使用言語: Python 3
- GUIフレームワーク: tkinter を使用(標準ライブラリのため追加インストール不要)
- QRコード生成には `qrcode` ライブラリを使用(画像処理には Pillow も必要)
- 生成後の画像は指定サイズにリサイズしてから保存・プレビューする
- 入力値のバリデーションを行う(数値項目に不正な値が入った場合はエラーダイアログを表示)
- コードは、GUIを管理するmain.pyとQRコードを作成するqr.pyに分けてください。
- 可読性のためコメントを日本語で付与する
【コード品質】
- 定数化できる値は定数化
- 関数を適切に分割
- 可読性を重視
- コードの理解を深めるための日本語コメント
- グローバル変数は定数のみ
【成果物】
- スクリプト(main.py、qr.py)
- requirements.txt(qrcode, Pillow など必要なパッケージとバージョンを明記)
- 簡単な使い方を説明する README.md
- 制作したソフトウエアを、cx_Freeseで1つのファイルにまとめるスクリプト(setip.py)。
試したコーディングエージェント
色々なコーディングエージェントが出てきています。今回は以下の4つを試してみました。
PCの中を「汚したくない」、試行錯誤してみたいので、すべて、dockerで動かしています。
dockerはpython3.14-slimイメージをベースに、Node.jsをインストールしたうえで、npmを利用してエージェントをインストールしています。
Node.jsイメージを利用すれば良いかもしれませんが、pythonのプログラムを作るので、なんとなくpythonのイメージを元にしました。
OpenCode CLI
OpenCode CLIについて
-
Dockerfile
DockerfileFROM python:3.14-slim # タイムゾーン ENV TZ=Asia/Tokyo ENV DEBIAN_FRONTEND=noninteractive # Node.js をインストール(例: Node 20) RUN apt-get update && apt-get install -y curl gnupg \ && curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - \ && apt-get install -y nodejs \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # よく使うPythonライブラリ RUN pip3 install --no-cache-dir numpy matplotlib tqdm pillow openpyxl # OpenCode CLI RUN npm install -g opencode-ai WORKDIR /workspace CMD ["bash"] -
comose.yml
compose.ymlservices: # OpenCode 環境 opencode: build: . container_name: opencode-container volumes: - ./workspace:/workspace working_dir: /workspace stdin_open: true # ターミナルを対話モードにするため tty: true # ログサイズ制限 logging: driver: "json-file" options: max-size: "10m" # 1ファイルあたり100MB max-file: "3" # 最大5ファイル(合計500MB程度) -
opencode.jsonは workspace ディレクトリに置きます。
opencode.json
opencode.json{ "$schema": "https://opencode.ai/config.json", "provider": { "lmstudio": { "npm": "@ai-sdk/openai-compatible", "name": "llama.cpp (Server)", "options": { "baseURL": "http://host.docker.internal:9000/v1", "apiKey": "dummy-key" }, "models": { "Qwen3-Coder": { "name": "Qwen3-Coder" } } } }, "permission": { "read": "allow", "write": "allow", "edit": "allow", "glob": "allow", "grep": "allow", "lsp": "allow", "bash": "allow", "webfetch": "allow", "websearch": "allow", "external_directory": "deny", "doom_loop": "ask" }, "instructions": [ "回答やコードコメント、説明は基本的に日本語で行ってください。", "Python 3.10以上を使用してください。", "関数にはdocstringを書いてください。", "可読性を優先してください。", "標準ライブラリを優先し、新しい依存ライブラリは必要な場合のみ追加する。", "ソースコードの理解を深めるためのコメントを日本語で付けて下さい。" ] }
Qwen Code CLI
QwenCodeについて、公式ホームページにはcurlを利用したインストールが紹介されていますが、Github QwenLM /qwen-code に書いてある npmを利用する方法でインストールします。
-
Dokerfile
DockerfileFROM python:3.14-slim # タイムゾーン ENV TZ=Asia/Tokyo ENV DEBIAN_FRONTEND=noninteractive # Node.js をインストール(例: Node 20) RUN apt-get update && apt-get install -y curl gnupg \ && curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - \ && apt-get install -y nodejs \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # よく使うPythonライブラリ RUN pip3 install --no-cache-dir numpy matplotlib tqdm pillow openpyxl # Qwen Coder CLI RUN npm install -g @qwen-code/qwen-code WORKDIR /workspace CMD ["bash"] -
環境変数で、ローカルLLMを指定します。
compose.yml
compose.ymlservices: qwen-code: build: . container_name: qwen-code stdin_open: true tty: true working_dir: /workspace volumes: - ./workspace:/workspace environment: # OpenAI Compatible API OPENAI_BASE_URL: http://host.docker.internal:9000/v1 OPENAI_API_KEY: "no-key-required" OPENAI_MODEL: Qwen3-Coder-30B-A3B-Instruct-Q4_K_M.gguf
GitHub Copilot CLI
GitHub Copilot、公式ホームページにある npmを利用する方法でインストールします。
-
Dockerfile
DockerfileFROM python:3.14-slim ENV DEBIAN_FRONTEND=noninteractive # よく使うPythonライブラリ RUN pip3 install --no-cache-dir numpy matplotlib tqdm pillow openpyxl RUN apt-get update && \ apt-get install -y --no-install-recommends \ curl \ ca-certificates \ git \ build-essential && \ curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && \ apt-get install -y nodejs && \ rm -rf /var/lib/apt/lists/* # Github Copilot CLI RUN npm install -g @github/copilot WORKDIR /workspace CMD ["bash"] -
compose.yml
compose.ymlservices: copilot: build: . container_name: copilot stdin_open: true tty: true working_dir: /workspace volumes: - ./workspace:/workspace environment: # 接続先URL。注意点として、 /v1まで指定する必要あり COPILOT_PROVIDER_BASE_URL: http://host.docker.internal:9000/v1 # API種別 COPILOT_PROVIDER_TYPE: openai # 使用モデル COPILOT_MODEL: Qwen3-Coder-30B-A3B-Instruct-Q4_K_M COPILOT_OFFLINE: true # ダミーの API キー(OpenAI互換エンドポイントで要求される場合の対策) OPENAI_API_KEY: "lm-studio" GH_COPILOT_TOKEN: "dummy-token"
Claude Code CLI
Claude Codeのインストールも、npmで行います。
-
Dockerfile
DockerfileFROM python:3.14-slim ENV DEBIAN_FRONTEND=noninteractive # よく使うPythonライブラリ RUN pip3 install --no-cache-dir numpy matplotlib tqdm pillow openpyxl # 必要なパッケージ RUN apt-get update && apt-get install -y \ curl \ git \ ca-certificates \ && rm -rf /var/lib/apt/lists/* # Node.js 22 LTS をインストール RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \ && apt-get update \ && apt-get install -y nodejs \ && rm -rf /var/lib/apt/lists/* # Claude Code CLI RUN npm install -g @anthropic-ai/claude-code WORKDIR /workspace CMD ["bash"] -
compose.yml
compose.ymlservices: claude: build: . container_name: claude stdin_open: true tty: true working_dir: /workspace volumes: - ./workspace:/workspace environment: ANTHROPIC_BASE_URL: http://host.docker.internal:9000 ANTHROPIC_API_KEY: "sk-no-key-required" #ANTHROPIC_MODEL: "local-model" #ANTHROPIC_SMALL_FAST_MODEL: "local-model" #CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "1"
結果
| エージェント | 結果 | 時間(*1) | コメント |
|---|---|---|---|
| OpenCode CLI 1.18.15 | ◯1回修正 | 6'15" | |
| Qwen Code CLI 0.21.7 | ◯ | 7'08" | 動作中に、イースターエッグ的なメッセージが出ます。 |
| GitHub Copilot CLI 1.0.78 | ◯1回修正 | 4'45" | |
| Claude Code CLI 2.1.226 (*2) | - | - | 25分経っても終わらなかった 何らかのループに陥った? |
| ブラウザからアクセス(*3) | ◯ | 1'50" | ファイルは保存してくれない |
(*1)「時間」は、1回めのコーディングが終わるまでの時間です。
(*2)実行時に、「local-model」は、このバージョンのClaude Codeが認識するモデルではないため……という警告が出ましたが、掘り下げてはいません。
(*3)llama.cpp-serverにブラウザでアクセスし、プロンプトを入れました。
- 操作感はどのCLIも大差ありませんでした。
- ソースコードも大差ありませんでした。すべてのエージェントが、qrcodeとPillowを使った影響でしょう。
- OpenCodeだけ、英語のコメント、英語のREADME.mdでした。他は日本語
- Claude Code CLIは、@minato1198さんのバッチファイルでllama.cpp-serverを起動すれば、動くコードを出力してくれました。ただし、20分以上かかりました。
- ボタンなどのレイアウトを指定しなかったので、見た目は違いました。
- 試行回ごとに、コードが若干違いました。--確率で単語をつないでいるのだな~
- この程度のソフトウエアであれば、ブラウザからの対話で十分でした。
- エージェントはもっと規模の大きなソフトを作るときに使うのでしょう。
2026/08/12の結果です。各エージェントのバージョンも低いことですので、どんどん変わってゆくと思います。
まとめ
コードを1行も書かずにプログラムができてしまいました。コードどころか、プロンプト(指示書、仕様書)もLLMに作ってもらいました。
バイブコーディングはすごいと思います。
すごいのですが……
プログラムが動けば、ソースコードを見る(理解する)気が起きません。
バイブコーディング……
- 電卓を使うようになって、暗算ができなくなりました。
- ワープロを使うようになって、漢字が書けなくなりました。
- 生成AIを使うようになって、コードが書けなくなりました??
スマートフォンを使う人は、スマートフォンの内部がどうなっているかを知る必要はありませんが、スマートフォンを作る人は、内部を詳しく知っておく必要があると思います。
同様に、プログラムを作る人は、LLMやコーディングエージェントの中身を知る必要はないかもしれませんが、できたソフトの中身を知っておく必要があるのではないでしょうか。