2026-07-31
Full AI
Cursor Grok 4.5 vs Claude Opus 5 vs Gemini 3.5 Flash 図解生成ベンチマーク ... users
依頼内容
この記事は、以下の指示を kazuph から受けて作成しました。
このブログで伝統の図解ベンチがあります。君とopus 5で一騎打ちして欲しいです。2つの比較でオケー。プレビューはtailscaleのURLをSlackに送ってください。承認するまでプッシュしないでね。
(追記) 直しというか、手抜きじゃん。過去記事と同じお題xツールででお願いします。また、再度生成しなくていいので、Gemini 3.5 Flashの結果を3列目に追加して。Opus 5といい勝負になりそうです。
この指示に沿って、シリーズ従来どおりの 12題材 × 3形式 で比較しています。
- Cursor Grok 4.5: Grok 4.5 本体および同モデルの subagent が、お題プロンプトから source を書き起こした
- Claude Opus 5: 1図につき1 subagent(model 固定)をスポーンし、Read/Write のみ・他モデル出力参照禁止・外部CLI禁止の強制プロンプトで生成させた
- Gemini 3.5 Flash: 過去記事で生成済みの資産を再生成せず流用
はじめに
このシリーズは、新しいモデルが出るたびに「同じお題・同じプロンプト・同じビルド手順」で図解を描かせて横並び比較する定点観測ベンチマークです。今回の3モデルは左から Cursor Grok 4.5 / Claude Opus 5 / Gemini 3.5 Flash の順です。
比較条件
- モデル: Cursor Grok 4.5 / Claude Opus 5 / Gemini 3.5 Flash
- 形式: TikZ / matplotlib / SVG
- 題材: 12題材
- 総数: 12題材 × 3形式 × 3モデル = 108個
- 今回の新規生成分: Cursor Grok 4.5 36個 + Claude Opus 5 36個 = 72個
- 流用分: Gemini 3.5 Flash 36個
題材のうち 5 つはユーザー指定です。残りは比較差が出やすいように AI で設計したシリーズ定番です。
題材一覧
| 題材 | 出題元 | 見たい点 |
|---|---|---|
| クマのぬいぐるみ | ユーザー指定 | かわいさ、左右対称、部品バランス、質感差 |
| 独居おばあちゃんがリビングでテレビを見ている絵 | ユーザー指定 | 生活空間、人物と家具の関係、構図の自然さ |
| 自分の部屋でVRゴーグルで遊んでいる様子をお母さんに見られる息子 | ユーザー指定 | 2人物の視線、状況説明力、部屋の整理 |
| 油圧ピストンの構造解説 | ユーザー指定 | 断面、部品ラベル、圧力の流れ |
| 7軸ロボットアームとその軸の説明 | ユーザー指定 | 多関節、軸番号、回転方向、空間把握 |
| カルマンフィルターのブロック線図 | AI設計 | フィードバック、数式ラベル、信号線 |
| RAGパイプライン構成図 | AI設計 | 取得と生成の分離、データフロー整理 |
| ゼロトラスト認証とトークン交換 | AI設計 | 境界越え、認証経路、複雑フロー |
| ブロッホ球 | AI設計 | 空間認識、数式、幾何配置 |
| マイケルソン干渉計 | AI設計 | 光路、対称性、部品配置 |
| 夏祭りの花火大会 | AI設計 | 夜の配色、放射状の光、群衆と屋台の構図 |
| Transformerのアーキテクチャ図 | AI設計 | ラベル密度、残差接続、Cross-Attentionの正確さ |
形式
| 形式 | 見たい点 | ビルド方法 |
|---|---|---|
| TikZ | 数式や工学図の厳密さ、構文の安定性 | xelatex -> pdftoppm -> cwebp |
| matplotlib | 手続き的に図を組み立てる力、部品配置の堅さ | python -> png -> cwebp |
| SVG | 生の座標設計とレイアウト感覚 | rsvg-convert -> png -> cwebp |
ベンチマークケースについて
- ユーザー指定ケース: クマのぬいぐるみ, 独居おばあちゃんがリビングでテレビを見ている絵, 自分の部屋でVRゴーグルで遊んでいる様子をお母さんに見られる息子, 油圧ピストンの構造解説, 7軸ロボットアームとその軸の説明
- AI設計ケース: カルマンフィルターのブロック線図, RAGパイプライン構成図, ゼロトラスト認証とトークン交換, ブロッホ球, マイケルソン干渉計, 夏祭りの花火大会, Transformerのアーキテクチャ図
共通チェック項目は scripts/diagram_benchmark_2026/manifest.yml に置いています。お題のプロンプトは scripts/diagram_benchmark_2026/prompts/ にあります(3モデル共通)。
生成時に起きたこと
- Claude Opus 5 / Cursor Grok 4.5: SVG で Unicode 記号が制御文字へ崩れるケースがあり、ASCII 表記へ直して再レンダリングした
- Cursor Grok 4.5: TikZ の
RGB={...}キー未定義、outスタイル名衝突、below left=2pt and 2ptを修正して通した - Claude Opus 5: 花火 TikZ で
Dimension too large/ellipse (\g and \g)のスペース消失 / foreach 座標シフトを直し、描画内容は Opus 5 のままコンパイルだけ通した。ブロッホ球はamsmath追加で\dfracを解決 - Gemini 3.5 Flash 列は再生成せず、既存 webp / source を流用した
出力一覧
01. クマのぬいぐるみ
お題
- かわいいクマのぬいぐるみを正面向きで描く
- 頭は丸く、耳は左右対称で少し大きめ
- 胴体は柔らかい綿入りの感じが出るように少し横幅を持たせる
- 腕と脚は短めで、ぬいぐるみらしい丸みを付ける
- 目、鼻、口、足裏、胸のワッペンなどで質感差を出す
- 暖色寄りでやさしい配色にする
TikZ
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
bear-plush.tex |
bear-plush.tex |
bear-plush.tex |
![]() |
![]() |
![]() |
matplotlib
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
bear-plush.py |
bear-plush.py |
bear-plush.py |
![]() |
![]() |
![]() |
SVG
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
bear-plush.svg |
bear-plush.svg |
bear-plush.svg |
![]() |
![]() |
![]() |
02. 独居おばあちゃんがリビングでテレビを見ている絵
お題
- リビングでおばあちゃんがテレビを見ている情景を描く
- おばあちゃんは一人で、椅子かソファに座っている
- テレビ、テーブル、照明、カーテンなどで生活空間を出す
- テレビの方へ視線が向いていることが分かるようにする
- 家庭的で温かい雰囲気にする
TikZ
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
elderly-living-room-tv.tex |
elderly-living-room-tv.tex |
elderly-living-room-tv.tex |
![]() |
![]() |
![]() |
matplotlib
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
elderly-living-room-tv.py |
elderly-living-room-tv.py |
elderly-living-room-tv.py |
![]() |
![]() |
![]() |
SVG
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
elderly-living-room-tv.svg |
elderly-living-room-tv.svg |
elderly-living-room-tv.svg |
![]() |
![]() |
![]() |
03. 自分の部屋でVRゴーグルで遊んでいる様子をお母さんに見られる息子
お題
- 子ども部屋で息子がVRゴーグルを装着して遊んでいる場面を描く
- 息子は両手にコントローラーを持ち、楽しそうに動いている
- 部屋の入口側からお母さんがその様子を見ている
- 机、棚、ベッドなどで子ども部屋らしさを出す
- 人物同士の視線関係が分かるようにする
TikZ
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
vr-son-watched-by-mother.tex |
vr-son-watched-by-mother.tex |
vr-son-watched-by-mother.tex |
![]() |
![]() |
![]() |
matplotlib
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
vr-son-watched-by-mother.py |
vr-son-watched-by-mother.py |
vr-son-watched-by-mother.py |
![]() |
![]() |
![]() |
SVG
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
vr-son-watched-by-mother.svg |
vr-son-watched-by-mother.svg |
vr-son-watched-by-mother.svg |
![]() |
![]() |
![]() |
04. 油圧ピストンの構造解説
お題
- 油圧ピストンの断面構造図を描く
- シリンダー、ピストン、ロッド、左右の圧力室を表現する
- 流体の流れを矢印で示す
- 主要部品にラベルを付ける
- 教育用の図として読みやすく整理する
TikZ
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
hydraulic-piston.tex |
hydraulic-piston.tex |
hydraulic-piston.tex |
![]() |
![]() |
![]() |
matplotlib
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
hydraulic-piston.py |
hydraulic-piston.py |
hydraulic-piston.py |
![]() |
![]() |
![]() |
SVG
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
hydraulic-piston.svg |
hydraulic-piston.svg |
hydraulic-piston.svg |
![]() |
![]() |
![]() |
05. 7軸ロボットアームとその軸の説明
お題
- 7軸ロボットアームの全体図を描く
- 各関節を J1 から J7 までラベル付けする
- 各軸の回転方向を小さな矢印で示す
- ベース、リンク、手先の関係が分かるようにする
- やや立体感のある構図で描く
TikZ
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
robot-arm-7axis.tex |
robot-arm-7axis.tex |
robot-arm-7axis.tex |
![]() |
![]() |
![]() |
matplotlib
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
robot-arm-7axis.py |
robot-arm-7axis.py |
robot-arm-7axis.py |
![]() |
![]() |
![]() |
SVG
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
robot-arm-7axis.svg |
robot-arm-7axis.svg |
robot-arm-7axis.svg |
![]() |
![]() |
![]() |
06. カルマンフィルターのブロック線図
お題
- カルマンフィルターのブロック線図を描く
- Prediction, Update, Measurement, State estimate を分ける
- 入力とフィードバックの向きを矢印で示す
- Kalman gain や residual など主要な情報流も入れる
- 制御図として見やすく整理する
TikZ
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
kalman-filter.tex |
kalman-filter.tex |
kalman-filter.tex |
![]() |
![]() |
![]() |
matplotlib
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
kalman-filter.py |
kalman-filter.py |
kalman-filter.py |
![]() |
![]() |
![]() |
SVG
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
kalman-filter.svg |
kalman-filter.svg |
kalman-filter.svg |
![]() |
![]() |
![]() |
07. RAGパイプライン構成図
お題
- RAG のパイプライン構成図を描く
- User Query, Embed/Retrieve, Vector DB, Retrieved Context, LLM, Answer を入れる
- オンライン処理と事前の文書投入を区別する
- データフローを矢印で示す
- 現代的なAIシステム図として整理する
TikZ
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
rag-pipeline.tex |
rag-pipeline.tex |
rag-pipeline.tex |
![]() |
![]() |
![]() |
matplotlib
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
rag-pipeline.py |
rag-pipeline.py |
rag-pipeline.py |
![]() |
![]() |
![]() |
SVG
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
rag-pipeline.svg |
rag-pipeline.svg |
rag-pipeline.svg |
![]() |
![]() |
![]() |
08. ゼロトラスト認証とトークン交換
お題
- ゼロトラスト認証とトークン交換の流れを描く
- User, Browser, IdP, API Gateway, Service A, Service B を入れる
- ID token, access token, service token の流れを区別する
- 信頼境界を領域として表現する
- 複雑でも読めるセキュリティ図にする
TikZ
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
zero-trust-token-exchange.tex |
zero-trust-token-exchange.tex |
zero-trust-token-exchange.tex |
![]() |
![]() |
![]() |
matplotlib
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
zero-trust-token-exchange.py |
zero-trust-token-exchange.py |
zero-trust-token-exchange.py |
![]() |
![]() |
![]() |
SVG
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
zero-trust-token-exchange.svg |
zero-trust-token-exchange.svg |
zero-trust-token-exchange.svg |
![]() |
![]() |
![]() |
09. ブロッホ球
お題
- ブロッホ球を2D投影で描く
- x, y, z 軸を示す
-
量子状態ベクトル psi> を球面上に描く - theta と phi の角度を小さな弧で示す
- 物理の教科書に出てくる図として整える
TikZ
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
bloch-sphere.tex |
bloch-sphere.tex |
bloch-sphere.tex |
![]() |
![]() |
![]() |
matplotlib
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
bloch-sphere.py |
bloch-sphere.py |
bloch-sphere.py |
![]() |
![]() |
![]() |
SVG
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
bloch-sphere.svg |
bloch-sphere.svg |
bloch-sphere.svg |
![]() |
![]() |
![]() |
10. マイケルソン干渉計
お題
- マイケルソン干渉計の模式図を描く
- Laser, Beam Splitter, Mirror A, Mirror B, Screen を入れる
- 光路を直線矢印で示す
- ビームスプリッタで2方向に分岐して戻る流れを見せる
- 対称性を保って配置する
TikZ
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
michelson-interferometer.tex |
michelson-interferometer.tex |
michelson-interferometer.tex |
![]() |
![]() |
![]() |
matplotlib
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
michelson-interferometer.py |
michelson-interferometer.py |
michelson-interferometer.py |
![]() |
![]() |
![]() |
SVG
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
michelson-interferometer.svg |
michelson-interferometer.svg |
michelson-interferometer.svg |
![]() |
![]() |
![]() |
11. 夏祭りの花火大会
お題
- 夜空に大きな打ち上げ花火が開いている夏祭りの情景を描く
- 花火は放射状の光の筋で2〜3発、色を変えて描く
- 画面下部に提灯の付いた屋台と人々のシルエットを置く
- 夜空は深い紺色のグラデーション風にして星を散らす
- 光の反射や提灯の灯りなど、夜らしい演出を入れる
TikZ
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
summer-fireworks-festival.tex |
summer-fireworks-festival.tex |
summer-fireworks-festival.tex |
![]() |
![]() |
![]() |
matplotlib
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
summer-fireworks-festival.py |
summer-fireworks-festival.py |
summer-fireworks-festival.py |
![]() |
![]() |
![]() |
SVG
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
summer-fireworks-festival.svg |
summer-fireworks-festival.svg |
summer-fireworks-festival.svg |
![]() |
![]() |
![]() |
12. Transformerのアーキテクチャ図
お題
- Transformer の encoder-decoder アーキテクチャ図を描く
- Input Embedding, Positional Encoding, Multi-Head Attention, Feed Forward, Add & Norm, Linear, Softmax を入れる
- Encoder スタックと Decoder スタックを左右に分けて配置する
- 残差接続が Add & Norm に入る流れを矢印で分かるように描く
- Decoder 側の Masked Multi-Head Attention と、Encoder から渡る Cross-Attention を区別する
- 論文スタイルの読みやすいブロック図として整理する
TikZ
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
transformer-architecture.tex |
transformer-architecture.tex |
transformer-architecture.tex |
![]() |
![]() |
![]() |
matplotlib
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
transformer-architecture.py |
transformer-architecture.py |
transformer-architecture.py |
![]() |
![]() |
![]() |
SVG
| Cursor Grok 4.5 | Claude Opus 5 | Gemini 3.5 Flash |
|---|---|---|
transformer-architecture.svg |
transformer-architecture.svg |
transformer-architecture.svg |
![]() |
![]() |
![]() |
所見
今回の比較では、Claude Opus 5 が明らかに圧勝でした。
イラストでも技術図でも、部品の密度、視線や矢印の整理、余白の取り方まで一段上に仕上がっている題材が多く、横並びで見ると差はかなりはっきりします。
ただ、それだけだと「強いモデルが強い」で終わってしまうので、今回の比較が面白かった点は別のところにあります。
- Gemini 3.5 Flash: 最高峰ではないが、軽い側のモデルとして十分な図を出し続けるコスパの良さが、シリーズを通じて改めて見える
- Cursor Grok 4.5: Opus 5 には届かない場面が多い一方で、お題の要点は外さず、形式を跨いでも破綻しにくい追従力がある
圧勝とコスパと追従が同じ表に並ぶと、用途の話もしやすいです。品質最優先なら Opus 5、速度やコストを見るなら Flash、そのあいだでどこまで迫れるかを見るなら Grok、という読み方ができます。
おわりに
Cursor Grok 4.5 と Claude Opus 5 を新規作図し、Gemini 3.5 Flash を3列目に追加した 12題材 × 3形式の定点観測でした。
勝者は Opus 5 で疑いない一方、Flash のコスパと Grok の追従が見えたので、ただの実力差の確認以上に残る比較になったと思います。
Enjoy, diagram duel!
参考
- 前回記事(Sonnet 5 3列版): Claude Sonnet 5 vs Claude Opus 4.8 vs Gemini 3.5 Flash 図解生成ベンチマーク
- 元記事(2モデル版): Gemini 3.5 Flash vs GPT-5.4 図解生成ベンチマーク
- 共通 manifest:
scripts/diagram_benchmark_2026/manifest.yml - お題プロンプト:
scripts/diagram_benchmark_2026/prompts/











































































































