ブラウザーの選択画面でBLE機器を選びGATTサービスへ接続する概念図

Web Bluetoothは、ページが近くのBluetooth機器を自由に走査する機能ではありません。安全なコンテキストでユーザー操作から要求を始め、ブラウザーの選択画面でユーザーが機器を選び、許可されたBLE GATTデータにアクセスする制限付きの仕組みです。ユーザーの同意を、機器やデータの信頼性の証明と取り違えないことが大切です。

Web Bluetoothが接続する範囲

Web Bluetoothの草案は、ウェブページがセントラルとしてBLEペリフェラルのGATTサーバーに接続するAPIを記述しています。機器はサービスを公開し、各サービスはキャラクタリスティックを持ちます。機器が実装し許可した場合、キャラクタリスティックを通じて値の読み取り、データ書き込み、通知の購読などを行えます。例として、バッテリー残量を読む、心拍測定値の通知を受け取るといった操作があります。

一般的な流れはrequestDevice()で選択を求め、選ばれたBluetoothDeviceのGATTサーバーへ接続し、サービスとキャラクタリスティックを取得することです。名前やサービスのフィルターは選択画面の候補を絞る条件であり、機器の本人性やデータの正確さを証明しません。このAPIの対象はセントラル役割のBLE GATTです。任意のクラシックBluetoothプロファイルやインターネットサーバーへの接続を提供するものではありません。

機器の検索は明示的な操作から始める

2026年6月3日付のWeb Bluetooth文書はW3C Bluetooth Community Groupの草案報告書であり、W3C標準でも標準化トラック上の文書でもありません。草案では、requestDevice()を呼ぶ際に一時的なユーザーアクティベーションが必要です。Chromeの開発者向けガイドも、ボタンのクリックなどを起点に検索を始め、ブラウザーの選択画面でユーザーが機器を選ぶかキャンセルする流れを示します。これにより、ページが背後で無断検索を続けることを制限します。新しい機器を選ぶ要求と、サイトにすでに許可された機器を取得する機能も区別します。

選択フィルターに含めなかったサービスを後から使う場合、optionalServicesで宣言しておく必要があります。機器名だけで選択し、必要なサービスを宣言しないと、選択後にサービス取得が失敗することがあります。フィルターはアプリが必要とするデータ範囲に合わせ、接続・読み取り・書き込みの失敗も通常の結果として扱います。

セキュアコンテキスト、Permissions Policy、GATTブロックリスト

Web Bluetoothはセキュアコンテキストでのみ利用でき、bluetooth Permissions Policyにも制御されます。草案の既定許可リストはselfです。クロスオリジンのiframeで使うには、レスポンスヘッダーとiframe側のポリシーの両方で許可する必要があります。ポリシーで拒否された場合は許可ダイアログ自体が出ないことがあるため、クリック操作を追加するだけでは解決しません。

草案は、ウェブページがアクセスできるGATT属性やメーカー情報を制限するレジストリのブロックリストを参照しています。これは発展中の仕様とブラウザー実装の境界であり、選択した機器が安全だという保証ではありません。ユーザーが選んでも、ファームウェアの完全性、測定値の正確さ、暗号学的な機器の本人性までは証明されません。重要な制御では機器側プロトコルの認証を別途評価し、受信値を検証して必要最小限のサービスだけを要求します。

実務家の視点:公開前に確認すること

Chromeのガイドは、機器選択、GATT接続、サービス・キャラクタリスティックの取得、通知購読、切断イベントの処理を例示しています。電波状態や機器の状態によって接続は切れるため、gattserverdisconnectedを検知し、ユーザーが再接続できる経路を用意します。どの機器でも自動再接続が成功し、同じ挙動になると約束してはいけません。

実際の対応状況はブラウザー、OS、周辺機器の実装、セキュリティポリシーによって異なります。W3C文書はCommunity Groupの草案であり、最終規格やすべてのブラウザーの共通動作を意味しません。配布対象で権限要求、必要サービス、キャンセル、拒否、切断を試験します。選択画面はアクセスを許可するだけで、機器を認証する画面ではないことを説明してください。

出典・参考資料