Slide 1

Slide 1 text

1 © Bitkey Inc. MCP でモノが動くとおもしろい スマートデバイス × 生成 AI のアプリ開発 Masatoshi Tsushima Bitkey, Inc. #mcp_lt_rush

Slide 2

Slide 2 text

2 © Bitkey Inc. Masatoshi Tsushima 津島 雅俊 2004 ソフトウェア開発との出会い Webサイトや携帯アプリを作って遊んでいました 2018秋 Bitkeyに参画 当初は主にGoでサーバサイドを開発 2019秋 ファームウェアを開発 デバイスのファームウェアの内製化や新規製品の 開発 2024夏 リプレース案件の立ち上げ 社内の各地に点在する重複機能をGo&Flutterでサ ブシステムに抽出 2022夏 Individual contributor (?) Android/iOS/Flutter、デバイスQA用アプリ、社 内仕様の標準化、Makefile職人、CIおじさん

Slide 3

Slide 3 text

3

Slide 4

Slide 4 text

4 ソフトウェアの領域を超えて リアルとデジタルの「分断」を解消する 「分断」は、リアルでもデジタル上でも存在します。だからこそ、 私たちはソフトウェアの領域にはとまりません。ハードウェアも同 時に開発‧共創することで、デジタルで解決されていないリアルの 体験も含めて、シームレスな体験を実現します。

Slide 5

Slide 5 text

5 © Bitkey Inc. Copilot が鍵を開けた (物理)

Slide 6

Slide 6 text

6 6 © Bitkey Inc. 2025/04/04 GitHub Copilot に MCP

Slide 7

Slide 7 text

7 7 © Bitkey Inc. 会社のアカウントでも使えるようになったし なんかやってみるか

Slide 8

Slide 8 text

8 8 © Bitkey Inc. 構成 MCP Server (自作, Dart) MCP Client (Copilot) MCP BLE 弊社のデバイス bitlock MINI

Slide 9

Slide 9 text

9 9 © Bitkey Inc. 提供ツール MCP Server MCP Client MCP BLE ● 周囲のデバイスをスキャン ● BLE でコマンドを送信

Slide 10

Slide 10 text

10 10 © Bitkey Inc. ツールの例:周囲のデバイスをスキャン tools/list の応答 "tools": [ { "name": "scan-devices", "description": "周囲のBLEデバイスをスキャンします。 ", "inputSchema": { "type": "object", "properties": { "timeout": { "type": "integer", "description": "スキャンのタイムアウト(秒)。デフォルトは 5です。" } 中身はスキャン結果を雑に .toString() して返す

Slide 11

Slide 11 text

11 11 © Bitkey Inc. 使ってみる #scan-devices を使って 電波強度で最も近い3台のデバイスを見つけて

Slide 12

Slide 12 text

12 12 © Bitkey Inc. 結果(抜粋) Here are the three nearest devices based on their RSSI values (higher RSSI indicates closer proximity): ● RSSI: -41, Type: BeaconDevice ● RSSI: -43, Type: BeaconDevice ● RSSI: -44, Type: BitkeyDevice, Device Type: bitlockPro2021

Slide 13

Slide 13 text

13 13 © Bitkey Inc. やるじゃん 1 Here are the three nearest devices based on their RSSI values (higher RSSI indicates closer proximity): ● RSSI: -41, Type: BeaconDevice ● RSSI: -43, Type: BeaconDevice ● RSSI: -44, Type: BitkeyDevice, Device Type: bitlockPro2021 高い・低いのどちらが近いか書いてないのに 一般知識から補完してる

Slide 14

Slide 14 text

14 14 © Bitkey Inc. やるじゃん 2 Here are the three nearest devices based on their RSSI values (higher RSSI indicates closer proximity): ● RSSI: -41, Type: BeaconDevice ● RSSI: -43, Type: BeaconDevice ● RSSI: -44, Type: BitkeyDevice, Device Type: bitlockPro2021 雑な toString() を要約してる

Slide 15

Slide 15 text

15 15 © Bitkey Inc. マニュアルと組み合わせてみる #send-ble-command で XXX(アドレス) のファームウェアのバージョン取って (コンテキスト: コマンド仕様.md)

Slide 16

Slide 16 text

16 16 © Bitkey Inc. 結果(抜粋) Ran send-ble-command The command to get the firmware version from the device with XXX(アドレス) was successful. The firmware version is v1.6.7 .

Slide 17

Slide 17 text

17 17 © Bitkey Inc. やるじゃん Ran send-ble-command The command to get the firmware version from the device with XXX(アドレス) was successful. The firmware version is v1.6.7 . 数十個のコマンド仕様から探して HEX 組み立ててる MCP は HEX 返してるのに 仕様通りデコードしてる

Slide 18

Slide 18 text

18 18 © Bitkey Inc. その他 ● 「テスト用の解錠コマンド送ってみて」 ○ サムターン(ツマミ部分)が回る ● 他の自社製品と組み合わせると? ○ AI が自動ドアを開ける ○ AI がエレベーターを呼ぶ

Slide 19

Slide 19 text

19 19 © Bitkey Inc. 考えられる応用例 ● スマホアプリの開発・テスト ○ 「デバイスの設定変更したからできてるか確認して」 ○ 「実機の応答からモックの振る舞いを書いて」 ● ファームウェアの開発・テスト ○ 「このコードをテストするコマンド送って」 ○ 「コマンドのテストケース作って」 → 「実際に送ってみて」

Slide 20

Slide 20 text

20 © Bitkey Inc. MCP サーバー開発のアイディア どこを MCP にすると旨そう?

Slide 21

Slide 21 text

21 21 © Bitkey Inc. 参考資料を読みながら操作している場所 人間: 課題ここにあり 生成 AI: マニュアルから手順を組み立てる MCP: 実行して結果を返す 生成 AI: 結果を解釈して報告する

Slide 22

Slide 22 text

22 22 © Bitkey Inc. Gateway や Proxy としての MCP ● 社内リソースへの認証を通す Proxy ○ Bearer, OpenID, SAML ○ 使い込んでる SaaS, 独自の業務システム ● プロトコル変換 Gateway ○ Bluetooth, USB, MIDI, 赤外線, SPI, I2C ● デバイスドライバとしての MCP ○ 計測器, 制御装置, データロガー

Slide 23

Slide 23 text

23 © Bitkey Inc. まとめ

Slide 24

Slide 24 text

24 24 © Bitkey Inc. 現実世界に干渉する生成 AI ● マニュアルと MCP のツールを渡す ○ バイナリデータも気軽に組み立ててくれる ○ 生成 AI でモノが加速したり回ったりすると「おぉ!」ってなる ● MCP 開発のアイディア ○ 参考資料を読みながら操作したいものを MCP にする ○ Gateway や Proxy としての MCP メーカーの中の人のけしからんイタズラ期待してます