Claude Codeが話題になっている。
理由は2つある。
ひとつは、その圧倒的な生産性。
もうひとつは、最近起きた“あの事故”だ。
コードを扱うAIが、コードを漏らす。
それは冗談のようでいて、現実に起きた。
便利さと引き換えに、
我々はどこまでをAIに委ねるのか。
そんな問いが、急に現実味を帯びてきた。
そこで、ふと思う。
Claude Codeは、本当に「特別な存在」なのか?
それとも、ローカルでも再現できるものなのか?
今回は、LM StudioとGemma4を使い、
Claude Codeをローカル環境で“それっぽく”動かしてみた。
いわば──
「Claude Codeごっこ」である。
Claude Codeはローカルで再現できるのか
Claude Code。
「コードを書くAI」ではなく、“開発環境そのもの”を変える存在だ。
だが気になる。
これ、ローカルLLMで再現できるのか?
課金も通信もなしで、
“それっぽい体験”だけでも成立するのか。
LM Studio 公式ブログに”Use your LM Studio Models in Claude Code”という記事が出ていたので、試してみた。

結論から言う。
動く。だが、それはClaude Codeではない。
今回の構成
今回の検証環境はシンプルだ。
- Windows 11(ホスト)
- WSL(Claude Code実行)
- LM Studio(ローカルLLMサーバー)
- Gemma4(e4b-it / 64K context)
構成としては
Claude Code (WSL)
↓
HTTP (LAN IP)
↓
LM Studio (Windows)
↓
Gemma4
接続イメージと重要ポイント
ここが今回唯一のハマりどころ。
❌ localhost(127.0.0.1)は使えない
✅ ホストIP(192.168.x.x)で接続
WSLとWindowsはネットワーク的に分離されているため、
export ANTHROPIC_BASE_URL=http://192.168.1.xxx:1234
export ANTHROPIC_AUTH_TOKEN=lmstudio
この形で接続する必要がある。
LM Studio側の準備
やることはほぼこれだけ。
- LM Studioを起動
- Gemma4をロード(今回は64K context)
- サーバーモードON(ポート1234)
※ 認証はOFFで問題なし
Claude Codeの起動
WSL側で以下を実行。
claude --model gemma-4-e4b-it
これで接続される。

ここまでの導入は非常にスムーズ。
正直、拍子抜けするレベル。
動作速度は、以前試したCodex CLIとは雲泥の軽さ。
Claude Codeごっこを試す
ここからが本題。
Markdownエディタ(成功)
まずは軽めに。
「シンプルなMarkdownエディタを作れ」
→ 問題なく生成
→ 修正指示も通る
このあたりは非常に優秀。
“それっぽいClaude Code感”は出る

JavaScript生成(やや不安定)
少し複雑なJSを依頼。
- 一応動くコードは出る
- ただし整合性が怪しい
- 修正ループが増える
このあたりから雲行きが怪しくなる
ブロック崩し(失敗)
そしてお約束。
「ブロック崩しを作れ」
→ 未完成
→ バグ多発
→ 修正不能ループ
これはCodexごっこと同じ結果。
4Bモデルの壁が露骨に出る
なぜ動かないのか
ここが一番重要。
推論力の限界(4B)
Gemma4(e4b)は軽量で速い。
だが、
- 状態管理が弱い
- 長いロジックが破綻する
- 修正の一貫性が保てない
“完成させる能力”が足りない
ただ、Gemma4の名誉のために言っておくと、
ショートコードの生成能力は高いし、コメントもご親切。
Gemma4がコーディング用途に向かないとは言っていない。
生成コード抜粋
// 2. Handle Bold (**text**) and Italic (*text*) - Must be done before general tags
html = html.replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>'); // **bold**
html = html.replace(/\*(.*?)\*/g, '<em>$1</em>'); // *italic*
// 3. Handle Unordered Lists (- or *)
// This is a simplified approach; real parsing is complex. We wrap list items in <li> and assume they are inside <ul> tags.
html = html.replace(/^[\s]*[-*]\s+(.*)$/gim, '<li>$1</li>');
// Wrap all found list items into a single <ul> block (this is a major simplification)
if (html.includes('<li>')) {
html = html.replace(/<\/li>\s*<li>/g, ''); // Clean up potential double tags from multiple passes
html = '<ul>' + html.replace(/<\/li><li>/g, '</li><li>') + '</ul>';
}
// 4. Handle Paragraphs and Line Breaks (Double newline or end of block)
// Replace single newlines with <br> unless they are already inside a block element we just created.
html = html.replace(/\n/g, '<br>');
// 5. Final cleanup: Wrap remaining text blocks in paragraphs if not already wrapped by headings/lists
// This is highly heuristic and imperfect but covers the basic requirement.
let lines = html.split('<br>').filter(line => line.trim() !== '');
let finalHtml = '';
let inBlockElement = false;
コンテキストの消費が異常
実際にログを見ていると異様に感じる。
やり取り1回ごとにゴリゴリ削れる。
そして思う。
これがAPI課金だったら、いくらになるんだろうと…
Claude Codeの本質はモデルではない
Claude Codeは、
- Planモード
- 状態管理
- 長文整合性
- ツール統合
これらを前提にした“環境”だ。
単体モデルでは成立しない
Claude Code vs ごっこ
| 項目 | Claude Code | ローカルごっこ |
|---|---|---|
| 推論力 | ◎ | △ |
| コード完成度 | ◎ | ✕ |
| 一貫性 | ◎ | △ |
| 体験 | 統合されている | 断片的 |
それでも価値はある
オフラインで動く
- クローズド環境OK
- データ外に出ない
実ファイル操作の体験
Claude Codeっぽい操作は再現できる。
「触って理解する」には十分
教材として優秀
- LLMの限界が見える
- コンテキストの重要性が理解できる
むしろここに価値がある
結論
ローカルでClaude Codeは動くのか。
答えはシンプルだ。
動く。だが、それはClaude Codeではない。
Claude Codeはツールではない。
統合された体験そのものだ。
今回は、Gemma4を使用したが、Qwen3 Coder など本格的なコーディングモデルを使って、使い込んでみれば別の世界が開けるかもしれない。
参考リンク
LM Studio公式:Claude Code接続
https://lmstudio.ai/blog/claudecode
(あとがき的な一言)
Claude Codeを触ったことがない人にとって、
この構成は“お試しコース”としては成立する。
だが、同時にこうも感じるはずだ。
Claude Codeは、ローカルに閉じ込めるものではなかった。



