第10章 / Essay
第10章 № 10 · 2026

Python で考えて、
Claude に翻訳させる。

ハードウェア相手でも、思考は Python で

組み込みやマイコンを扱うあなたへ。

ハードウェアの制約から、最終的には C か C++、軽くても Rust や MicroPython で書くことになる。しかし、設計と検証は Python で行える。設計と検証を Python でやって、確認できてから C に翻訳する。これで組み込み開発の最大の難所 ── 「ロジックが正しいことを確かめる」 ── が劇的に楽になる。

組み込みの何が難しいか

組み込みコードを書いた人なら、誰でも知っている。

ロジックの間違いとハードウェアの不安定さが混ざる。今うまく動かないのが、コードのせいか、配線のせいか、電源のせいか、分からない。

これが、組み込み開発を遅くしてきた一番の理由だ。

思考は Python で

新しい組み込みプロジェクトで、最初に書くべきは Python だ。

センサから値を読んでフィルタをかけて判定する処理 ── これを実機で書くのではなく、まず Python で書く。サンプルデータを JSON で用意して、Python で読み込んで、フィルタを通して、判定結果を出す。

# サンプルデータでロジックを検証
import json

def detect_anomaly(values):
    avg = sum(values) / len(values)
    return any(abs(v - avg) > 3 for v in values[-10:])

with open("sensor_log.json") as f:
    rows = [r["value"] for r in json.load(f)]  # JSON なら float のまま

print("anomaly:", detect_anomaly(rows))

このコードは PC で動く。一秒で実行できる。グラフを書いて視覚的に確認することもできる。テストデータを変えて何度も実行できる。

ロジックが正しいかどうかを、ハードウェアと切り離して検証できる。

翻訳は Claude が

ロジックが Python で動いたら、それを C に翻訳する。

Claude に「この Python コードを、Arduino で動く C++ に翻訳して。配列のサイズは固定にして」と頼めば、翻訳されて出てくる。

// 翻訳された C++(Arduino 用)
bool detectAnomaly(float values[], int size) {
    float sum = 0;
    for (int i = 0; i < size; i++) sum += values[i];
    float avg = sum / size;
    int start = size - 10;
    if (start < 0) start = 0;
    for (int i = start; i < size; i++) {
        if (fabs(values[i] - avg) > 3) return true;
    }
    return false;
}

これを実機に書き込んで動かす。ロジックは Python で確認済みなので、ハードウェアで動かないなら原因はハードウェア側だ。デバッグの方向が定まる。

