やってみたかったこと
替え芯(リフィル)を立てておくスタンドを、CADで作ってみたいと思いました。形はとても簡単です。40×100×40mm の箱に、直径4mm・深さ25mm の穴を9個あけるだけ。
子どもが、勉強の丸付けで使い切った赤ペンの芯(リフィル)を立てておいて、「こんなに頑張った」と見えるようにしたい、と言ったのがきっかけです。ちょうどローカルのモデルにCADを作らせてみたかったので、試しにこれでやってみました。
せっかくなので、同じ課題を AI に作らせて比べてみることにしました。1回目はクラウドの Claude Code、2回目は手元の PC で動かすローカルモデル3つです。
なぜローカルモデルで比べたか
AI を使うとき、ローカルでないとできないことは、基本的にあまりないと感じています。ただ、手元のPCの中にデータがあるものを扱うなら、Claude Code や Codex を使うか、ローカルの LLM を使う必要があります。
Codex や Claude Code、Grok など、クラウドのサービスはいろいろあります。そのなかで、ローカルで比べたいと思ったのは、トークンをたくさん使う作業です。たとえば、単純な作業をひたすらさせること。大量の情報を処理させること。そして、やりたいのにまだできていない、今回の CAD です。自分で仕様書を作って、その通りに CAD で図面や3Dモデルを作ってもらいたいと思っています。
そこで、クラウドの一般的な有料サブスクのモデルでやった場合と、ローカルのモデルでやった場合を比べてみたくなりました。
何を使ったか
- CAD:build123d(Python で形を作るライブラリ)と、それを AI から操作するための build123d-mcp。AI は MCP を通して形を作り、寸法や穴の数を自分で測って確かめられます。
- AI の実行役:Claude Code。4つとも Claude Code の仕組みの上で動かし、中のモデルを入れ替えました(版や動かした場所などの違いは、「全体で分かったこと」の注意に書きました)。
- 1回目:Claude Code(2.1.302、WSL)+ クラウドのモデル Claude Opus 5.5
- 2回目:Claude Code(2.1.305、Windows)+ ローカルモデル3つ
- FlashNextの2ビット版:Qwen3.8-Flash-Next を IQ2_XS で量子化したもの(GGUF)。Strata v0.2.0-beta で動かす
- FlashNextの3ビット版:同じモデルを IQ3_S で量子化したもの(GGUF)。Strata v0.2.0-beta で動かす
- Qwen3.8-27B:Unslothが配っている量子化版「UD-Q5_K_XL」。Ollama 0.34.0 で動かす(タグは
hf.co/unsloth/Qwen3.8-27B-GGUF:UD-Q5_K_XL)
- コンテキストの長さは、ローカルの3つとも 32k と 64k で試しました(Strata は起動時の設定、Ollama は1回ごとの num_ctx で指定)。
- PC:Windows と WSL(Ubuntu 24.04)。GPU のメモリは 32,607 MiB、RAM は 64GB です。
- 採点:同じ測定スクリプト(measure.py)で、外から寸法を測って合否を決めました。
やったこと
課題(寸法表)
| 項目 | 値 |
|---|---|
| 外形 | 40×100×40 mm |
| 穴 | 9個、直径4.0mm、深さ25mm(貫通しない平底) |
| 並び | 2列の千鳥(5個+4個)、列は中心から ±8mm、同じ列の間隔20mm、もう一方の列は10mmずらす |
| 底の残り | 15mm |
外形・穴の数・径・深さを決めて、並び方や平底などは仮に決めました。
合格の基準
- 外形が ±0.1mm 以内
- 穴(数・径・深さ・位置・向き)が ±0.05mm 以内
- 体積が ±1% 以内
- STL に穴があいていない(水密)
- STEP を読み直せる
- 直しは3回まで
AI には「MCP で確かめて、ずれていたら直す。直しは最大3回」と頼みました。
起きたこと
こうしてみた → ダメだった → 次にこうした、の順に書きます。
クラウドの Claude Code(Claude Opus 5.5)でやってみた
1回の実行で27ターン、約4分。MCP での最初の確認で全部の項目が期待どおりで、直しは0回でした。
ただ、すんなりとはいきませんでした。
- ダメだった:MCP の中では
argparseなどの import が禁止されていて、コードのファイルをそのまま実行できませんでした。→ 次にこうした:形を作る部分だけを貼り付けて確かめました。 - ダメだった:外から測る側のスクリプトが、
shapelyというライブラリがなくて途中で止まりました。Claude Code は「pip でのインストール禁止」の指示どおり、そこで止まりました。→ 次にこうした:あとからshapelyを足して測り直し、全部合格しました。コードのずれではないので、直しの回数には数えていません。 - ダメだった:最初にバックグラウンドで動かした分は、WSL のセッションが終わって起動しませんでした。→ 次にこうした:前面で動かして解決しました。
ローカルモデル3つでやってみた
1. コンテキスト 32k で動かした → 3つとも失敗
まず、コンテキスト(AI が一度に扱える文章の量)を32kにして動かしました。原因はどれもコンテキスト不足でした。Claude Code のシステムプロンプトと52個のツールの説明だけで、約19kトークンを使います。そこに作業のやりとりが重なって、途中で上限に当たりました。
- FlashNextの2ビット版と3ビット版:途中でプロンプトが 32,811 トークンになり、上限の 32,768 を超えて止まりました。
- Qwen3.8-27B:上限で応答が6回途中切れになり、止まりました。
どれも、STEP や STL はできていません。
2. コンテキストを 64k に上げてやり直した → 3つとも合格
64k に上げると、3つとも全部の項目に合格しました。外からの手助け(フィードバック)は3つとも0回です。作業中に実際に使ったコンテキストは、いちばん多くて36k〜38kでした。それぞれ、途中でこうつまずいています。
- FlashNextの2ビット版(182秒):
Circle()にcenterという引数がなく、TypeError。→ スケッチの平面の位置を穴の中心に置く書き方に直しました(自己申告の直し1回)。 - FlashNextの3ビット版(143秒):
Locations()に数字を3つばらばらに渡して ValueError。→ タプル1つにまとめて直しました(直し1回)。 - Qwen3.8-27B(897秒):MCP の上で書き方の試行錯誤が5件ありました。その中で、穴9個が全部原点に重なってしまうミスがあり、体積のずれ(159,921)を MCP の上で試しているうちに自分で見つけて直しています。そのあと書いたコードは1回目で合格したので、コードの直し(自己申告)は0回です。
結果
| Claude Code(クラウド) | FlashNextの2ビット版 | FlashNextの3ビット版 | Qwen3.8-27B | |
|---|---|---|---|---|
| 動かした場所・モデル | クラウド・Claude Opus 5.5 | ローカル・Qwen3.8-Flash-Next IQ2_XS | ローカル・Qwen3.8-Flash-Next IQ3_S | ローカル・Qwen3.8-27B(Unslothが配っている量子化版「UD-Q5_K_XL」) |
| 動かし方 | Claude Code 2.1.302(WSL) | Claude Code 2.1.305(Windows)→ Strata v0.2.0-beta | Claude Code 2.1.305(Windows)→ Strata v0.2.0-beta | Claude Code 2.1.305(Windows)→ Ollama 0.34.0(hf.co/unsloth/Qwen3.8-27B-GGUF:UD-Q5_K_XL) |
| 32k | (試していない) | 失敗(82秒・8ターン) | 失敗(85秒・6ターン) | 失敗(662秒・9ターン) |
| 結果(ローカルは 64k) | 合格※2 | 合格 | 合格 | 合格 |
| かかった時間 | 約4分 | 182秒(3.0分) | 143秒(2.4分) | 897秒(15.0分) |
| ターン数 | 27 | 33 | 27 | 37 |
| 直し(自己申告) | 0回 | 1回 | 1回 | 0回 |
| 外からの手助け | 0回※ | 0回 | 0回 | 0回 |
| 使ったコンテキストの最大 | (記録なし) | 37,592 | 36,400 | 36,441 |
| おもなつまずき | MCPで import 禁止、測定側に shapely がない | Circle の TypeError | Locations の ValueError | 穴が原点に重なる(自分で発見) |
※ クラウドの Claude Code は、測る側のスクリプトに shapely を足して測り直している(コードの直しではない)。 ※2 クラウドのモデルでは、64k の設定はしていない。
できた形は4つとも同じでした。外形 40×100×40、穴9個(直径4.000、深さ25.000、平底、位置のずれ0)。
できた形を同じ向きで見比べる
4つのモデルが書き出したSTLを、同じカメラ・同じ縮尺・同じ背景と照明で描きました(Blender 4.2、正投影、拡大縮小・回転なし。底面の中心を原点にそろえただけ)。大きさが違えば、そのまま違って見えます。
斜め上から

