---
url: 'https://www.corbado.com/ja/blog/web-bluetooth-api-パスキー'
title: 'Web Bluetooth APIとパスキー'
description: 'パスキーにおけるWeb Bluetooth APIの役割を理解しましょう。WebAuthnによるクロスデバイス認証（CDA）を、Bluetoothの利用可否検出がどのように強化するのかを解説します。'
lang: 'ja'
author: 'Vincent Delitz'
date: '2025-08-08T11:43:16.742Z'
lastModified: '2026-08-29T06:02:22.873Z'
keywords: 'パスキー Bluetooth, webauthn Bluetooth, Bluetooth javascript api, web Bluetooth api, Bluetooth api, ブラウザ Bluetooth 検出'
category: 'Authentication'
---

# Web Bluetooth APIとパスキー

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

パスキーは、ウェブにおける新しいログイン標準です。パスキーの核となる機能の一つが、BluetoothとQRコードを利用したクロスデバイス認証（[CDA](https://www.corbado.com/ja/glossary/cda)）です。この文脈で重要になるのが、もう一つのウェブAPIである[Web Bluetooth API](https://www.corbado.com/blog/web-bluetooth-api-passkeys)です。

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

この記事では、[Web Bluetooth API](https://www.corbado.com/blog/web-bluetooth-api-passkeys)の仕組みを解説し、パスキー認証におけるBluetooth検出の意味合いを探ります。以下の問いに答えていきましょう。

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

## 2. Web Bluetooth APIとは何か？

[Web Bluetooth API](https://www.corbado.com/blog/web-bluetooth-api-passkeys)は、ウェブアプリがBluetoothデバイスにアクセスし、通信できるようにするJavaScriptインターフェースです。HTML5標準の一部であり、[Chrome](https://www.corbado.com/ja/blog/digital-credentials-api)、Edge、Operaなどのブラウザでサポートされています。このAPIにより、ウェブアプリは以下のことが可能になります。

- 近くのBluetooth Low [Energy](https://www.corbado.com/passkeys-for-energy)（BLE）デバイスをスキャンする
- ペアリングの許可をリクエストする
- Generic Attribute Profile（GATT）プロトコルを使用してデータを交換する

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

### 2.1 getAvailability()

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

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

### 2.2 getDevices()

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

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

### 2.3 requestDevice()

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

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

詳細とコードスニペットは[こちら](https://developer.chrome.com/docs/capabilities/bluetooth)で確認できます。また、[Web Bluetoothに関するW3C標準](https://webbluetoothcg.github.io/web-bluetooth/#bluetooth)も参照してください。

## 3. Web Bluetooth APIの特性

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

## 4. Web Bluetooth APIの使い方

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

```javascript
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](https://www.corbado.com/ja/blog/digital-credentials-api)と[Firefox](https://www.corbado.com/ja/blog/digital-credentials-api)はサポートしておらず、これが多くのユーザーに影響を与える可能性があります。
- **デバイスの性能への依存：** このAPIは、互換性のあるBluetooth Low
  [Energy](https://www.corbado.com/passkeys-for-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](https://caniuse.com/?search=web%20bluetooth)によると、世界のユーザーの76.53%がWeb
[Bluetooth API](https://www.corbado.com/blog/web-bluetooth-api-passkeys)をサポートするデバイスを使用しています。

![Web Bluetoothの採用状況](https://www.corbado.com/website-assets/adoption_web_bluetooth_6c8993fd57.png)

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

![コンピューターのスクリーンショット（説明は自動生成）](e22a0666712cf2f0943562edb45960c4.png)![ブラウザごとのWeb Bluetooth採用状況](https://www.corbado.com/website-assets/adoption_web_bluetooth_browsers_57b09882da.png)_最新のデータはこちらで確認できます：[https://developer.mozilla.org/ja/docs/Web/API/Web_Bluetooth_API#browser_compatibility](https://developer.mozilla.org/ja/docs/Web/API/Web_Bluetooth_API#browser_compatibility)_

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

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

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

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

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

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

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

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

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

[Firefox](https://www.corbado.com/ja/blog/digital-credentials-api)と[Safari](https://www.corbado.com/ja/blog/digital-credentials-api)でWeb
[Bluetooth API](https://www.corbado.com/blog/web-bluetooth-api-passkeys)が利用できないことは問題であり、特にFirefoxでは深刻です。

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

しかし、**Windowsデバイスで人気のFirefoxは大きな問題です**。ユーザーがFirefoxでCDAを使用したい場合、Web
[Bluetooth API](https://www.corbado.com/blog/web-bluetooth-api-passkeys)が実装されていないため、Relying
Partyは**Bluetoothが利用可能かどうかを確実に判断できません**。これにより、ユーザーエクスペリエンスが低下し、ユーザーはどうすればよいかわからずに行き詰まってしまう可能性があります。

以前のブログでも見てきたように、Windowsデバイスはパスキーの採用という点で遅れをとっています（[State of Passkeys](https://state-of-passkeys.io/)も参照）。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対応デバイス](https://s3.eu-central-1.amazonaws.com/corbado-cloud-staging-website-assets/bluetooth_ready_devices_9ff94c903c.jpg)

<table>
    <thead>
        <tr>
            <th rowspan="2">オペレーティングシステム</th>
            <th rowspan="2">Bluetoothハードウェアサポート</th>
            <th colspan="4">ブラウザでのBluetooth検出</th>
        </tr>
        <tr>
            <th>Chrome</th>
            <th>Edge</th>
            <th>Firefox</th>
            <th>Safari</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Windows 10</td>
            <td>低</td>
            <td>✅</td>
            <td>✅</td>
            <td>❌</td>
            <td>❌</td>
        </tr>
        <tr>
            <td>Windows 11</td>
            <td>中</td>
            <td>✅</td>
            <td>✅</td>
            <td>❌</td>
            <td>❌</td>
        </tr>
        <tr>
            <td>macOS</td>
            <td>高</td>
            <td>✅</td>
            <td>❌</td>
            <td>❌</td>
            <td>❌</td>
        </tr>
    </tbody>
</table>

ハードウェアがBluetoothに対応していても、ユーザーによってBluetooth機能がオフにされている可能性があることに注意してください。Bluetoothがオフの場合でも、ユーザーはそれを有効化する選択ができるため、CDAを使用できます。これはWindowsと[Mac](https://www.corbado.com/ja/blog/parallels-passkeys-cda)で機能します。
![macOSでのBluetooth有効化リクエスト](https://www.corbado.com/website-assets/passkeys_bluetooth_popup_266940ee52.png)_macOSでのBluetooth有効化リクエスト_

![Windows 11でのBluetooth有効化リクエスト](https://www.corbado.com/website-assets/passkeys_bluetooth_popup_win10_5598d7ad8e.png)_Windows
11でのBluetooth有効化リクエスト_

Bluetoothの利用可否に関する情報は、特にWindows 10とWindows
11で重要です。これらのOSではBluetoothのサポートが低く、（パスキーベースのログインにおいて）クロスデバイス認証が必要になる可能性が非常に高いためです。最近の[macOS](https://www.corbado.com/ja/blog/how-to-enable-passkeys-macos)デバイスはすべてBluetoothをサポートしています。これらの[macOS](https://www.corbado.com/ja/blog/how-to-enable-passkeys-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に関する詳細情報やサンプル集については、[こちら](https://googlechrome.github.io/samples/web-bluetooth/)をクリックしてください。
