Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
腕時計ローカルAIスタックチャンを作ったら組み込み開発の罠にハマった話
Search
hawky the miscellaneous
June 30, 2026
Technology
64
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
腕時計ローカルAIスタックチャンを作ったら組み込み開発の罠にハマった話
2026.6.28 ローカルAIと向き合う展⽰会 Vol.2 のLTで発表した内容です。
発表時の台詞に合わせて当日のスライドから若干修正しています。
hawky the miscellaneous
June 30, 2026
More Decks by hawky the miscellaneous
See All by hawky the miscellaneous
AI AgentのTDDルール追従性を評価する
hawkymisc
0
91
Applied AI Engineering とは
hawkymisc
0
110
非CUDAの悲哀 〜Claude Code と挑んだ image to 3D “Hunyuan3D”を EVO-X2(Ryzen AI Max+395)で動作させるチャレンジ〜
hawkymisc
2
580
Other Decks in Technology
See All in Technology
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.2k
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
9.2k
LanceDB入門
mocobeta
9
600
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
事業価値と Engineering 2026年度版
recruitengineers
PRO
51
25k
Webアクセシビリティ入門 2026
recruitengineers
PRO
3
660
老害フォレンジッカーはAI羊の夢を見るか?
tadmaddad
0
350
20260804_Q4AzureUpdateBite_FabricDataAgentの精度を高める設計.pdf
matayuuu
1
150
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
830
自宅NWにISR4331を導入してみた話
okaits
0
110
ホームラボ紹介
y_sera15
0
210
Featured
See All Featured
Prompt Engineering for Job Search
mfonobong
0
410
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
270
Scaling GitHub
holman
464
140k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
390
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Darren the Foodie - Storyboard
khoart
PRO
3
3.7k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
490
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
AI: The stuff that nobody shows you
jnunemaker
PRO
9
920
Test your architecture with Archunit
thirion
1
2.3k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
My Coaching Mixtape
mlcsv
0
250
Transcript
Slide 1 / 13 改めまして、ほーきーと申します。LTのト ップバッターということで若干緊張してお りますが、普段はXのほうでいろいろつぶ やいております。1日数十ポストぐらい、 平均でつぶやいておりまして、いわゆるツ イ廃と呼ばれる部類です。AI関連の資格を
いくつか持っています、という「ちゃんと 仕事しています」アピールをしておこうと 思って、ここにバッジを載せております。
Slide 2 / 13 今回は「ローカルAIと向き合う展示会」と いうことですが、ローカルAIそのものから は若干外れた、番外編のようなテーマです 。ローカルAIに家の外からアクセスしよう としたらどうなるか・ということで、「腕 時計ローカルAIスタックチャンを作ったら組み込
み開発の罠にはまった話」という題材を選 んでいます。
Slide 3 / 13 腕時計ローカルAIスタックチャンとは何ぞや、と いう話ですが──前提として、AIスタックチャン というものがありまして。右側にあるよう な、こういう顔があって……それがスタックチャ ンというキャラクターです。M5Stackとい うメーカーが出している、マイコンにディ
スプレイとセンサーがまとまって付いたデ バイスに、こういう顔を表示するのが「スタ ックチャン」で、元々はメーカー発ではなくコ ミュニティ発のものです。
Slide 4 / 13 そのスタックチャンに、AIを使ってしゃべらせる というのが『AIスタックチャン』です。今回はそ れをさらに、AIをクラウドではなくローカ ル完結でやることと、腕時計としてスタックチャ ンを身に着けて持ち運ぶことを実現しよう と取り組みました。
構成としては、自宅のローカルマシンでAI を動かしたうえで、家にいるときは、この スタックチャンが動いているCore2というデバイ スからWi‒Fiで直接通信します。外出したと きはWi‒Fiで直接入れません。ちなみに、サ ーバー側をそのままグローバルに晒すのも 怖すぎるので、VPNを張ったうえで、その VPNに参加しているAndroidスマートフォ ンを使います。スマホは普段持ち歩くので 、スマホとこのスタックチャンのパーツをセット にして持ち運び、外出時はこれをUSBでつ ないで、ローカルのAIにアクセスする構成 にしています。
Slide 5 / 13 で、さきほどの構成図を見て疑問に思われ たかもしれません。 そうですね、Core2をVPNに参加させれば 、もっとシンプルな構成にできます。
Slide 6 / 13 私も最初は、Androidスマホをわざわざ経 由せずに、Core2をVPNに参加させればい いのではないかと考えました。そうすると 、全部Wi‒Fi経由で、しかもスマホのアクセ スポイントにWi‒Fiでつなげば、家の中でも 外でも同じ環境でできるので、シンプルな
構成になります。
Slide 7 / 13 しかし、このM5StackのCore2というデバ イスは、WindowsでもMacでもLinuxでも Androidでもありません。OSが動いている わけではなく、ファームウェアで動作を制 御する代物です。 私が使っているTailscaleというサービスも
Core2には対応しておらず、VPNクライア ントも当然ダウンロードできません。
Slide 8 / 13 そこで「どうする…?」と考えました。 さすがにTailscaleのクライアントをスクラ ッチ実装するのはやりすぎかなということ で、さきほどの構成にすると決めました。 ただ、Androidにアプリを載せてCore2と 通信しようとすると、アプリを自作するだ
けではなく、通信プロトコルも自作しなけ ればならない──という大きなハードルが ありました。とはいえ他にやりようがない ので、この構成でやってみました。自作ア プリと自作プロトコルで実装です。
Slide 9 / 13 このAIスタックチャンは、音声で話しかけるとスタッ クチャンがしゃべるというものです。実装はだ いたいAIに丸投げしていて、コーディング が終わりました。ファームウェアも書き込 みました。そこで、いざ試してみました。
Slide 10 / 13 短い文で試してみようと思って「元気です か?」と話しかけると、スタックチャンは、何を 言っているかわからない音声を返してきま した。 音声が再生できていないことだけはわかる 、という状態です。これが昨日か一昨日の
夜中くらいの状態でした。 Wi‒Fiのときはちゃんとしゃべれていたので 油断していたのですが、自作プロトコルに したらうまく音声が再生できないというこ とになり、「なぜなのか」ということをア プリ側にデバッグログを追加しながら、い ろいろ調べていました。
Slide 11 / 13 Wi‒Fiでは再生できていたのに有線通信にす ると再生できないのはなぜなのか── 音声が送られる経路の概略図は、この通り です。 ローカルAIサーバーマシン側で動いている Text‒to‒Speechで合成されたオーディオ
が、Androidスマートフォンに送られてき て、それがデバイスに送られる、という経 路です。 ただ、スマートフォンのリレーアプリがオ ーディオファイルをCore2に送るとき、フ ァイルを1回の通信では送れません。オー ディオファイルのサイズがそれなりに大き いため、1024バイト単位のチャンク(送信 しやすいサイズに小分けした塊)で、アプリ からデバイスにオーディオが送信されます 。
Slide 12 / 13 今回は、Core2側がそのチャンクをうまく受け取れて いませんでした。Androidアプリ側からデバイスに送 ろうとしている速度に対して、デバイス側が受け取る 速度が遅く、受け取りきれないパケットがたくさん発 生してしまいました。その結果、音が途切れ途切れに なったり、そもそもデコードできないというエラーが
出たりする状態になっていて……それを今朝から会場 でデバッグしていました。 【後記】 その後の調査で、Core2が受信できる帯域を超えたサ ンプリングレートのファイルが送信されており、そも そも原理的に受信するのが不可能であったと判明しま した。 ハードウェア制約により、通常のUSBでの有線通信で はなく、マイコン用のシリアル通信を利用しており通 信速度が遅いため、高品質なオーディオデータを受信 できませんでした。 そこで、TTSが生成するオーディオの品質を落とし、 シリアル通信でCore2が受信可能なレートまで抑える ことで、無事に音声が再生できるようになりました。 (このあたりの数字を含めた話は、別途時間があると きに記事にします)
Slide 13 / 13 感想としては、やはりハードウェアが絡む と制約条件が増えてくるので…… ソフトウェアと同じノリで「こういうこと はできるだろう」とカジュアルに考えても 、事前によく調査しないと、こういう落と し穴にはまります。
事前の下調べをじっくり行い、過去に問題 を乗り越えてきた先人たちの苦労と資産(ア セット)と涙をありがたく恩恵として受け取 りながら、Vibesだけで取り組むのではな く、きちんと設計をして開発に取り組むこ とが改めて重要だとわかりました。 皆様もこういう点にご注意ください。以上 でLT終了とさせていただきます。ありがと うございました。