Get your free and exclusive 80-page Banking Passkey Report
web bluetooth cover

Web Bluetooth APIとパスキー

パスキーにおけるWeb Bluetooth APIの役割を理解しましょう。WebAuthnによるクロスデバイス認証(CDA)を、Bluetoothの利用可否検出がどのように強化するのかを解説します。

Vincent Delitz

Vincent

Created: August 8, 2025

Updated: August 8, 2025


See the original blog version in English here.

Our mission is to make the Internet a safer place, and the new login standard passkeys provides a superior solution to achieve that. That's why we want to help you understand passkeys and its characteristics better.

1. はじめに:Web Bluetooth APIとパスキー#

パスキーは、ウェブにおける新しいログイン標準です。パスキーの核となる機能の一つが、BluetoothとQRコードを利用したクロスデバイス認証(CDA)です。この文脈で重要になるのが、もう一つのウェブAPIであるWeb Bluetooth APIです。

ウェブアプリがBluetoothデバイスと直接やり取りできるようにすることで、Web Bluetooth APIは、安全で効率的な認証プロセス(特にCDAにおいて)を確保する上で重要な役割を果たします。

この記事では、Web Bluetooth APIの仕組みを解説し、パスキー認証におけるBluetooth検出の意味合いを探ります。以下の問いに答えていきましょう。

  1. Web Bluetooth APIとは何か?
  2. Web Bluetooth APIの使い方は?
  3. パスキーにとってBluetooth検出が重要な理由は?

2. Web Bluetooth APIとは何か?#

Web Bluetooth APIは、ウェブアプリがBluetoothデバイスにアクセスし、通信できるようにするJavaScriptインターフェースです。HTML5標準の一部であり、Chrome、Edge、Operaなどのブラウザでサポートされています。このAPIにより、ウェブアプリは以下のことが可能になります。

  • 近くのBluetooth Low Energy(BLE)デバイスをスキャンする
  • ペアリングの許可をリクエストする
  • Generic Attribute Profile(GATT)プロトコルを使用してデータを交換する

Web Bluetooth APIには、3つの主要な関数があります。

2.1 getAvailability()#

getAvailability()は、ユーザーエージェントがBluetoothをサポートできるか(つまり、デバイスにBluetoothモジュールが搭載されているか)を示すブール値で解決されるPromiseを返します。一部のユーザーエージェントでは、このメソッドが返す値を指定するオプションをユーザーが設定できます。

navigator.bluetooth.getAvailability().then((available) => { if (available) { console.log("This device supports Bluetooth!"); } else { console.log("Doh! Bluetooth is not supported"); } });
Substack Icon

Subscribe to our Passkeys Substack for the latest news.

Subscribe

2.2 getDevices()#

getDevices()は、オリジンがアクセスを許可されているBluetoothDevicesの配列(範囲外や電源オフのデバイスも含む)で解決されるPromiseを返します。許可は、事前のBluetooth.requestDevice()の呼び出しによって取得されます。

navigator.bluetooth.getDevices().then((devices) => { devices.forEach((device) => { console.log("Device:", device.name); }); });

2.3 requestDevice()#

requestDevice()は、指定されたオプションを持つBluetoothDeviceオブジェクトへのPromiseを返します。選択UIがない場合、このメソッドは基準に一致する最初のデバイスを返します。

navigator.bluetooth .requestDevice({ filters: [ { services: ["battery_service"], }, ], }) .then((device) => { console.log("Device:", device.name); }) .catch((error) => { console.log("Error:", error); });

詳細とコードスニペットはこちらで確認できます。また、Web Bluetoothに関するW3C標準も参照してください。

Slack Icon

Become part of our Passkeys Community for updates & support.

Join

3. Web Bluetooth APIの特性#

  • HTTPSのみ: Web Bluetooth APIはセキュアなコンテキスト(HTTPS)でのみ利用可能で、安全なデータ送信を保証します。
  • ユーザー操作が必要: navigator.bluetooth.requestDeviceによるデバイス検出は、セキュリティ上の理由から、タッチやマウスクリックなどのユーザー操作によってトリガーされる必要があります。

4. Web Bluetooth APIの使い方#

Web Bluetooth APIがサポートされているかを確認するには、次のコードを使用します。

