GUIDE01向けにアプリを作ってみる

>100 Views

May 20, 26

スライド概要

【大阪-ハイブリッド開催】XRミーティング 2026/05/20【AR/CR/MR/SR/VR】( https://osaka-driven-dev.connpass.com/event/391831/ )登壇資料。
GUIDE01用に何かアプリを作たいときにどういう開発や仕組みが使えるのか紹介。
例としてPCとGUIDE01をBLE接続してプレゼン支援アプリを作成し、その時のTipsも。タッチセンサーでスライド制御し、GUIDE01には次のスライドと定期的に経過時間を表示することで発表者ツール的な仕組みを組み込んでみました。

profile-image

ICT業界でソフトウェアエンジニア/アプリケーションアーキテクトを担当。 社内ではXR関連技術に関する啓もう活動や技術支援に従事。 業務の傍ら、XR(特にMixed Reality領域)についての開発技術の調査、開発などを行っています。 また、「大阪駆動開発」コミュニティ所属しており、日々の調査で得た知見はコミュニティを通して情報発信を行っています。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

GUIDE01向けにアプリを作ってみる ~ BLE 直叩きで作るプレゼン支援アプリ ~ 2026/05 XR ミーティング @takabrz1 Takahiro Miyaura

2.

宮浦 恭弘 (Miyaura Takahiro) Microsoft MVP for Mixed Reality 2018 Microsoft MVP for M365 2025 - 2026 XR は趣味です.AI 系も最近始めました。 - 202 5 大阪駆動開発コミュニティに生息 HoloLens 日本販売してからxR 系技術に取組む 新しい技術や、MRに使えそうな技術を調べる 技術Tips : https://qiita.com/miyaura https://zenn.dev/miyaura 最近興味があって取り組んでいるもの ○ AndroidXR ○ 新しいガジェット( MiRZA,Galaxy XR,etc …) ○ Microsoft Foundry, 生成AI @takabrz1 ※よかったらこれを機にお知り合いになってください

3.

今日の内容 • GUIDE01 とは • GUIDE01 アプリを作る4つの方法 • プロトコル比較 目次 • BLE 直叩きで作るプレゼン支援アプリ • Windows BLE • まとめ の制約と運用上の注意

4.

GUIDE01とは 手持ちのメガネに後付けする、約10g のウェアラブル・スマートディスプレイ ○製品:GUIDE01 / Happy Life Creators (大阪) ○重量:約 10g / 装着:手持ちのメガネに後付け ○ディスプレイ:単眼 624 ×405 フルカラー ○接続:Bluetooth LE ○公式アプリ:iOS / Android (v1.0.9 から OSC/HTTP/MQTT 対応) これにより カスタム表示 を外部から制御できるよ うになった 2026/05/20 © 2026 Takahiro Miyaura 4

5.

GUIDE01アプリを作る4つの方法 スマホのGUIDE01 アプリを経由する方法とPC 接続 GUIDE01 アプリ仲介(v1.0.9 〜) • OSC :UDP / port 8000 / 低レイテンシ・小ペイロード • HTTP :REST / port 8080 / 一番デバッグしやすい • MQTT:pub/sub / port 1883 / IoT 連携に強い PC 接続(BLE 通信)(公式SDK + bleak ) • PC + GUIDE01 のみで完結(スマホ不要) • GIF ・タッチイベントなど仲介ルートに無い機能が使える 2026/05/20 © 2026 Takahiro Miyaura 5

6.

プロトコル比較 方式 速度 得意分野 依存 OSC アプリ経由 高速・低遅延 動的画像・スライド送出 python - osc HTTP アプリ経由 5秒/ 枚 安定 動的画像・スライド送出 標準ライブラリ MQTT アプリ経由 中程度 IoT 統合・Home Assistant Mosquitto/paho mqtt BLE PC 直結 テキスト即時 /画像は遅め GIF ・タッチイベント・PC 単体 bleak + SDK — BLE 物理層 ~0.2fps 5秒以上の間隔推奨 アプリ仲介は「開始」必須 共通制約 2026/05/20 経路 © 2026 Takahiro Miyaura - 6

7.

実際に作ってみました。 PC 接続でつくるプレゼン支援アプリ 2026/05/20 © 2026 Takahiro Miyaura 7

8.

今回はPC利用(BLE通信でGUIDE01と接続) PC とGUIDE01 をBLE 通信で直接使えばタッチセンサーを補足できる アプリ仲介ルートでは不可能な2機能を実現 • ① 動的GIF (10 スロット切替) OSC/HTTP/MQTT には公式手段なし → 動的アニメーション可能 • ② タッチイベント受信 Single/Double/Swipe 前後/Long → デバイス側操作を入力に + 構成のシンプルさ スマホ・Wi- Fi 不要、PC + GUIDE01 ※ テキスト表示は scene/load 2026/05/20 のみで完結 でも可能 (lyric_data © 2026 Takahiro Miyaura は軽量・高速が強み) 8

9.

今回作ったもの: プレゼン支援アプリ 登壇中、手元PC からGUIDE01 に発表者向け情報を出す • 機能①: 次に話す内容/ タイマー表示 • 機能②: デバイスのタッチでスライド送り 構成: Python + bleak + Windows PC Webカメラ経由なので荒く見えますが 実際は普通に見られるくらいの品質 2026/05/20 © 2026 Takahiro Miyaura 公式SDK + GUIDE01 は連続使用で90 分くらいなので常時使う ものよりはスポットで使えるものと相性がよさそう 9

10.

ちなみに、、、 検証の時にのぞき込むのが面倒だったので・・・ Insta 360(USB GUIDE01 固定する何か 2026/05/20 カメラ) © 2026 Takahiro Miyaura 10

11.

SDKと主要API import guide01_protocol as g01 # UUIDs (BLE characteristics) g01.UUIDs.MSG_NOTIFY # 通知 / タッチ g01.UUIDs.FILE # 画像送信 g01.UUIDs.LYRIC # テキスト 3 行 g01.UUIDs.GIF_TEXT_DISPLAY # GIF表示 SDK で使える主な機能 • 通知 (notification) タイトル+本文を1回で表示 # テキスト 3 行 (lyric_data) g01.song_info(title, artist) g01.lyric_data(line1, line2, line3) • テキスト (lyric_data) 3行表示・200B 未満で高速 # 画像送信 / GIF / タッチ g01.build_image_messages(jpeg, mtu=450) g01.gif_text_upload_gif(gif_id, gif_bytes) g01.parse_touch_event(notify_bytes) • 画像送信 (build_image_messages) JPEG をMTU毎にチャンク分割 • GIF (gif_text_upload_gif) 10 スロット(id 0 - 9) に動的アップロード • タッチ操作 (parse_touch_event) Single/Double/Swipe 2026/05/20 © 2026 Takahiro Miyaura 前後/Long 11

12.

テキスト3行表示 (lyric_data) # 歌詞モード開始 await client.write_gatt_char( g01.UUIDs.LYRIC, g01.song_info("Title", "Artist"), ) # 3行テキスト送信 await client.write_gatt_char( g01.UUIDs.LYRIC, g01.lyric_data( "1行目", "2行目", "3行目" ), ) await asyncio.sleep(10) # 停止 await client.write_gatt_char( g01.UUIDs.LYRIC, g01.lyric_stop()) • 1メッセージ完結 — 200byte 未満で高速 • 用途 — プロンプター・字幕 • API — write_gatt_char • 速度 — Windows BLE でも実用速度 • 上限 — 3行まで 2026/05/20 © 2026 Takahiro Miyaura 12

13.

タッチイベント受信 EVENT_NAMES = { g01.TOUCH_SINGLE_CLICK: "single", g01.TOUCH_SWIPE_FORWARD: "swipe→", } def on_notify(_s, data): evt = g01.parse_touch_event(bytes(data)) if evt: print(EVENT_NAMES[evt["touch_event"]]) await client.start_notify( g01.UUIDs.MSG_NOTIFY, on_notify) ▸5種のイベント ▸ single / double / swipe( long press 前後) / ▸MSG_NOTIFY ▸ BleakClient.start_notify で購読 ▸parse_touch_event ▸ page_id と event 種別を取り出すだけ ▸PC とGUIDE01 をBLE 接続しないと使えない 2026/05/20 © 2026 Takahiro Miyaura 13

14.

デモ: guide01-bridge 2026/05/20 © 2026 Takahiro Miyaura 14

15.

Windows BLEの制約 Android (BluetoothGatt) Windows (WinRT BLE) • ATT_MTU: アプリから要求可 • ATT_MTU: OS自動・制御不可 • LE Data Length Ext. : 自動・有効 • Connection Interval : 7.5 –30ms に設定可 • 実効スループット: 高 (~5 秒/40KB) • LE Data Length Ext. : アプリ制御不可 • Connection Interval : アプリ制御不可 • mtu_size 取得: bleak Issue #1497 で不安定 • 実測 40KB 送信: 約60 秒 ( GUIDE01 よりも遅い) 2026/05/20 © 2026 Takahiro Miyaura 15

16.

制約と運用上の注意 ハマリどころがいろいろあります。 • アプリ側 BLE は明示的に切断 BLE は同時1ペア。スマホアプリ接続中はPC から一切繋がらない • 送信完了 ≠ 描画完了 データ量次第だが、データ送信後GUIDE01 デバイス内描画に数秒かかる。連続でデータを送り 続けると行がしきれずに動作しなくなる(白/ 黒画面で固まることあり) • MTUは最適値を見つける必要がありそう MTUを上げると1度に多くの情報を送れるが、その分GUIDE01 内での処理が増えるので考慮 が必要。MTU 498 はチャンク密集でバッファoverflow の可能性。実測 5KB/3 秒, 25KB/15 秒, 40KB/60 秒 • 特に画像についてはデータサイズ次第では GUIDE01 アプリ経由でHTTP 通信がいいかも 高解像度・連続更新はアプリ仲介HTTP で 5秒/ 枚、PC とGUIDE01 を直接通信させると帯域 などの影響でうまくいかないことが多かった。PC からBLE でつなぐ際には軽量画像とテキスト /GIF/ タッチ用途に 2026/05/20 © 2026 Takahiro Miyaura 16

17.

まとめ GUIDE01 用にアプリを作る際のTips などを紹介 • 用途別に4つの選択肢 • OSC / HTTP : 手軽に様々なアプリの表示に活用 • MQTT : IoT 連携 • PC にGUIDE01 を接続 : タッチセンサーなどの操作を利用 • PC とGUIDE01 のBLE 接続 • タッチセンサーを使えるのは魅力 • Windows PC からの接続時にはMTUの設定等帯域やデータ設計が重要 手軽に追加で情報表示ができるデバイスとして面白いですよ 2026/05/20 © 2026 Takahiro Miyaura 17

18.

参考リンク (Zenn連載) 今日紹介した話の詳細は複数のZenn 記事で紹介 ▸① 開発環境 & 共通メッセージ仕様 zenn.dev/miyaura/articles/guide01-part1-protocol-overview-e44baf368063f8 ▸② OSC 版 ( 低レイテンシ・小ペイロード) zenn.dev/miyaura/articles/guide01-part2-osc-e70c48d4473c7b ▸③ HTTP 版 (REST で一番デバッグしやすい) zenn.dev/miyaura/articles/guide01-part3-http-b89e9310cf934e ▸④ MQTT 版 (IoT 統合と Windows Mosquitto の罠) zenn.dev/miyaura/articles/guide01-part4-mqtt-fbe8d18fc27310 ▸⑤ BLE 直叩き版 (PC 単体・GIF ・タッチイベント) zenn.dev/miyaura/articles/guide01-part5-ble-direct-4532b4c2742625 2026/05/20 © 2026 Takahiro Miyaura 18

19.

大阪駆動開発 関西を中心に、IT系のおもしろそうなことを 楽しんでやるコミュニティ