AI図面解析エージェントとは、2D図面をアップロードするだけで自律的に解析し、3Dモデルや系統図を生成するAIエージェントである。単純な「画像→OCR→出力」ではなく、生成した3Dモデルを自分で多角的にレンダリングし、評価AIのフィードバックをもとに反復改善する「自己評価ループ」を持つ点が本格実装の鍵となる。本記事では、Claude Agent SDKを使った図面解析エージェントの実装パターン・技術選定・運用ノウハウを、renueが自社プロダクトDrawing Agentで実装している内容をもとに解説する。
AI図面解析エージェントの2つの主要カテゴリ
| カテゴリ | 入力 | 出力 | 代表的な用途 |
|---|---|---|---|
| 1. 2D→3D変換型 | 2D図面画像 | 3Dモデル(GLB/STL/STEP) | 製造業、機械設計、建築 |
| 2. 図面解析型(OCR) | 機械図面/建築図面 | 構造化データ(JSON) | 積算、部品表、検図 |
| 3. 系統図自動作図型 | 自然言語 or 要件 | SVG/PDF系統図 | 通信基地局、電気配線、ネットワーク |
基本的な実装アーキテクチャ
本格的なAI図面解析エージェントは、以下の4コンポーネントで構成される。
[ユーザー] → [Frontend]
↓ (SSE)
[Backend(FastAPI)]
↓
[Claude Agent SDK]
↓
┌──────┴──────┐
↓ ↓
[CADエンジン] [評価AI(Gemini)]
(trimesh/CadQuery/build123d)
↓ ↑
[マルチビュー] → [フィードバック]
レンダリング
このアーキテクチャで重要なのは、AIエージェントが「生成→自己評価→改善」のループを回せる点である。単に1回生成して終わりではなく、複数の視点からレンダリングし、評価AIが「これは正しい」「ここが間違っている」と判断して次のイテレーションに反映する。
レイヤー1: Claude Agent SDKによるエージェント実装
エージェント本体は、Claude Agent SDKを使って構築する。主要な要素は以下の通り。
必須のフック(Hook)
- PreToolUse: ツール呼び出し前の検証(例: レンダリング予算の確認)
- PostToolUse: ツール呼び出し後の処理(例: ログ記録、結果の保存)
- Notification: フロントエンドへのリアルタイム進捗通知(SSE配信)
カスタムMCPツール
Drawing AgentはMCP(Model Context Protocol)でツールを定義する。renueの実装では以下の3つを提供している。
- render_3d_model: 生成した3Dモデルを単一視点でレンダリング
- render_multi_view: 複数視点(正面・側面・上面・斜視)から一括レンダリング
- gemini_feedback: レンダリング画像をGeminiに送り、構造化フィードバックを受け取る(「追加ビュー要求」機能付き)
レイヤー2: レンダリング予算管理 — エージェントの暴走を防ぐ
AIエージェントは自律的にツールを呼び出すため、無制限にレンダリングを繰り返して処理時間・コストが爆発するリスクがある。これを防ぐために「レンダリング予算管理(Render Budget)」を実装する。
renueのRender Budget実装パターン
# セッション開始時に予算を登録
register_render_limit(output_dir, max_views=10)
# イテレーションごとに予算をリセット
set_render_iteration(output_dir, iteration=2)
# レンダリング時に予算チェック
_check_and_increment(output_dir, view_count=4)
# → 予算超過ならエラーを返してツール実行を中止
イテレーション単位で予算がリセットされるため、エージェントは各イテレーションで十分なビュー数を確保しつつ、セッション全体では上限を超えない。これにより無限ループや暴走を防げる。
レイヤー3: 自己評価ループ — 3Dモデルの品質を自動検証
2D→3D変換の最大の課題は「生成した3Dモデルが正しいかどうかをAI自身が判定できない」ことである。この課題を解決するのが「自己評価ループ」である。
自己評価ループの流れ
- 初回生成: 2D図面からCADエンジン(trimesh等)で3Dモデルを生成
- マルチビューレンダリング: 正面・側面・上面・斜視の4〜10ビューを生成
- Gemini評価: レンダリング画像と元の2D図面をGeminiに渡し、「一致度」「エラー箇所」「追加確認が必要なビュー」を判定
- スコア取得: Geminiが0〜100の品質スコアを返す
- 目標達成判定: スコア≥85 or max_iterations到達で終了。それ以外なら再生成
- フィードバックを次回生成に反映: 前回のエラーをプロンプトに含めて再生成
renueの実装のEvalSessionState
@dataclass
class EvalSessionState:
quality_target: int = 85 # 目標スコア
max_iterations: int = 10 # 最大イテレーション数
max_render_views: int = 10 # レンダリング上限
eval_mode: str = "autonomous" # 評価モード
scores: list[int] = [] # スコア履歴
last_evaluation: dict | None = None
should_stop: bool = False
stop_reason: str = "" # target_reached/max_iterations/agent_finished
このセッション状態を管理することで、エージェントの動作が予測可能になり、デバッグ・監視が容易になる。
レイヤー4: 構造化ツール出力 — report_evaluation
エージェントの出力をテキストではなく構造化データで受け取ることで、スコア抽出の信頼性が向上する。
renueの実装例
Claude Agent SDKで`report_evaluation`というカスタムツールを定義し、エージェントに「評価結果は必ずこのツールで報告すること」と指示する。これにより、エージェントが自然言語で「だいたい80点くらいです」と曖昧に答えるのではなく、構造化JSONで正確にスコアを返してくれる。
フォールバックとして、テキストからのスコア抽出(正規表現)も実装しておくことで、ツール呼び出しが失敗しても品質スコアが取得できる。
レイヤー5: CADエンジンの選定
2D→3D変換では、使用するCADエンジンによって得意な形状が異なる。renueの実装では複数エンジンを使い分けている。
| エンジン | 得意な領域 | 特徴 |
|---|---|---|
| trimesh | メッシュ操作、基本形状 | Python製、軽量、PLY/STL/GLBエクスポート |
| CadQuery | パラメトリックCAD、機械部品 | Pythonicなスクリプト、STEP対応 |
| build123d | 複雑な3D形状、建築 | CadQueryの後継、高機能 |
エージェントには「どのエンジンを使うべきか」の判断基準を与え、形状に応じて適切なエンジンを選択させる。
レイヤー6: 系統図自動作図(antenna-keitoのパターン)
2D→3D変換だけでなく、「自然言語→系統図」という別パターンの実装もある。renueの空中線系統図自動生成ツール(Bamboo基地局設計90%自動化プロジェクトの一部)では、以下のアプローチを取っている。
実装パターン
- 自然言語入力: 「アンテナ×4、モジュール×2、RRU×2」のような入力
- Claude API + Zod Schema: 構造化JSON(DiagramData)を生成
- SVG描画: DiagramDataをSVG系統図に変換
- バリデーション: 接続整合性・重複・帯域一致を自動チェック
- インタラクティブUI: 機器クリックで選択・詳細表示
重要なのは、LLMの出力を必ずスキーマ(Zod等)で検証することである。これにより、LLMが間違った形式で返してきても早期に検出でき、不正なデータでSVG描画が壊れる事故を防げる。
フロントエンド実装のポイント
SSE(Server-Sent Events)でのリアルタイム進捗表示
Drawing Agentの処理は数分かかることが多いため、フロントエンドにリアルタイムで進捗を表示する必要がある。Claude Agent SDKのHookとstderr callbackを組み合わせて、以下のイベントをストリーミング配信する。
- ツール呼び出し開始/終了
- レンダリング進捗(例: 3/10ビュー完了)
- 評価スコア変化(例: 65 → 78 → 90)
- エージェントの思考プロセス(thinking block)
3Dビューアの選定
生成した3Dモデルをブラウザで表示するには、React Three Fiber(Three.jsのReact版)が一般的である。GLBファイルを直接読み込んで、ユーザーが360度回転・ズームできるビューアを提供できる。
デプロイ・インフラの考慮点
バックエンド
- Pythonランタイム(FastAPI + Claude Agent SDK + trimesh)
- レンダリング処理はCPU集約的なため、Cloud Run/Container Appsでのスケーリング設計が重要
- 生成した3Dモデル・レンダリング画像のストレージ(S3/Azure Blob)
フロントエンド
- Next.js + Chakra UI + React Three Fiber + Jotai
- SSE接続を維持するためのタイムアウト設定
- 大容量GLBファイルの段階的ロード
renueの実装事例と公開済みプロダクト
renueは「Self-DX First」の方針のもと、以下の図面AIプロダクトを自社で開発・運用している(全て公開情報)。
- Drawing Agent (generate3D): 2D図面→3Dモデル自動生成。Claude Agent SDK + trimesh + Gemini評価ループを実装
- 空中線系統図自動生成 (antenna-keito): 通信基地局の系統図をClaude API + Zodで自動生成。FY25 Bamboo TGIN 90%自動化プロジェクトの一部
- HMP OCR: 機械図面のOCR解析。Azure Computer Vision + OpenAI + SQL Server
- 宅配ボックス配列図自動生成 (delivery-boxes): 宅配ボックスの配置図を自動生成
- 3D・2D図面AI: 製造業向けのCAD生成AIプロダクト(パートナー企業との共同開発)
これらは社内12業務を553のAIツールで自動化済み(2026年1月時点)という「Self-DX」の文脈で開発されており、自社で実証済みの型をクライアントに届ける方針で展開している。
導入時のよくある失敗パターン
- 1回の生成で完結させようとする: 自己評価ループを実装しないと品質が不安定
- レンダリング予算を設定しない: エージェントが暴走してコストが爆発する
- CADエンジンを1つに固定する: 形状により最適なエンジンは異なる
- LLM出力のスキーマ検証をしない: 不正なJSONでレンダリングが壊れる
- 構造化ツールを使わない: テキストからスコア抽出すると信頼性が低い
- フロントエンドへのリアルタイム配信がない: ユーザーが数分間何も見えず離脱する
業界別の活用パターン
| 業界 | 主な活用パターン |
|---|---|
| 製造業 | 2D図面→3Dモデル、機械部品の自動生成、数量拾い |
| 建築業 | 手書きスケッチ→3Dモデル、BIM連携、内装シミュレーション |
| 通信業 | 基地局系統図の自動作図、鉄塔強度検討、エリア設計 |
| 物流業 | 倉庫レイアウト図、宅配ボックス配置図 |
| 土木業 | 見積もり業務の数量拾い、図面OCR、積算自動化 |
よくある質問
AI図面解析の精度はどれくらい?
現状、単純な機械部品や系統図では高い精度が出る。ただし複雑な3Dモデルや曖昧な図面では、自己評価ループを回して複数イテレーションで品質を高める必要がある。人間の最終チェックは依然として不可欠である。
どのCADエンジンを使うべき?
目的による。Pythonで軽量にメッシュ操作したいならtrimesh、パラメトリックな機械部品ならCadQuery、複雑な3D形状ならbuild123dが向いている。実装では複数エンジンを切り替えられる設計にするのが推奨される。
Claude Agent SDK以外で代替は?
OpenAI Assistants API、LangGraph、LangChain Agentsなどが代替になる。ただしClaude Agent SDKは構造化ツール・Hook機構・MCP統合が強力で、本格的な図面解析エージェント構築に適している。
導入費用はどれくらい?
SaaS型の場合、月額数万円〜数十万円が一般的。自社実装の場合は初期開発費数百万円〜+LLM API利用料(月数万円〜)が必要。ただし、自社の業務に深く統合したい場合は自社実装が推奨される。
最も効果が出やすいユースケースは?
「定型的だが手作業で時間がかかる図面関連業務」が最も効果が出やすい。具体的には、数量拾い・系統図作成・配置図作成・図面OCRなどである。逆に「創造的な設計」は人間の領域として残る。