if ("bluetooth" in navigator) { // Web Bluetooth API is supported console.log("Web Bluetooth is supported!"); } else { // Web Bluetooth API is not supported console.log("Web Bluetooth is not supported!"); }

具体的な関数の呼び出し方については、上記で説明した通りです。

5. Web Bluetooth APIの利点#

Web Bluetooth APIは、開発者とユーザーにいくつかの利点をもたらします。

  • インタラクティブ性: ネイティブアプリやプラグインなしで、ウェブアプリがBluetoothデバイスとやり取りできるようになります。
  • ユーザーエクスペリエンスの向上: 心拍数モニターや音楽コントロールなど、ワイヤレスデバイスの機能やセンサーへのアクセスを可能にします。
  • セキュリティとプライバシー: ユーザーはデバイスへのアクセス許可を与える必要があり、この許可はいつでも取り消すことができます。

6. Web Bluetooth APIの問題点#

多くの利点がある一方で、Web Bluetooth APIにはいくつかの制限もあります。

  • SafariとFirefoxでの非サポート: すべてのブラウザがAPIをサポートしているわけではありません。特にSafariとFirefoxはサポートしておらず、これが多くのユーザーに影響を与える可能性があります。
  • デバイスの性能への依存: このAPIは、互換性のあるBluetooth Low Energy(BLE)デバイスでのみ動作します。さらに、バッテリー残量の低下や範囲外などの要因で、デバイスが検出できない場合もあります。
  • 進化中の仕様: ドラフト仕様であるため、Web Bluetooth APIは変更される可能性があります。開発者は最新の動向とブラウザの互換性について常に情報を得る必要があります。
  • 誤検出: 実際には利用できないにもかかわらず、APIがBluetoothをサポートしていると示すことがあります。
  • ユーザーによる利用可否の制御: ユーザーやブラウザがBluetoothの権限を無効にすると、Bluetoothアダプターが存在していてもgetAvailability()がfalseを返すことがあります。これはPermissions-Policy:Bluetoothによって制御されます。同様に、getAvailability()がtrueを返しても、Bluetoothアダプターの電源が入っていなかったり、プロンプトが表示された際にユーザーがAPIの使用許可を拒否したりすることがあります。

7. Web Bluetooth APIの採用状況#

Web Bluetooth APIの採用はまだ拡大中です。2024年6月現在、Can I Useによると、世界のユーザーの76.53%がWeb Bluetooth APIをサポートするデバイスを使用しています。

しかし、SafariとFirefoxでのサポート欠如は依然として大きな障害であり、これらのブラウザでのユーザーエクスペリエンスに影響を与えています。また、一部の機能(例:Bluetooth.getDevices())はユーザーが明示的に有効にする必要があり、バックグラウンドでAPIを使用する際の課題となることがあります。

最新のデータはこちらで確認できます:https://developer.mozilla.org/ja/docs/Web/API/Web_Bluetooth_API#browser_compatibility

8. パスキーにとってBluetooth検出が重要な理由#

Relying Party(証明書発行元)が自社のウェブサイトやアプリケーションでパスキーを提供したい場合、Bluetoothが利用可能かどうかを把握しておくべき大きな理由が一つあります。

8.1 パスキーの核となる機能:QRコードとBluetoothによるクロスデバイス認証(CDA)#

パスキーの革新的な新機能の一つが、**クロスデバイス認証(CDA)**です。これはハイブリッド認証としても知られています。この機能により、ユーザーはモバイルデバイスを使って、別のデバイス(通常はデスクトップやラップトップ)で認証できます。認証はQRコードとBluetoothを介して行われます。このハイブリッド認証方式はセキュリティと利便性を高め、シームレスなユーザーエクスペリエンスを提供します。技術に詳しくないユーザーの多くも、コロナ禍での登録や、後にデスクトップ対応を追加したモバイルファーストのメッセージングアプリ(例:WhatsAppやTelegram)を通じて、今ではQRコードのスキャンに慣れています。

CDA戦略の決定は、あらゆるパスキープロジェクトの初期段階で非常に重要です。CDAへの依存度が高まるほど、そのサポートと信頼性も向上させる必要があります。そのため、デバイスでBluetoothが利用可能かどうかを検出することが不可欠です。

8.2 Bluetoothが常に存在するとは限らず、CDAのUXに悪影響を及ぼす可能性がある#

しかし、すべてのデバイスにBluetooth機能が搭載されているわけではなく、またBluetoothがオフになっている場合もあります。パスキーを提供するRelying Partyにとって、Bluetoothの利用可否を検出し、CDAが使用できるか、あるいは別のフォールバック認証方法が必要かを判断することが不可欠です。Web Bluetooth APIは、ウェブアプリがユーザーデバイスのBluetooth利用可否を確認できるようにすることで、この解決策を提供します。

CDAは常に安定しているわけではなく、明確な理由なく接続に失敗することがある点に留意してください。さらに、APIが新しいため、APIから誤った結果が返されることもあります

8.3 FirefoxとSafariにおけるBluetooth非対応の影響の違い#

FirefoxとSafariでWeb Bluetooth APIが利用できないことは問題であり、特にFirefoxでは深刻です。

Safariはそれほど問題ではありません。なぜなら、CDAが実行される可能性のあるmacOSデバイスは、初期モデルからBluetoothを内蔵しているからです。しかし、macOSでBluetoothが機能しない場合、ユーザーはクロスデバイス認証で問題が発生し、設定のトラブルシューティングやフォールバック方法への切り替えが必要になるかもしれません。Safariを実行するiPhoneは、初代からBluetoothを内蔵しています。

しかし、Windowsデバイスで人気のFirefoxは大きな問題です。ユーザーがFirefoxでCDAを使用したい場合、Web Bluetooth APIが実装されていないため、Relying PartyBluetoothが利用可能かどうかを確実に判断できません。これにより、ユーザーエクスペリエンスが低下し、ユーザーはどうすればよいかわからずに行き詰まってしまう可能性があります。

以前のブログでも見てきたように、Windowsデバイスはパスキーの採用という点で遅れをとっています(State of Passkeysも参照)。Bluetoothの普及状況を見てみましょう。

9. Windows 10にBluetoothは必須か?#

Windows 10には厳格なBluetooth要件はありませんが、最新のラップトップやデスクトップのほとんどはBluetooth機能を備えています。しかし、ユーザーがオフにしていたり、一部の構成、特に自作のデスクトップでは利用できない場合があります。

10. Windows 11にBluetoothは必須か?#

Windows 11もWindows 10と同様に、Bluetoothを必須とはしていません。しかし、より統合された最新のハードウェアへのトレンドにより、ほとんどのWindows 11互換デバイスはBluetooth機能を備えている可能性が高いです。それでも、ユーザーが無効にすることができ、CDAの実装に影響を与えます。

11. 推奨事項#

以下の表では、デスクトップデバイスがBluetoothに対応しており、CDAクライアントとして使用できるかどうかを判断できるかを示しています。

オペレーティングシステムBluetoothハードウェアサポートブラウザでのBluetooth検出
ChromeEdgeFirefoxSafari
Windows 10
Windows 11
macOS

ハードウェアがBluetoothに対応していても、ユーザーによってBluetooth機能がオフにされている可能性があることに注意してください。Bluetoothがオフの場合でも、ユーザーはそれを有効化する選択ができるため、CDAを使用できます。これはWindowsとMacで機能します。 macOSでのBluetooth有効化リクエスト

Windows 11でのBluetooth有効化リクエスト

Bluetoothの利用可否に関する情報は、特にWindows 10とWindows 11で重要です。これらのOSではBluetoothのサポートが低く、(パスキーベースのログインにおいて)クロスデバイス認証が必要になる可能性が非常に高いためです。最近のmacOSデバイスはすべてBluetoothをサポートしています。これらのmacOSデバイスは、iCloudキーチェーンに保存されたパスキーに直接アクセスできる可能性もあるため、懸念事項ではありません。

Windows 10およびWindows 11では、getAvailability()を使用してBluetoothが機能するかどうかを確認します。ユーザーがWindows以外のパスキーしか持っていない場合は、すぐに他の認証オプションにフォールバックできます。

ハイブリッドパスキーしか利用できない状況でパスキー認証をトリガーしても、認証は成功せず、ユーザーは行き詰まってしまいます。残念ながら、Windows 10およびWindows 11上の他のすべてのブラウザでは、CDAがサポートされているかどうかを確認する他の方法はありません。

12. まとめ:パスキーのためのWeb Bluetooth API#

Web Bluetooth APIは、Bluetooth機能を通じてパスキー認証を強化するための強力なツールです。このAPIを理解し活用することで、開発者はより安全でユーザーフレンドリーな認証方法を構築できます。しかし、その制限にも対処し、さまざまなブラウザやデバイスでシームレスなユーザーエクスペリエンスを維持するために、堅牢なフォールバックメカニズムを確保する必要もあります。

この記事で、3つの中心的な問いに答えました。

  1. Web Bluetooth APIとは何か? Web Bluetooth APIは、ウェブアプリがBluetoothデバイスにアクセスして通信できるようにするJavaScriptインターフェースであり、安全なやり取りを促進します。
  2. Web Bluetooth APIの使い方は? getAvailability()getDevices()requestDevice()などの関数を呼び出して、Bluetoothのサポート状況の確認、アクセス可能なデバイスの一覧表示、デバイスのペアリング要求を行います。
  3. パスキーにとってBluetooth検出が重要な理由は? Web Bluetooth APIをパスキー実装戦略に統合することで、Bluetoothサポートを検出できるデバイスがある場合にのみCDAにフォールバックする、優れたパスキーベースの認証ソリューションを構築できます。

Web Bluetooth APIに関する詳細情報やサンプル集については、こちらをクリックしてください。

Add passkeys to your app in <1 hour with our UI components, SDKs & guides.

Start Free Trial

Share this article


LinkedInTwitterFacebook

Enjoyed this read?

🤝 Join our Passkeys Community

Share passkeys implementation tips and get support to free the world from passwords.

🚀 Subscribe to Substack

Get the latest news, strategies, and insights about passkeys sent straight to your inbox.

Related Articles