真上から(穴の並び)

正面から

| Claude Code(クラウド) | FlashNextの2ビット版 | FlashNextの3ビット版 | Qwen3.8-27B | |
|---|---|---|---|---|
| 斜め上 | ![]() | ![]() | ![]() | ![]() |
| 真上 | ![]() | ![]() | ![]() | ![]() |
| 書き出したファイル | refill_stand.step / .stl | refill_stand_a_iq2xs.step / .stl | refill_stand_b_iq3s.step / .stl | refill_stand_c_ollama27b.step / .stl |
| ダウンロード | STEP・STL | STEP・STL | STEP・STL | STEP・STL |
※ どれも簡単な形なので、特にダウンロードして使うほどのモデルではありません。
3Dで回して見比べるページ:4つのモデルを並べた3D表示
やってみて思ったこと
ローカルの3つのモデルは、それぞれどうだったか
| モデル | 動かし方 | 32k | 64k | 時間・ターン | 直し(自己申告) | つまずき |
|---|---|---|---|---|---|---|
| FlashNextの2ビット版(IQ2_XS) | ローカル(Strata v0.2.0-beta) | 失敗(82秒・8ターン) | 合格 | 182秒(3.0分)・33ターン | 1回 | Circle() に center がなく TypeError。スケッチの平面で回避 |
| FlashNextの3ビット版(IQ3_S) | ローカル(Strata v0.2.0-beta) | 失敗(85秒・6ターン) | 合格 | 143秒(2.4分)・27ターン | 1回 | Locations() に数字3つを渡して ValueError。タプルに直した |
| Qwen3.8-27B(Unslothが配っている量子化版「UD-Q5_K_XL」) | ローカル(Ollama 0.34.0、hf.co/unsloth/Qwen3.8-27B-GGUF:UD-Q5_K_XL) | 失敗(662秒・9ターン) | 合格 | 897秒(15.0分)・37ターン | 0回 | 試行錯誤5件。穴9個が原点に重なり、体積のずれを自分で見つけて直した |
- FlashNextの2ビット版:32kでは止まりましたが、64kで合格しました。かかった時間は182秒です。直しは1回でした。
- FlashNextの3ビット版:32kでは止まりましたが、64kで合格しました。3つのうちいちばん短い143秒でした。直しは1回でした。
- Qwen3.8-27B:32kでは止まりましたが、64kで合格しました。時間は3つのうちいちばん長い897秒(15.0分)でした。コードの直しは0回でした(試している途中のミスは自分で直しています)。
全体で分かったこと
- この課題を Claude Code + MCP で動かすなら、コンテキストは32kでは足りませんでした。仕組みだけで約19kを使い、作業中は37k前後まで増えたからです。64kで3つとも合格しました。
- FlashNextの2ビット版と3ビット版は、クラウドの Claude Code(約4分)と同じくらいの時間で合格しました。Qwen3.8-27B は15分で、FlashNextの2つの5〜6倍かかりました。
- ただし、比べるときの注意がいくつかあります。
- 試したのは簡単な形1つで、実行は組み合わせごとに1回ずつです。差には偶然も入っています。
- FlashNext と Qwen の差は、モデルだけの差ではありません。動かす仕組み(ランタイム)も、量子化の仕方も、中継のしかたも違います。
- クラウドの実行とローカルの実行では、Claude Code の版や動かした場所(WSL と Windows)が違います。課題文はパスと Python の呼び方だけ変えて、採点のスクリプトは同じものを使いました。
やってみて、意外にどのモデルもちゃんとできているな、ということが分かりました。できた形も、見た目はほぼ正しいと思います。ただ、頼んだ形が簡単すぎて、あまり差が出ませんでした。
次にやること
次は、もう少し難しい形を作ってもらって比べるのがいいかな、と思っています。
このブログの3Dプリントで使っているもの 【PR】
【PR】この記事にはAmazonアソシエイトリンクを含みます。