flowchart LR Idea(["やりたい制御
(センサ・アクチュエータ・判定)"]) Py["Python で書く
(PC で動かす)"] CSV["JSON のサンプルデータ
で検証"] OK{"ロジックが
正しい?"} Trans["Claude に C/C++ へ翻訳
を頼む"] HW["実機に焼く"] Bug{"動かない?"} HWFix["ハードウェア側
(配線・電源・タイミング)"] Idea --> Py --> CSV --> OK OK -->|No| Py OK -->|Yes| Trans --> HW --> Bug Bug -->|Yes| HWFix Bug -->|No| Done(["完成"]) classDef pc fill:#e8f5e9,stroke:#7a9a6d,color:#3a4d34 classDef hw fill:#fef3e7,stroke:#c89559,color:#5a3f1a class Py,CSV,Trans pc class HW,HWFix hw

言語の選択 ── 開発フェーズで決める

組み込みの言語は、ハードウェアごとに決めるのではなく、開発フェーズと 用途で決める。「最初は Python、性能が要るときだけ Rust、C/C++ は レガシー対応に限る」が AI ネイティブな組み込みの作法だ。

開発フェーズ 言語 環境 用途
設計・プロトタイプ Python (CPython) PC 上、Raspberry Pi アルゴリズム検証、データ取得実験、AI モデル試験
本番(性能が十分な場合) MicroPython ESP32、RP2040 センサー制御、IoT 通信、軽量な処理
本番(リアルタイム性能が必要) Rust STM32、RP2040、ESP32 高速制御、リアルタイム処理、メモリ制約下での動作
本番(エッジ AI、画像処理) Python + C/Rust 拡張 Raspberry Pi、Jetson Nano 推論、画像処理、Linux 環境での動作
レガシー対応のみ C、C++ 各種マイコン 既存資産の保守、認証済みコード

第一選択肢は、ハードウェアが許すなら MicroPython または Python。 性能や容量の制約で Python が無理なら Rust(Claude が C より 安全に書ける)。C/C++ は既存資産の保守のみ ── 新規に C/C++ を 選ぶ理由は、ほぼ無い。

Raspberry Pi クラスなら、最終形も Python で良い場合が多い。 Python のまま動かせるなら、翻訳は要らない。エッジ AI や画像 処理で性能が要る部分は C / Rust の拡張モジュール にする (pybind11PyO3)── これも Claude が書ける。

AI ネイティブな組み込み開発のワークフロー

上の表は 静的な選択肢 だが、実際の開発は 段階的に進む。 ワークフローはこうなる:

  1. 設計とプロトタイプ ── Claude と対話しながら、PC の Python で動作確認。データ取得、アルゴリズム、AI モデルの動作を PC で 検証する。
  2. マイコンへの移植 ── Claude に MicroPython 版への翻訳を 依頼。ESP32 や RP2040 で動かす。多くの IoT・センサー用途は ここで完結する
  3. 性能ボトルネックの特定 ── 動作させて測定。リアルタイム性能 が不足する箇所、メモリが厳しい箇所を特定する。
  4. ホットスポットの Rust 化 ── ボトルネックだけを Claude に Rust 化を依頼。MicroPython と Rust を組み合わせるか、全体を Rust + embassy / RTIC で書き直す判断をする。
  5. エッジ AI が必要な場合 ── Raspberry Pi(Linux)上で、 Python + C/Rust 拡張で動かす。マイコンより一段上のハードウェア を使う。
flowchart TB S1["1. 設計とプロトタイプ
PC の Python + Claude"] S2["2. マイコンへの移植
MicroPython"] Q1{"性能・メモリは
足りるか?"} Done1(["完了
(多くの IoT は
ここで止まる)"]) S3["3. ボトルネック特定
動かして測定"] S4["4. ホットスポットの Rust 化
(Claude が翻訳)"] Q2{"エッジ AI が
必要か?"} S5["5. Raspberry Pi へ
Python + C/Rust 拡張"] Done2(["完了
(リアルタイム用)"]) Done3(["完了
(エッジ AI 用)"]) S1 --> S2 --> Q1 Q1 -->|十分| Done1 Q1 -->|不足| S3 --> S4 --> Done2 Q1 -->|エッジ AI| Q2 Q2 -->|Yes| S5 --> Done3 classDef step fill:#e8f5e9,stroke:#7a9a6d,color:#3a4d34 classDef done fill:#fef9e7,stroke:#c8a559,color:#5a4a1a class S1,S2,S3,S4,S5 step class Done1,Done2,Done3 done

重要なのは「最初から Rust や C で書かない」こと。Python で ロジックを確かめてから、必要な部分だけ翻訳する(第1章「Python で 考え、Claude に翻訳させる」の組み込み版)。Claude が翻訳を担う ので、人間が複数の言語を行き来する負担は無い ── 思考は Python で、最終形だけ言語が変わる。

これも序章「Linux + Python + AI との協働」の組み込み版だ。 「同じやり方」が、マイコンの先まで伸びる ── デスクワークだけ でなく、その先のハードウェアまで。

MicroPython という選択

ESP32 や RP2040 のような小型マイコンには MicroPython が動く。これは Python のサブセットだ。

PC で書いた Python コードを、ほぼそのままマイコンに転送できる。書き換えサイクルが速い(コンパイル不要、転送数秒)。デバッグが PC と同じ感覚でできる。

MicroPython の制約 ── メモリ、速度、利用可能ライブラリ ── にぶつかったら、その部分だけ C に翻訳する。全部翻訳する必要はない。Python のまま残せる部分は残す。

ハードウェアは Claude も触れる

回路図、配線、データシート ── これらの読み解きも Claude に頼める。

「この OLED 表示モジュールを ESP32 に接続したい。配線とコードを教えて」と頼めば、ピン配置、ライブラリ、初期化コード、表示コードを返してくる。

データシートが PDF なら、テキスト化して Claude に渡せば「このセンサのレジスタ 0x21 は何か」を答えてくれる。

ハードウェアの知識も AI が持っている。一人でハードウェアと格闘する時代は終わった。

センサデータの分析も Python で

組み込みデバイスからデータを取れたら、それを分析するのも Python だ。

JSON や Parquet で吐き出させて、PC に持ってきて、Python で分析する。polars で集計、matplotlib / altair でグラフ、numpy で数値処理。Claude が全部書ける。

「センサが温度を 1 分ごとに記録している。この JSON / Parquet から、1 日のうちで温度が急上昇した時間帯を見つけて、グラフにして」と頼めば、コードが返ってくる。

組み込みの本体は C で動かしても、その周辺(検証・分析・可視化)は Python と AI で動かす。これが新しい組み込み開発のかたちだ。

例: 室温モニター

具体例を一つ。

目的: ESP32 で室温を測って、30 度を超えたら通知する。

第一段階(PC で Python):

ロジックを Python で書く。サンプル温度データ(JSON)を用意して、判定処理を書く。閾値の調整、ノイズ除去、通知条件 ── すべて PC で実験する。

def should_alert(temps):
    # 直近 5 分の平均が 30 度を超えたらアラート
    recent = temps[-5:]
    return sum(recent) / len(recent) > 30

第二段階(MicroPython で実機):

Python ロジックを MicroPython に転送する。MicroPython は Python のサブセットなので、ほぼそのまま動く。実機で温度センサ(DHT22 など)を繋いで、本物のデータで動かす。

第三段階(必要なら C に翻訳):

電池駆動で長時間動かしたい、メモリが厳しい ── そのときに C に翻訳する。Claude に頼めば翻訳が出てくる。

多くの場合、第二段階で終わる。MicroPython で十分動く。

例: 農家の畑センサネットワーク

別の例。農家 B さん。畑の数箇所に土壌水分・温度・日射のセンサを 置きたい。市販品は 1 台 5 万円、データは業者のクラウドに集約。

第一段階(PC で Python): 過去の気象データ(第1章「気象庁の API から取得」)で、灌水判定の ロジックを書く。「日射 ○ Wh/m² 以上 + 土壌水分 △ % 未満が 3 時間 続いたら灌水推奨」── これを Polars で過去データに適用、しきい値を 調整。Claude が初版を書く。

第二段階(MicroPython で実機): ESP32 + センサ(合計 3,000 円)に上のロジックを移植。MicroPython なので、PC のコードがほぼそのまま動く。SD カードに JSON で 1 分 ごとに記録。

第三段階(母屋の miniPC に集約): B さんの母屋に miniPC(第2章で立てた Forgejo の機械をそのまま再利用、 または別の miniPC)。ESP32 が WiFi で 10 分ごとに JSON を miniPC に 送信、Parquet に蓄積。Altair で日別グラフ、SQLite で異常検出履歴。

第四段階(自動灌水アクチュエータの設計): ソレノイドバルブを動かす筐体を Build123d(第3章)で設計、3D プリンタで印刷。ESP32 のリレー出力でバルブ ON/OFF、Python の 制御コードを Claude が C に翻訳(MicroPython のメモリでギリギリ 動かない場合のみ)。

結果:1 ヶ所あたり 3,000 円 × 数ヶ所、データは自分のもの、 業者のクラウドサブスク不要、判定ロジックは Markdown で読める、 故障時の修理も自分でできる(3D プリンタで部品を刷り直す)。

これは第12章「縦割りから個人の自立へ ── 農家編」の 技術的な 実装 だ。第1章(Python)、第3章(CAD)、第4章(Parquet)、第7章 (Web ダッシュボード、見たければ FastAPI で)── 全章の道具立てが 1 つの作品にまとまる

10年後も読める

C は 50 年前からある。これからも 50 年動く。Python は 30 年前から動いていて、これからも 30 年動くだろう。

業界特有の独自言語(古い PLC のラダー、車載の特殊規格)に閉じ込められていた組み込み知識を、Python と C と Markdown に出していく。特定ベンダーから時間を超える形式に移す

これは長期戦だ。しかし、毎日少しずつ進められる。

実例: 数字で見る

ESP32 で温度センサ判定の開発:

実機焼き直しサイクル:

産業用 PLC のラダー言語で書かれた 20 年前の制御ロジック: 担当者の引退で誰も触れない状態。Claude にラダーを読ませて Python に翻訳、Markdown 化で 1 週間。同じことを人手でやるなら半年以上、ベテランエンジニアを呼んでも完了の保証はない。

センサデータの可視化: 自前で Web ダッシュボードを作ると 1 週間。Python の matplotlibplot() 1 行 + Claude に「これを HTML レポートにして」と頼むと 30 分で実用レベル。

まとめ

組み込みでも、思考は Python で。

設計と検証を Python でやってから、必要なら C に翻訳する。Claude が翻訳を担う。ハードウェアと格闘する時間が減り、本来の課題 ── センサとロジックと運用 ── に集中できる

ここまでの 9 章で、AI ネイティブな仕事の道具立てが揃った。Python、Markdown、Mermaid、JSON / YAML / SQLite / Parquet、Office から離れる、業務システム、Web、アプリ、組み込み。

次の章では、共通の発展に進む。「AI に任せる仕事を見極める」── 何を渡し、何を残すかの判断のはなし。


関連記事

実例

再現可能なソース・コマンド・実測結果を、別ページにまとめてある。