
Claude Codeに頼んでM5Stack Cardputerに育成風Buddyを作ってみた
こんにちは、年間X00台の自作キーボードを作っている豊島です。
はじめに
Anthropicの開発者イベント「Build with Claude」で、M5StackのCardputerがAIエージェント向けハードウェアとして公式に取り上げられました。
あわせてClaude Code向けの公式プラグイン cwc-makers が公開されており、/cwc-makers:maker-setup というコマンド一発でCardputerのセットアップを完了することができます。
セットアップが終わった後は「〜を作って」のように自然言語で頼むだけで、Claude CodeがMicroPythonを書いて、フラッシュなしでデバイスに直接アプリをプッシュしてくれます。
今回はこのセットアップから、基本機能を触りつつ、最終的にClaude Codeに「育成できるBuddy」を作ってもらうところまでを一気にやってみました。

Cardputerとは
CardputerはM5Stackが展開しているカードサイズのポータブル開発キットです。
M5Stackといえば液晶がついた「スタックチャン」やボタンが最初から載ったESP32で知られていますが、Cardputerは、名刺サイズの筐体にキーボード、ディスプレイ、マイク、スピーカー、バッテリーまで全部入りのハードです。
発売当初より人気があり、コミュニティ製のアプリやファームウェアも豊富です。
物理キーのキーボードが載っているのが最大の特徴で、自作キーボード勢としてはそれだけでも手に取る理由になります。

接続方式について
試す前に気になっていたのが「WiFiを繋がないと動かないのでは?」という点でした。
結論、今回の範囲ではCardputer側のWiFi設定は一切不要で、役割ごとに接続方式が分かれています。
| 場面 | 接続方式 | 備考 |
|---|---|---|
| 開発(コードのプッシュ、ファーム書き込み) | USB-C | Claude Codeを動かすPCと有線接続。デバイス側にネットワークは不要 |
| Claude Buddy(状態表示・承認通知) | BLE | 近くのPCのClaude Desktopと直接ペアリング。WiFi不要 |
| 作ったアプリの実行 | なし | MicroPythonがデバイス上でローカル実行。バッテリーだけで単体動作 |
| アプリから外部APIを叩く場合 | WiFi | 音声でClaudeと会話する系の構成などはここに該当(今回は扱いません) |
事前準備
必要なものは以下です。
- M5Stack Cardputer-Adv本体
- USB-Cケーブル(データ通信対応のもの)
- Claude Code(インストール済み)
- Python 3.10以上
セットアップしてみる
プラグインのインストール
まずはClaude Codeを起動し、公式プラグインディレクトリから cwc-makers をインストールします。
/plugin install cwc-makers@claude-plugins-official
実行するとインストール確認画面が表示されます。インストールスコープを聞かれますが、個人利用なので Install for you (user scope) を選択しました。

確認画面からプラグインの中身も確認できます。
- Commands:
maker-setup - Skills:
cardputer-buddy,m5-onboard - 提供元: Anthropic(公式プラグイン)
Context cost(コンテキストコスト)の見積もりも事前に表示されるのが面白いところです。毎ターン約310トークン、スキル呼び出し時に約8.7kトークンとのことでした。プラグインを入れる際の判断材料になりますね。
インストールが完了すると Installed cwc-makers. Run /reload-plugins to apply. と表示されるので、案内に従って反映します。
/reload-plugins
リロードすると、読み込まれたプラグイン・スキル・エージェント等の件数が表示されます。これで maker-setup コマンドが使えるようになります。
/maker-setupを実行する
CardputerをUSB-Cで接続して、コマンドを実行します。
/cwc-makers:maker-setup
実行すると、まず環境チェックが走ります。pwd で作業ディレクトリを確認し、git の有無、build-with-claude リポジトリがすでに存在するかをまとめて確認していました。
私の環境ではgitがあったので、そのまま moremas/build-with-claude リポジトリのクローンに進みました。

外部スクリプト実行の確認が入る
ここで一度、Claude Codeのセーフティ機構によって処理が止まりました。「セッション中にクローンした外部リポジトリのスクリプトを、明示的な許可なく実行しようとした」ことを検知してブロックした、という挙動です。ネットから取得したコードを無確認で実行しない、という真っ当なガードですね。
このリポジトリは公式プラグインcwc-makersがオンボードに使う正規のものなので、Claudeに実行を許可を選んで進めました。

デバイスの認識とフラッシュまで
許可後、onboard.py がバックグラウンドで実行され、デバイスが認識されました。
- ポート:
/dev/cu.usbmodem101 - チップ: ESP32-S3 (QFN56) rev v0.2(Cardputer-Advに一致)
- Flash: 8MB
macOSでは追加ドライバなしでそのままシリアルポートが見えました。ここまで来ればフラッシュ前の難所はクリアです。

