MENU

WebUSB — ブラウザから直接USBデバイスと通信できるAPI

WebUSB アイキャッチ
WebUSB

WebUSBは、Webページから navigator.usb.requestDevice() を介してUSB接続された周辺機器に直接アクセスし、ベンダー固有のプロトコルでも自由に通信できるWeb APIです。GoogleのケネディとフィンレイらがW3C WICGで2015年から仕様化を進め、Chrome 61(2017年9月)で正式機能として公開されました。それまでドライバーや専用アプリのインストールが必要だったArduinoや3Dプリンタ、決済端末、独自仕様の業務用機器を、ブラウザから即座に操作できるようにする「Webプラットフォームの境界を物理デバイスに広げる」野心的なAPIです。

目次

この記事の目次

  1. USBプロトコルへの直接アクセス
  2. ユーザー同意と機器側の対応
  3. 代表的なユースケース
  4. Web Bluetooth・WebSerial・WebHIDとの関係
  5. まとめ

USBプロトコルへの直接アクセス

USBプロトコルへの直接アクセス

WebUSBはUSB仕様の階層構造をJavaScript APIにほぼそのまま反映しており、デバイスは「コンフィギュレーション」「インターフェース」「エンドポイント」の三層で操作します。デバイスを取得した後、open で接続し、selectConfiguration で構成を選び、claimInterface でインターフェースを確保、transferIn transferOut でエンドポイント経由でバイナリデータを送受信します。Control・Bulk・Interrupt・Isochronousといった4種類の転送タイプも個別のメソッドで扱える本格的な作りです。

USB Mass Storage Class(ストレージ)、USB HID(キーボード・マウス)、USB Audio Class(音声)などの標準クラスは、OSが既に専用ドライバを持っているためWebUSBからはアクセスできません。これはOSとの競合を避けるためのセキュリティ制約で、WebUSBは主に「ベンダー固有プロトコルを使う機器」や「カスタムデバイス」が対象です。3Dプリンタ・Arduino・カメラ・決済端末・産業用機器など、従来は専用ソフトを介してしか操作できなかった分野を、ブラウザから直接触れるようにする狙いがあります。

ユーザー同意と機器側の対応

ユーザー同意と機器側の対応

WebUSBはHTTPS限定かつユーザー操作起点でしか呼び出せず、navigator.usb.requestDevice を呼ぶとブラウザが標準のデバイス選択UIを表示してユーザーに明示的な許可を求めます。サイトが勝手に接続機器を列挙したり、選ばれていない機器にアクセスしたりすることはできません。また選択UIに表示されるのは、サイトが申告したベンダーIDやプロダクトIDのフィルタに合致する機器のみで、ユーザーは何を許可しているのかを把握しやすい仕組みになっています。

デバイス側にも対応が必要で、WebUSB仕様の「WebUSB Platform Capability Descriptor」を実装した機器は、接続時にブラウザへLanding Page URLを通知でき、機器を挿すとブラウザに通知が出て該当ページを開けます。ArduinoやAdafruit製の開発ボードなど対応機器が増えており、「USBを挿すとブラウザで設定画面が立ち上がる」という斬新な体験が可能です。OS側のドライバ要件としては、Windowsは標準でWinUSB経由でアクセスでき、macOS・Linux・ChromeOSは追加ドライバ無しで動作する設計になっています。

代表的なユースケース

代表的なユースケース

WebUSBの代表的な用途は、Arduino・ESP32・micro:bitといった開発ボードへのスケッチ書き込みです。従来はArduino IDEなどのデスクトップアプリが必要でしたが、Web Serial APIやWebUSBを使うことでブラウザ上のオンラインIDE(Arduino Cloud Editor、TinkercadなどのWebアプリ)から直接ボードへ書き込めるようになりました。教育現場やハンズオンイベントで「セットアップ不要」の体験を実現し、PC環境の差異に悩まされることなく学習を始められる利点があります。

業務用では、決済端末やカードリーダー、3Dプリンタの操作、産業用センサーの設定変更といった「機器ごとの専用クライアント」をWebアプリ化する動きが進んでいます。例えばPrusa製3Dプリンタの管理画面や、一部のPOS連携ハードウェア、音楽機材の設定ツールなどがWebUSBを採用しています。「専用ソフトの配布・更新・OSサポートに悩まなくて済む」「URLで誰でも即操作できる」という利点が、ハードウェアベンダーにとって魅力的に映る場面が増えています。

Web Bluetooth・WebSerial・WebHIDとの関係

Web Bluetooth・WebSerial・WebHIDとの関係

WebUSBはGoogleが進める「Project Fugu」の中核APIの一つで、Web Bluetooth・Web Serial・WebHID・WebMIDIといった機器連携系APIファミリーを構成します。それぞれ対象とする接続方式が異なり、USBはWebUSB、BLEはWeb Bluetooth、シリアルポートはWebSerial、HIDキーボード/ゲームパッドはWebHID、音楽機材はWebMIDI、といった役割分担です。USB機器の中でもシリアル変換チップ経由のものはWebSerialで扱えるなど重なる領域もありますが、原則として「機器の論理プロトコル」で選び分けます。

対応ブラウザはChrome・Edge・Operaが中心で、FirefoxとSafariは未対応です。Firefoxは「指紋採取リスクと実装複雑性が高い」として慎重姿勢を維持しています。そのため一般消費者向けサービスより、教育・業務・組み込み開発の領域での活用が中心です。「ブラウザを物理世界へ拡張する」というWebプラットフォームの方向性を象徴するAPIであり、ハードウェアハッカーや教育コンテンツ制作者にとって今後ますます重要度が増していく存在です。

まとめ

WebUSBは、ブラウザから直接USBデバイスを操作できるProject Fuguの中核APIです。Arduino書き込みや3Dプリンタ操作、決済端末や産業用センサーの管理まで、従来は専用ソフトに頼っていた領域をURLひとつで扱えるようにします。対応ブラウザは限定的ですが、教育・業務・組み込みの世界でWebの活用範囲を大きく広げる存在です。

※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次