AI実務到達度インデックス/3本目

cad-bench — 建築2D図面の作図

AIはもうCADを描ける。幾何を難しくしても、腕の差はもう出ない。 30本の統制実験で点差を作ったものは、たった一つ——ライブラリの既定値だった。

2026-07-09 着手v0.2(2026-08-10) 5課題・3腕・統制30本DOI 10.5281/zenodo.21847358

何を測ったか

間取りを spec.json で完全に与える。測るのは作図能力だけで、設計能力は測らない。 こうすると正解が spec から一意に導出でき、非公開の実図面を必要としない。 「作図注記つきの正解データが手に入らない」という、このベンチが作られてこなかった最大の理由を回避できる。

正解の定義
壁 = 壁芯を ±(壁厚/2) で膨らませて union した領域

描くべき線 = (その領域 − 開口) の境界。T字接合のトリムも、開口の小口も、 斜め壁のマイターも、この定義から自動的に出る。作図者の癖が一切入らない。

何を問うか状態
L0DXFとして開けるか採点
L1幾何が健全か(壁厚・被覆率・余計な線・レイヤ規約)採点
L2寸法が本物か(DIMENSION、作図ブロック、表示される値採点
L3意味が合うか(開口の欠き込み・建具・室名・通り芯・面積)採点
L4法規に適合するか(令23条の階段、法28条の採光・換気)採点
L5製図の作法(文字の大きさ・線種・図面枠)助言のみ

L2 は「内部の計測値」ではなく「CADが実際に描く文字」を見る。 ここを見落とすと、幾何が完璧で寸法だけ100倍の図面が満点になる。実際になった。

ARM A生DXF直書き ライブラリ禁止・コード実行禁止・一発勝負。グループコードを1行ずつ手で打つ
ARM Bezdxf 一発勝負 ライブラリ可。ただし書いたコードを実行できない。採点者が一度だけ走らせる
ARM Cezdxf + 検証ループ 実行・レンダリング・自己修正を無制限に許可

幾何を難しくしても、分離しなかった

同じ建物で座標の与え方だけを変えた2課題(T002 は数値で全部与える/T003 は通り芯記号から導出させる)を armB で5回ずつ取った。導出させたほうが安定して高かった。設計意図と逆である。

理由は被験者10名の報告が一致していた。T002 でも、壁面・マイター・T字の切り分け・小口は一つも与えていない。 壁芯と厚さだけから全部導出させている。10名全員が45度隅の伸び 60·tan(22.5°)=24.853mm を独立に手で出した。 T003 が上乗せしたのは記号の解決と中央出しで、模型が最も得意な作業だった。

そこで重い部分そのもの——offset して union して subtract する幾何——を変えた課題 T005 を作った。

T005 で入れた不均一狙い
外壁の厚さが揃わない(W-N だけ150、他210)厚さの違う壁が隅で出会うと、外面と内面のマイター点が別の位置に出る
同一直線上で厚さが変わる(120→200)x=1820 で壁面が段差になる
面芯の壁面が通り芯にちょうど乗り、壁は片側だけに出る
2:1 勾配の斜め外壁45度ではないので暗記した値が効かない
小口の縮退開口の端が壁の端部にちょうど一致する

課題には歯がある。壁厚を一様と誤読した実装は 79.9%(被覆率 9.2%)まで落ちる。 同じ誤読を T002 でやっても 100.0% のままなので、この落差は T005 が新しく作ったものである。

それでも分離しなかった。

armB n=5中央値平均内訳
T002 座標を数値で与える100.0%98.1%100.0 100.0 100.0 99.9 90.8
T003 通り芯記号から導出100.0%100.0%100.0 ×5
T005 取り合いが一様でない99.8%98.2%99.9 99.9 99.8 99.8 91.5

T005 は T002 と区別できない。分布の形まで同じ——4本がほぼ満点、1本だけ落ちる。 そして落ちた1本の原因は幾何ではない(次節)。

5本が小数第3位まで同じ答えを出した

厚さ違いのマイターを、5本全部が正確に解いていた。外側 (3724.787, 2805)、 内側 (3555.213, 2655)、斜め壁のオフセット 105/√5 = 46.9574。 斜め壁を x+2y=9100 と立てて法線 (1,2)/√5 で押す解き方まで一致していた。

出題者が気づいていなかった帰結を、5本とも自力で見つけた
I4 の北端は北壁に当たらない

W-N と W-D の内側マイターは x=3555.213 にあり、I4 の西面 3580 より西にある。 だから I4 は北壁ではなく斜め壁の内面で斜めに切れる——西面 y=2642.606、東面 y=2582.606。 仕様の注記は一言も触れていない。5本全員がこれを危険度1位に挙げ、 「参照解が素朴に北壁で止めていたら食い違う」と書いた。 union の定義がそのまま同じ答えを出すので、参照解も一致していた。

30本で点差を作ったものは、1つしかない

ezdxf.new(version, setup=True) が作る EZDXF という寸法スタイルが、 既定で dimlfac=100.0 / dimtxt=0.25 を持っている。 メートルで描いてセンチで表示する図面の想定である。仕様は mm。

91000 幅910mmの壁に印字される値。誰も dimlfac を書いていない。 ライブラリが推奨する自前のスタイルを素直に使っただけ
3 / 20 armB の n=5 を取った4課題のうち3課題で、それぞれ5本に1本が踏んだ。 能力ではなく、ライブラリの癖を知っているかのコイン投げ
結果使った dimstyle
DIMLFAC=100 で失敗(5件)EZDXF(既定のまま)
通過自前の dimstyle を作る/既定を疑って dimlfac=1.0 に上書き

踏まなかった腕は明示的に書いている——「EZDXF はメートル1:100前提なので、そのまま使うと 910 が 『91000』と表示されて全滅します。ここが今回いちばん怖い」。

一方で、こちらが難しくしようとして入れたもの——45度でない斜め、厚さの不一致、面芯、小口の縮退——は 一つも点差を作らなかった。模型は解析幾何を正確にやる。

腕ごとに、散らばりの「形」が違う

T004(法規判定つき・満点177)を3腕とも5回ずつ取った。点の高低より、失敗の形のほうが実務に効く。

中央値最悪最悪のときに何が起きるか
armA 生DXF94.2%0.0%6,927行のうち1行の余分な 0 でファイルごと死ぬ。すぐ分かる
armB 一発99.6%91.1%開くし幾何も法規も完璧で、寸法だけ100倍。印字を読むまで分からない
armC 検証ループ100.0%97.2%全損も意味の誤りも出ていない

ライブラリは破滅的な失敗を消す代わりに、静かな意味の誤りを持ち込む。 armA の 0点は、生き残った実行が全部「自分の出力を読み返してチャンク境界を自己監査していた」のに対し、 死んだ実行だけがそれをしなかった結果だった。実行環境の無い腕にとって、唯一の検証手段は読み返しである。

満点の腕が買っているのはコストである

出力トークン/回ツール呼出/回中央値最悪値
armB 一発107,9299.299.6%91.1%
armA 生DXF131,50520.694.2%0.0%
armC ループ184,37957.6100.0%97.2%

armC は armB の 1.7倍のトークンと 6.3倍のツール呼び出しを使う。 買っているのは中央値 0.4ポイントではなく、最悪値 91.1% → 97.2% のほうである。 「たまに寸法が100倍で出る」を「出ない」に変えるために払う額、と読むのが正しい。

Chamfer も IoU も、この失敗を検出できない

この穴が本当に空いているかを潰しにいった記録。

AIはもうCADを描ける。図面の中の「数字どうし」を照合する商品はある。 しかし「数字と線」を照合するものは、まだどこにもない。

採点基準の 28% は、わたしの意見である

このシリーズは「参照解を自分で書かない」を掲げている。通関は税関の事前教示回答、税務は国税庁の質疑応答事例が 答えを持っている。cad は違う。答えは spec から決定論で導出されるので一意だが、 「何を検査項目に選び、何点を配るか」はわたしの判断である。そこを項目単位で開示する。

出自配点根拠
法令に直接の根拠39建築基準法施行令23条(階段)、法28条1項・2項(採光・換気)
公的チェックリストの型63千葉県 照査項目 4-10(壁厚を名指し)/4-5/4-7/4-11/5-1
JIS A 01502010章「位置の表示」=通り芯/12.4「図に対する文字の位置」=室名
JIS Z 8317-1(半分)53.3.2 注記2「寸法の単位は長さではミリメートル」。ただし「1:1で描く」は CAD の運用慣行
根拠が見つからない50レイヤ規約・被覆率・建具符号。JIS にレイヤという概念そのものが無い(1999年の規格)

規格に当てにいった結果、採点器の誤りが3件出た。 「通り芯は一点鎖線」は JIS A 0150 10.1.1 が「基準線は通常、実線」と定めており、規格に反していた。 「符号は丸囲み」は条件付きを必須にしていた。「文字は2.0mm以上」は Z 8313-10 の呼び(漢字3.5/仮名2.5)のどれにも無い値で、しかも MTEXT を見ていなかった。

この3件が、L5 における腕の差をすべて作っていた。規格どおりに直すと、 12提出と参照解の計13ファイルが完全に横並びになる——L5 は腕を1ミリも分離していない。 「手書きの腕は高くつく作法を落としている」という所見は撤回した。

こちらの誤りを8件潰した

種別内容見つけた経路
採点器空の作図ブロック1個を全寸法で共有すると L2 が満点になる(CADには何も描かれない)被験者の正直な自己申告
採点器通り芯の一点鎖線を要求(JIS は実線が通常)JIS A 0150
採点器符号の丸囲みを必須化(JIS は条件付き)JIS A 0150
採点器文字高 2.0mm(呼びに無い値)+ MTEXT を見ていないJIS Z 8313-10
採点器resolve() が壁ごとの厚さを黙って捨てる。参照解が全部既定値で描かれていたT005 を作って発覚
採点器小口の除外に全体の壁厚を使い、それより厚い壁の小口を壁面と誤分類参照解が自分の検査に落ちた
主張「一番弱いはずの armA が一番強い」——n=1 の 100% は分布の上端だったn=5
主張「座標を与えれば転記の課題になる」——T002 も転記ではなかったn=5

点数を眺めていて出たものは、一つも無い。

現在地と、残している弱点

5課題(T001〜T005)・3腕・較正済みの機械採点。参照解は5課題とも満点で通る
T004 を3腕 n=5、T002/T003/T005 を armB n=5。統制30本
採点基準を法令・JIS・公的チェックリストに項目単位で接地し、裏付けの無い28%を開示
T001 と、armA/armC の T001〜T003 は n=1。T004 で3腕とも n=1 の値が分布の端にあった以上、そこから順位を読んではいけない
50点分は外部の裏付けが無い。JIS を読んでも出てこない(規格にレイヤの概念が無い)。実務慣行を採点していると認めるほかない
armC の5本は独立試行ではない。5本に同じ venv を渡してしまい、ある腕が入れたライブラリを後続が拾えた
図面枠は JIS Z 8311 6.1 で義務だが、spec が要求しておらず参照解も描いていないので点数化していない
この回で分かったこと
「どこまで描けるか」は、幾何ではもう測れない

作図能力は飽和している。測れるのは、図面が外の世界と食い違っていないかのほうである—— 申告した建具表と図面、ライブラリの既定値と印字される文字、規格と作法。 これは cad-bench 自身の設計思想(設計と作図を分離して作図能力だけを測る)を否定している。