今回は、デバイスが自動でdownload modeに入っていたため、このままフラッシュまでいきました。
進捗は随時表示され、書き込み中はUSBを抜かないよう注意してください。

フラッシュが完了すると、再起動 → Install Apps工程へと自動で進みます。ここでClaude Buddyバンドルがデバイスの /flash/ に書き込まれます。バンドルの中身は以下の4点でした。
- カスタムランチャー(起動時のメニュー)
- hello cardputer(動作確認用)
- claude buddy(Claude DesktopとBLEで接続するクライアント)
- snake(ミニゲーム)

フラッシュからアプリ導入まで、USBは抜かずに待つだけで自動的に進みました。
ランチャーを起動する
USBに接続していればそのまま、抜いた状態でも本体上部にあるスライドスイッチで電源を入れると、短いブートログのあとカスタムランチャーが自動表示されます。
矢印キーでメニュー移動、Enterで起動、ESCでランチャーに戻る、という操作です。プリセットのアプリがメニューに並びます。
なお起動時に、イベント用WiFi(SSID cardputer)への自動接続を試みてLCDに結果を表示しますが、失敗してもランチャーはそのまま続行するので安心してください。

ランチャーからはsnakeなどのアプリもそのまま遊べます。

Claude Buddyを動かしてみる
バンドルに含まれるClaude Buddyは、BLE経由でClaude Desktopとペアリングして動くデスクトップコンパニオンです。
長時間タスクの状態表示や承認待ちの通知を手元のデバイスで受けられます。BLEのローカル接続なので、WiFiの状態には関係なく動きます。
接続手順は以下でした。
- Claude Desktop側: ヘルプ → トラブルシューティング → 開発者ツールをオン
- 開発のタブ → ハードウェアバディを開く...
- デバイス側: ランチャーでClaude Buddyを選んで起動 → Connect
デバイス側の画面に「Waiting to pair...」が出たら、Y でペアリングを許可します。接続が確立すると、Claude Desktopの「Hardware Buddy & メーカーデバイス」画面に「接続済み」とデバイス名(Claude_XXXXXX、末尾はMAC由来)が表示されます。画面にはデバイスのプレビュー(画面ミラー)と、アプリ/データをデバイスに送信する欄もあります。
デバイス側では、ランチャーからClaude Buddyを起動して前面に出ている必要があります。接続に成功すると、Cardputerの画面右上に緑で LINKED と表示されます。



接続後、Claude Desktop(≠Claude Code)で承認を伴うタスク(ファイル書き込みやコマンド実行など)を走らせると、承認待ちや完了の通知が手元のCardputerに届き、Y / N で手元から承認・拒否できます。
ターミナルに張り付かずに、長時間タスクの承認を物理デバイスで捌けるのがClaude Buddyの一番の使いどころです。
Claude Codeに育成風Buddyを作ってもらう
標準のBuddyはステータス表示が主なので、「育てるBuddy」をClaude Codeに作ってもらいました。
- キャラクター(Glow / Emberなど)とレベル(Lv.)の概念
- XPゲージとEnergyゲージ
- 餌やり(fedカウント、
type = feedで給餌、ESC = save+exitで状態を保存して終了)- タイピングをするとXPが溜まるように
- 空腹(Hungry...)などのステータス変化

投げたプロンプトとしては以下の通りです
たまごっちのようにタイピングで育てるbuddyを作りたいです
ハマったこと
実装完了後に対象のポートが検出できなくなってしまい、ケーブルを差したり抜いたりしても改善せずにハマりました。。

解決策として、本体上部の電源スイッチをOffにした状態でPCに接続したところ、検出することができました。
最後に
Claude Codeの /maker-setup でCardputer-Advをセットアップし、標準のClaude Buddyを動かしたうえで、Claude Codeに育成風Buddyを作ってもらうところまでを通しでやってみました。
普段Claude CodeでWebアプリやスクリプトを書いている感覚のまま、対象が物理デバイスに広がるのは新鮮な体験でした。/maker-setup でのセットアップはほぼ自動でスムーズでしたし、その後のアプリ開発も再フラッシュなしの差分プッシュで、会話と実機確認だけでイテレーションが回ります。
MicroPythonやESP32の知識がなくても、小さいガジェットの中で動くアプリが形になってしまうので、ハードウェア入門の入り口としてもかなり優秀だと思います。
これからもM5Stack Cardputerの可能性を探ってブログを書いていきます。





