これまでAGIラボでは、SO-101やReachy Miniなど、いろいろなロボットを注文してきました。その中で最も早く届いたのが、今回のスタックチャンです。注文から24時間もかからずに手元に届きました。
届いてから2〜3日ほど実験してみて思ったのは、ディスプレイがあるのは楽しい、ということです。そして、センサーがあるのも楽しい。
本記事ではスタックチャンにデジタルペットを住まわせた方法や実験結果をまとめていきます。

スタックチャンとは
スタックチャンは、手のひらサイズの卓上ロボットです。もとは石川真也(ししかわ)さんが始めたオープンソースのロボットで、M5Stackとユーザーのコミュニティが一緒に製品にしました。
頭はM5Stackの小さなコンピュータ「CoreS3」で、2インチのタッチ画面、カメラ、マイク、スピーカーが入っています。首には2つのモーターがあり、左右と上下に顔を動かせます。頭のタッチセンサーやバッテリーも付いていて、USB-Cでつなげばすぐに動きます。
おもちゃとしては少し高価ですが、これ一つでいろいろな使い方ができる高性能なロボットです。
私はスイッチサイエンスで購入しました。18,150円(税込、送料無料)でした。14時までに注文したので当日発送され、翌日の昼12時には手元に届きました。

セットアップにビビる必要はもうない
最初はいろいろな記事を参考にしようとしていました。目に入ったのが、ハヤカワ五味さんの2025年10月の投稿です。
スタックチャンの環境構築4時間くらい格闘してるけどどうにもならないのでロボむいてないかもしれない・・・。
— ハヤカワ五味 (@hayakawagomi) October 11, 2025
私も最初はセットアップにビクビクしていました。でも、もうClaude Codeがある時代です。スタックチャンとPCをUSBでつないで一言伝えれば、セットアップは勝手にやってくれます。
私がやったのは、スタックチャンを開封して、説明書も読まずにUSBでつないだことだけです。ケーブルは、箱に入っていたものをそのまま使いました。
Mac miniで動いているClaude Codeにセットアップを頼みたかったので、変換アダプタを使ってMac miniにつなぎました。

最初の指示は、たった一言
最初に送った指示は、本当にこれだけです。
まずデジタルペットを画面に表示させてみよう! メカゴールデンレトリバーがいいですね。Codex Pet Skillが参考になりそう
Mac miniに接続しました!
そして約15分後。

実際に出来上がったものがこちらです。
映像に映っているもの、このワンちゃんのデザインも何もかも、コードだけで描かれているというのだから驚きです。画像は1枚も使わず、円と三角形だけで毎フレーム描いています。
一言ずつ、直していく
その後も、Discord経由で、あるいはCockpitで裏側で作業しているエージェントに直接、何度か指示を出していきました。
オフィスなので音が大きすぎる。逆に、出す音は大きいのにマイクの感度が低すぎて、人の声をうまく聞き取れない。人が来たことに気づかせたり、頭をなでられた時に鳴かせたりしたものの、反応が遅い。そういったところを細かく伝えて、調整してもらいました。
私が送ったのは、こんな一言ばかりです。
「高すぎる、ワンちゃんぽい可愛さがない」
「シー!」
「首を上げる動きを入れたい」
「シー!」と言えば、自分からは話しかけなくなりました。首を上げると、カメラに顔まで写るようになりました。
ワンちゃんのデザインは、最初のものも気に入っていたのですが、新しいスタイルにも挑戦してみたくなりました。そこで、今度はコードではなく画像生成を使ってほしいと伝えました。使ってもらったのは、CodexのPet Skill(hatch-pet)です。ピクセル風にしたかったので、参考になるピクセルアートの画像も渡しました。

