
ソフトウェアエンジニアのためのBluetoothの基本
今日、Bluetoothを使いましたか?
ソフトウェアエンジニアは日常的にBluetoothを使用していますが、その技術的な仕組みについてはあまり詳しくない人が多いでしょう。
この記事では、Bluetoothの基本知識を紹介します。*1
** You can read the English version here.
Bluetoothとは?
Bluetoothは、デバイス同士が短距離で直接通信できるワイヤレス通信技術です。
通信範囲は約10メートルで、最大30メートルまで届くことがあります。
使用する周波数帯は2.4GHzです。*2
BluetoothのパケットにはUUID(ユニバーサル一意識別子)が含まれており、他のデバイスのパケットと区別できるようになっています。
Bluetoothは何に使われるのか?
Bluetoothは、以下の用途で広く使われています。
オーディオデバイス: 音声データの送受信(例:ワイヤレスイヤホン、スピーカー)
周辺機器: キーボードやマウスなど、PCやタブレットへの入力機器
スマートフォン: デバイス間でのファイル転送
ビーコン: 近くのデバイスを検知し、位置を推定する*3
なぜBluetoothを選ぶのか?
低消費電力に最適化されている
ハードウェアや開発コストが比較的安価
事実上の標準技術(デファクトスタンダード) であり、他の製品と互換性が高い*4
インターネット接続に依存しない ため
ネットワークの安定性を確保しやすい
通信の往復時間(レイテンシー)が大幅に短縮される
どのように動作するのか?(2つの主要プロセス)
1. アドバタイズ(Advertise)
Bluetoothデバイスは、他のデバイスと接続することなく、自身の情報を周囲にブロードキャスト(発信)します。アドバタイズ中、デバイスは自分の名前などの情報を含む小さなパケットを送信します。周囲のデバイスはこれを検出できます。
例えば、スマートフォンで近くのBluetoothデバイスの一覧が表示されるのは、周囲のデバイスがアドバタイズしているパケットをスマートフォンが検出しているためです。
このアドバタイズのプロセスでは、あるデバイスが他のデバイスの位置を推定することも可能です。*5
2. 接続(Connect)
Bluetoothデバイスは、アドバタイズを検出した後、特定のデバイスと接続を確立します。一度接続されると、リアルタイムでデータの送受信が可能になります。
例えば、スマートフォンでワイヤレスヘッドセットを選択して接続すると、その後ヘッドセットはスマートフォンから音声データを受信し、音を再生することができます。
私の会社はメーカーであるため、サービスやソフトウェアの設計はハードウェアを基盤としています。ソフトウェアエンジニアは、デバイスとサーバー間の通信プロトコルを学ぶことが求められます。
2.4GHz帯は電子レンジなど他の製品でも使用されているため、Bluetooth接続が干渉を受けることがあります。
ビーコンはアドバタイズ(広告発信)のみを使用します。ビーコンの使用例の一つとして、GPSの精度が期待できない建物内での正確な位置情報の提供があります。
これは経済学の分野では「ネットワーク外部性」と呼ばれます(wiki)。
もちろん、デバイス同士が接続されている場合でも、距離を推定することは可能です。