55.6%問題:なぜ最前線のLLMは組み込みコードで失敗するのか

Dev.to / 2026/5/7

💬 オピニオンDeveloper Stack & InfrastructureSignals & Early TrendsModels & Research

要点

  • DeepSeek-R1は、回路図とタスク説明の両方が与えられた場合にEmbedBenchでpass@1が55.6%で、回路図なしでは50.0%まで低下する。
  • 記事は、フロンティアLLMがNext.jsのようなWeb課題を一発で解ける一方で、組み込みファームウェアの詳細が絡むと結果がコイン投げのようになる点を対比し、ベンチマークが3つのハードのみで実施されたことも指摘する。
  • EmbedBench(2025年のEmbedAgent/Wangらの論文に基づく)は、9つの電子部品を対象にArduino Uno・ESP32・Raspberry Pi Picoの3環境で126ケースを評価し、組み込みエンジニアの役割としてProgrammer/Architect/Integratorの3観点で性能を測る。
  • 採点はWokwiの仮想回路シミュレータに対する決定論的なpass@1で部分点がなく、そのため数値は信頼できるが、現実の組み込み開発に対しては不十分になり得ると論じる。
  • `pio boards --json-output`によるPlatformIOのボード数(1,553)を用いて、理論上はMCPサーバで多数のターゲットに対するビルド/書き込み/監視を広く支えられる可能性を文脈づけている。

55.6%.

これは、タスクの説明と一緒に回路図を与えたときのEmbedBenchにおけるDeepSeek-R1のpass@1です。回路図なしでは50.0%。組み込みシステム開発におけるLLMの最初の総合ベンチマークで、最良の推論モデルの中での最高スコアです。ESP-IDFへのクロスプラットフォーム移植は29.4%までで、Claude 3.7 Sonnet(Thinking)によって記録されています。

ちょっと立ち止まって考えてみてください。Next.jsのアプリをワンショットで通してしまうのと同じモデルが、ファームウェアではコイン投げ同然です。そしてベンチマークがテストしたのは3枚のボードだけです。

Sources: EmbedBench paper Section 3 -- 3 hardware platforms tested. PlatformIO Core 6.1.18,  raw `pio boards --json-output` endraw , retrieved 2026-05-06.

この1,553という数字は、この投稿が書かれた当日に、PlatformIO Core 6.1.18に対してpio boards --json-outputで取得した現在のカウントで、PlatformIO-MCPはそのカタログを直接包み込みます。つまり「1,553枚のボード」というのは、今日npxでインストールでき、そこに挙げられたどれに対してもビルド・書き込み(フラッシュ)・監視ができるMCPサーバーのことです。

EmbedBenchが実際に測っているもの

EmbedAgent(Wang et al., 2025)が論文です。EmbedBenchがベンチマークです。126ケース、9種類の電子部品、3つのハードウェアプラットフォーム――Arduino Uno、ESP32、Raspberry Pi Pico。著者らは、実際の組み込みエンジニアが担う3つの役割にわたってLLMを評価します。Programmer(回路図を元にコードを書く)、Architect(タスク説明から回路とコードを設計する)、Integrator(動作するコードをあるプラットフォームから別のプラットフォームへ移植する)。スコアリングはWokwiの仮想回路シミュレータに対するpass@1です。テストは通るか、通らないかのどちらかです。

手法は妥当です。シミュレータは決定論的で、ハーネスは自動化されており、この指標は段階的な部分点の余地を一切残しません。だから数字は本物です。ただし、組み込みエンジニアにとって論文を書いている人たちよりも重要な意味で、数字は不完全です。

EmbedBench Table 4 -- 10 models, 4 settings, single-shot pass@1

ハーネスが見られないもの

EmbedBenchはシミュレータでのワンショットです。モデルはタスクを1回だけ受け取り、答えも1回だけ書きます。コンパイラエラーがフィードバックされることはなく、モデルが読む・反応するためのerror: 'GPIO_NUM_45' was not declared in this scopeのようなものもありません。実機ボードへのフラッシュもなく、LEDが想定したレートで実際に点滅したことを確認するシリアルモニタもありません。Architectの役割は、ピンの割り当てが間違った回路を返しても、テストが失敗するまでそれに気づけません。

しかし、誰もそのようにしてファームウェアを書きません。組み込み開発は反復です。コンパイルして、ツールチェーンのノイズを読み、足りないインクルードを直し、フラッシュして、シリアルログを見て、ボーレートを変え、タイマISRのオフバイワンを直し、もう一度フラッシュします。このベンチマークはコールドスタート時の推測を測り、それをループ全体だと言わんばかりに報告します。

論文自身の失敗パターンも、このことを裏づけています。7セグ表示は、電圧レベルとセグメントの対応付けを間違えたために失敗しました。プッシュボタンも、デバウンスを扱えなかったために失敗しました。ESP-IDFの移行も、学習でほとんど見たことがないはずのフレームワークに対する構文を幻覚ででっち上げたために失敗しました。これらの失敗はすべて、ビルド、フラッシュ、シリアル出力といったものが2回目か3回目の反復で確実に拾えるタイプのものです。

実際のループで何が変わるか

ここが、PlatformIO-MCPが物語の穴を埋める部分です。MCPサーバーは、反復を可能にする4つのツールをエージェントに渡します。プロジェクトをビルドできる、バイナリをボードへ書き込める、シリアルラインを監視できる、そもそもどのボードが接続されているかを尋ねられる、です。これらのツールはESP-IDFや7セグの電圧テーブルに関する根本的な知識ギャップを埋めるわけではありませんが、解決するのは「フィードバック信号がない」という不在です。3回目の試行で出荷できるモデルは、毎回必ず1回目の試行で完璧にできるモデルより勝ちます。違いはループにあります。

セキュアな顧客サイドの方へのメモ

これらのプラットフォーム向けにファームウェアを書くチームは、たいてい同じで、セキュリティ要件が厳しいチームです。防衛、航空宇宙、医療、産業。MCP+ローカル推論+オープンソースのエージェント+オンプレミスのPlatformIOツールチェーンは、これらの環境に対して基準をクリアするスタックです。ベンチマークの数値と導入(デプロイ)のストーリーは、結局は同じ会話になります。

ループを試してみる

npx pio-mcp dashboard

platformio-mcpはnpmにあります。リポジトリはgithub.com/jl-codes/platformio-mcpです。ワンコマンド、実機ボード、そしてベンチマークが測っていなかった“フィードバックループ”をそのまま。もしエージェントをESP32やSTM32に対して動かしていて、共有できるデータがあるならXでDMしてください。