音声が入ると、一気に難しくなる
ここで感じたのは、音声が入ると一気に難易度が上がるということです。
ちょっと脱線しますが、AIにUIデザインを頼むと、少し前までは人が操作する前提でUIを調整しきれないことがありました。ロゴをあと1.5倍にしたい、といったものです。今は、だいたい一発で出してくれるようになりました。
でも、音声の調整はまだめちゃくちゃ大変です。UIも実際に見ないとコードだけでは分からない部分がありますが、音声は実際に会話してみないと確かめきれません。
Claude が自分で話しかけて、自分でテストする
会話の仕組みはシンプルです。頭のてっぺんを1秒長押しすると、メカゴールデンが挨拶をして会話が始まります。
声のやり取りはOpenAIのGPT-Liveです。天気やニュースなど今の情報は、裏で別のモデルがweb検索して答えます。話しかけられたのか、人どうしの雑談なのかは、Decisions APIで判定しています。
自分で声を出して、自分で聞く
おもしろかったのは、テストのやり方です。Claude Codeは、Macの読み上げ機能で5種類の声を作り、6つの質問をGPT-Liveに聞かせました。合わせて約290回です。
測ったのは、話し終わってから返事の最初の音が届くまでの時間です。2つの設定を同じ時間帯に交互に走らせ、1条件36問ずつ比べていました。
スタックチャンのスピーカーから自分で声を鳴らし、それを本体のマイクで聞いて、自分の声がどれだけ入り込むかも測っていました。私はその様子を横で見ていただけですが、テストの様子は圧巻でした。
数字で見ると、意外な結果だった
声の種類、音質、指示の書き方を変えても、速さは変わりませんでした。どの条件でも中央値は1.3〜1.4秒ほど、遅い1割は1.6〜1.7秒ほどです。
これはGPT-Liveが「話し終わった」と判断するまでの時間で、こちらからは動かせないそうです。途中では、Claude Codeが自分の測り方の誤りに気づいて直す場面もありました。
そこで、速さ以外のところを直しました。本体がしゃべっている間もマイクを止めない作りに変え、返事を鳴らす前にためる時間を0.3秒から0.1秒に縮めています。
難しかったところ
1つ目は、スピーカーとマイクの距離です。スタックチャンは両方が近く、しゃべりながら聞くと自分の声でマイクが割れてしまいます。電話のスピーカーホンと同じく、人が話していない時はマイクを絞る方式で抑えました。
2つ目は、本物の声で話した時です。私が「こんにちは」と話しかけても、人どうしの会話と判定されて返事がありませんでした。英語で話しかけると、日本語として聞き取られました。
3つ目は、思わぬところの連鎖です。カメラが映らなくなった時の安全策が働き、本体が30秒ごとに再起動して、会話が途中で切れていました。
4つ目は、本体だけで動かした時の音質です。スタックチャンだけをWi-Fiにつないで会話させると、本体が一度に受け取れる量が小さく、16kHzの声を送りきれませんでした。8kHzに落とすと遅れずに話せるようになりましたが、声は電話並みに荒くなります。ここはどうしても音質が落ちてしまい、まだ答えが出ていません。
最初に試した時は会話にもならない状態だったのですが、そこから直してもらい、ようやく会話はできるようになりました。
ただ、声で返事をさえぎれるか、話し終わってから実際に声が出るまでの時間は、まだ測れていません。
会話の費用は1時間話し続けて約3ドルです。
ひとまず納得いく内容になりましたが、正直まだまだ改善点はあります。
リアルタイム性は、まだもうちょっと改善できると思っています。鳴いていた時のワンちゃんの声と会話がかぶさることもあるので、そこはもっと速くしないといけません。
それと、聞いた人は分かると思いますが、この見た目でこんなにナチュラルな人間の声を出すのか、という違和感もあります。この子にここまでリアルに喋らせるのが、キャラ設定として合っているのかどうか。
もちろんこれは実験で、リアルタイムAPIで話させることが目的なので、そこはいいのですが。
画面の中でもこれだけ難しいので、ハードウェアになるともっと難しくなります。手などを動かし始めたら、もっと高速にやらないといけません。とはいえ、今話しているのは、ほぼソフトウェアの課題です。
Decisions API は実際どうなのか
ペットは、反応が遅いと一気に「生き物」に見えなくなります。なでてから鳴くまでに1秒もかかったら、もう機械です。
Decisions APIは、文章を作らずに「どれを選ぶか」と「その確信度」だけを返すAPIです。今回は3つのことに使いました。
前に人がいるか、こっちを向いているか(カメラの画像を見て、確率で答える)
いまの発言は自分への話しかけか(独り言や人どうしの会話には返事をしない)
なでられた時、どの鳴き声で鳴くか
速さは、1回あたり0.25〜0.5秒でした。鳴き声選びは0.23〜0.39秒です。念のため、0.7秒たっても返事がなければ、本体が自分で決まった声で鳴くようにしてあります。
判定もかなり素直でした。私が前に座っている画像で「人がいる」は1.00、「こっちを向いている」は0.84〜0.95。「メカゴールデン、今日の天気は?」は0.98で返事をして、「ねえ、お昼どこ行く?」は0.09で黙ります。
費用はほとんどかかりません。この3日間で約4万回判定させて、入力は約3,450万トークン。金額にすると約3.5ドルでした。

