Web Bluetooth API 日本語ドキュメント
https://tkybpp.github.io/web-bluetooth-jp/
WebBluetoothAPIとは
このAPIは、ブラウザ上からBluetoothLE(BLE)デバイスを操作することが出来るAPIです。
これにより、従来は iOS や Android で専用のアプリを作っていたところ、javascript だけでBLEを操作するアプリケーションの開発が可能になってきます。
このAPIは現在進行形で実装されており、つい先月にはMacのChromeからも利用出来るようになりました。Google I/O では、Fetch API や Web MIDI とともに、次世代のweb技術として紹介もされています。
私は、この WebBluetoothAPI を利用したライブラリの開発をしており、W3Cのコミュニティグループメンバーとして公式ドキュメントへのコントリビュートも経験することができました。
半年ほどこのAPIを触ってきていますが、日本語の情報がほとんど無いので翻訳してみました。なお、W3Cのコミュニティグループから翻訳の許可をいただいており、公認ではありますが公式ではありません。
Web Bluetooth API 日本語ドキュメント
https://tkybpp.github.io/web-bluetooth-jp/
(翻訳元)
https://webbluetoothcg.github.io/web-bluetooth/
目次
- はじめに
- セキュリティとプライバシーへの配慮
- デバイスの検索
- デバイスの表現
- GATT インタラクション
- UUID
- GATT ブラックリスト
- ナビゲーションインタフェースの拡張
- 用語と規則
※ 翻訳による内容の正確さおよび最新の内容を保証するものではありませんので、あくまで参考として利用していただき、適宜、W3Cの原文を参照していただくようお願いします。(翻訳に対するフィードバックやご指摘があればご連絡ください。)
サンプルとライブラリ
サンプル
このAPIを利用したサンプルも作成してみました。
GitHub - tkybpp/simple-webbluetooth
今回サンプルに利用したBLEデバイスは下記の3つです。
【日本正規代理店品】Sphero スター・ウォーズ エピソード7(スター・ウォーズ/フォースの覚醒) BB-8 (ドライブ / ホログラム機能) R001ROW
- 出版社/メーカー: Sphero
- 発売日: 2015/09/04
- メディア: Wireless Phone Accessory
- この商品を含むブログ (4件) を見る
PLAYBULB candle 【ルームキャンドル アロマキャンドル Bluetoothコントロール LED 】 BTL300 (1)
- 出版社/メーカー: Mipow
- メディア: Tools & Hardware
- この商品を含むブログを見る
【日本正規代理店品】 Witti Design DOTTI PIXEL LIGHT アプリでコントロールできる “ピクセル アート ライト” 6821-WH00A00
- 出版社/メーカー: Witti Design
- メディア: 付属品
- この商品を含むブログを見る
(BB-8はめちゃくちゃ可愛いです。)
デバイスとの接続部分に関しては、簡易ライブラリとしても機能するようにしています。
ライブラリ
ジョインしているベルリンのスタートアップで、BLEデバイスとサーバをブラウザ経由で連携させることが可能なライブラリも開発しました。
これにより、デバイスの認証をサーバサイドで行い、デバイスとサーバ間をセキュアに通信させることが可能になります。
GitHub - highmobility/bluetooth-websocket-api
このライブラリでは、connect や read/write characteristic など全てのイベントをサーバからブラウザ経由で指示することができ、その操作結果をブラウザからサーバに返すことも出来ます。
これにより、イベントドリブンでアプリケーションを実装することが可能になります。下記のように、基本的なイベントはほとんど対応しています。
ブラウザとサーバ間の通信は WebSocket を利用しており、
Elixir/Phoenix を用いたサンプルも合わせて公開しています。
所感
日本語のドキュメントを翻訳しておきながら、このようなことを言うと元も子もない気がしてなりませんが、ドキュメントは英語で読める方が圧倒的に良いです。
今回は日本でのWebBluetoothの利用促進と、自分自身の仕様理解を深めるという目的もあり、翻訳をしていました。
英語は日本語に比べて情報量が10倍以上もあると言われていますが、まさにそのとおりです。英語でコミュニケーション出来ることによるメリットは主に2つあると感じています。
- 最新の情報を把握できる
- コミュニティメンバーに質問ができる
1つ目は、特に解説もいらないと思いますが、日本語のドキュメントは、英語の最新版が公開されてから翻訳されるまでにタイムラグがあります。また、いくつかの日本語ドキュメントはアップデートがされていない枯れた状態になっているものも多く見受けられます。正しい正確な仕様を把握するためには、やはり本家の情報をキャッチアップし続ける必要があります。
2つ目に関して、英語だと最新の情報が把握できるのはもちろんですが、世界中にいる専門家たちとコミュニケーションをとることも可能になります。WebBluetoohコミュニティグループの中心メンバーはgoogleのエンジニアたちです。基本的にはメーリングリストとgithubのissueで、最新の実装状況や仕様のヒアリングのやりとりがされています。実際にデベロッパーがQAやバグの報告をすると、googleのエンジニアからすぐにレスポンスが返ってきます。私も、パリやサンフランシスコにいるgoogleのエンジニアとよくやりとりをしています。
なお、このAPIを利用すれば javascript のみでBLEデバイスを操作できますが、
BLEに関する知識もあったほうが開発がスムーズになります。
BLEに関して一番詳しいのは、洋書ではこちらです。
Bluetooth Low Energy: The Developer's Handbook
- 作者: Robin Heydon
- 出版社/メーカー: Prentice Hall
- 発売日: 2012/10/10
- メディア: ペーパーバック
- この商品を含むブログを見る
- 作者: 堤修一,松村礼央
- 出版社/メーカー: ソシム
- 発売日: 2015/03/23
- メディア: 単行本
- この商品を含むブログを見る