いちばんお金がかかるのは、会話のGPT-Liveです。1分あたり0.05ドル。初日は22回、合わせて約51分話して、約2.5ドルでした。
ただ、これは1台での数字です。会場で何台も同時に動かしたり、Wi-Fiが混んでいたりすると、速さは変わります。
鳴き声:Before / After
デジタルペットを表示させてと頼んだ時点で、Claude Opus 5.5はプログラムでワンちゃんの鳴き声まで作ってくれました。それだけでもすごいことです。
ただ、聞いてみると高くて笛のようで、ワンちゃんらしい可愛さがありませんでした。そこで、ElevenLabsのAPIを使ってもらいました。
「ゴールデンレトリバーの子犬が…」と英語で説明を書くだけで、鳴き声が作れます。わん・きゃん・くぅーん・はふはふなど8種類を3パターンずつ、24本作ってもらい、全部採用しました。鳴くたびにランダムに選ばれます。どの鳴き声で鳴くかは、Decisions APIが選んでいます。
かかったのは約1,000クレジットで、費用はほとんど気になりませんでした。
Before:
After:
ハマりどころ
ここから先は、同じことをやりたい人のためのメモです。私はほとんど見ていただけで、詰まったのはClaude Codeですが、どれも自力ではまず抜けられないものでした。
Rosetta が無いと、Arduino の道具が動かない。 M5Stackのボードパッケージに入っている道具の一つがIntel用で、Rosettaを入れていないApple シリコンのMacでは止まります。先に入れておくのが早いです。
公式ライブラリが、最新版でビルドできない。 Arduinoのライブラリマネージャーから入れた公式ライブラリは、公式のサンプルすらビルドできませんでした(2026年10月16日時点)。GitHubの最新版を直接入れて解決しました。
買った時の機能は消える。 自分のプログラムを書き込むと、買った時のAI機能は消えます。最初に、本体の中身をまるごとバックアップしてもらいました。
マイクとスピーカーを同時に使えない。 最初の版では、返事を鳴らしている間はマイクを止め、鳴り終わってからマイクに戻していました。最新版で、しゃべりながら聞けるように変えています。
名前に「5G」が付いた Wi-Fi には入れない。 スタックチャンは2.4GHzのWi-Fiにしかつながりません。
「お昼どこ行く?」に返事をしてしまう。 最初は、挨拶の直後の「お昼どこ行く?」を自分への返事だと思ってしまいました。「ロボットはごはんを食べない」と教えて直りました。
カメラが下を向いていて、顔が写らない。 首を少し上げる動きを入れて、顔まで写るようになりました。首のモーターは、範囲を外すと壊れることがあるので、小さく、ゆっくり動かしています。
コードを公開しています
今回作ったスタックチャンのプログラムはGitHubで公開しています。
Claude Codeにこのリポジトリを渡すと、セットアップから会話の確認まで進めてくれるSkillも入れています。







