FirefoxでのWeb Serialサポート発表
(hacks.mozilla.org)- Firefox 151 デスクトップ版から Web Serial API をサポートし、Web アプリがネイティブソフトウェアなしで互換シリアルデバイスと通信可能
- Web Serial は JavaScript でシリアルデバイスの読み書きを行う API で、マイクロコントローラー・3D プリンター・電力計などに直接接続可能
- Adafruit のワークフローでは、Web Serial でファームウェアを転送して CircuitPython をインストールし、
code.pyファイルでデバイスコードを簡単に配布可能 - Firefox は明示的なユーザー許可、サイト別・ポート別の権限、アドオンゲーティングにより、デバイスアクセスのセキュリティ・プライバシーリスクを低減
- Mozilla は WICG 段階の Web Serial を WHATWG 標準化へ進めており、実際のハードウェアワークフローのテストとフィードバックを求めている
Web Serial API とサポート範囲
- Firefox 151 for Desktop から Web Serial API をサポートし、Web アプリケーションがネイティブソフトウェアなしで互換デバイスと通信可能
- Web Serial API は、Web サイトが JavaScript でシリアルデバイスを読み書きできるようにする Web API
- 対象デバイスには、マイクロコントローラー、開発ボード、3D プリンター、電力計、そのほかのシリアル接続ハードウェアが含まれる
- シリアル互換デバイスには Espressif ESP ベースのボード、Raspberry Pi Picos、3D プリンター、LEGO デバイスなどがある
- 最新のコンピューターには通常シリアルポートがないが、USB ポートに接続されるか Bluetooth でペアリングされたデバイスは、OS 上でシリアルポートのように見えるよう、自身をシリアル対応デバイスとして申告できる
- Web Serial 対応デバイスは、ホビイスト開発者、ハードウェアハッカー、教育者、メイカー、開発者がホームオートメーション、ハードウェアプロトタイピング、3D プリンティングなどに活用している
Adafruit と CircuitPython のワークフロー
- Adafruit は、オープンソースハードウェアと STEM 教育分野で Web Serial 活用を示す代表的な組織のひとつ
- Adafruit は Web Serial でファームウェアを転送し、自社デバイスに CircuitPython をすばやくインストールできるようにしている
- インストール後、ファイル名を
code.pyにすると、多くのデバイスで USB デバイスへファイルをドラッグ&ドロップする形でコードを配布できる - Python プログラムは、単純なテキストベースの入出力によって Web Serial 経由で Web ページと相互運用できる
- Adafruit Web Serial Tool を利用でき、CircuitPython サイトの
OPEN INSTALLER方式とは区別される - example CircuitPython Web Serial project は、ローカルの web page から Web Serial を使って、CircuitPython の file を実行しているデバイスへメッセージを送る構成
- Mozilla は Adafruit と協力し、Firefox 実装をこのコミュニティでよく使われる実際のハードウェアワークフローに合わせてテストしている
- Mozilla エンジニアの Alex Franchuk は、Web Serial と電子デバイスを組み合わせた Page Playground を作成した
電力測定とホームオートメーション
- Mozilla の Florian Quèze は 電力消費測定のための複数のプロジェクト を試し、Web Serial で市販 USB 電力計の電力データを読み取って Firefox に表示する デモ を作成した
- そのコードはデータを Firefox Profiler にエクスポートでき、電力データの可視化や共有を容易にする
- 関連リソースとして、page、GitHub repo、3 つの明るさモードを持つ照明の電力使用量を記録した Firefox Profiler data がある
- テストされた USB 電力計には AVHzY C3 USB、Joy-IT TC66C、YZXStudio USB ZY1280 が含まれる
- Home Assistant はホームオートメーション向けの人気オープンソースプロジェクトで、ESPHome は安価な ESP32 や類似デバイス向けに Home Assistant 互換ファームウェアを提供する
- ESPHome ファームウェアは Web Serial を通じて数回のクリックだけでインストールおよび設定できる
セキュリティとプライバシー
- Web プラットフォームがハードウェアデバイスの読み書きを可能にすると、セキュリティとプライバシーへの懸念が高まる
- Web Serial では、ユーザーが明示的に許可するまで、Web サイトはシリアルポートを表示したりアクセスしたりできない
- ポートの許可はサイト別・ポート別に行われる
- Web Serial API は、Web サイトが
navigator.serial.requestPort()を呼び出すことを要求し、ユーザーはアクセスを許可するポートを選ぶか、すべてのアクセスを拒否できる - Web サイトは接続済みデバイスの一覧を受け取らず、ユーザーが選択したポート以外について有用なフィンガープリンティング情報は提供されない
- Firefox は、サイトがシリアルポートアクセスを要求するタイミングと理由をユーザーが理解できるよう、Web MIDI API 実装で導入した アドオンゲーティング(add-on gating) を使用する
- アドオンゲーティングは、ほかの Web 権限プロンプトよりも、ユーザーが何を許可しようとしているのかをより詳しく伝える
- アドオンゲーティングのプロンプトは、サイトが最初にポートアクセスを要求した際、ポート選択プロンプトより前に表示される
- Firefox Enterprise Policies を使用する組織では、Web Serial はデフォルトで無効化されている
- 管理者は DefaultSerialGuardSetting ポリシー設定によって、組織全体で Web Serial 機能を明示的に許可またはブロックできる
標準化とフィードバック
- Web Serial はまだ Web Incubator Community Group(WICG) 段階にあるが、Mozilla はその範囲と長期にわたるインキュベーションを踏まえ、標準化への道筋があると見ている
- Mozilla は 新しい Workstream proposal を通じて、WHATWG で Web Serial API の標準化を進めている
- Mozilla は、周辺機器への Web アクセスのあり方を形作るために、エコシステムパートナーや標準化団体と協力していく計画
- デバイスベースの Web Serial ワークフローがあるなら、Firefox でテストできる
- Mozilla Connect でプロジェクトを共有し、質問したりフィードバックを残したりできる
- 技術的な問題については support.mozilla.org を確認するか、Bugzilla にバグを提出すればよい
1件のコメント
Lobste.rs の意見
WebUSB も実装してくれるとうれしい
だまされやすい人たち、特にシリアルポートが何か分からない人たちをどうやって保護するつもりなのか気になる。Mozilla の標準化に関する立場にもこう書かれている
マクロ機能付きキーボードは少し気になる。それでも Chrome にはこの機能が何年も前からあり、大きな問題もなかったので、深刻な懸念とは思わない。特に周辺機器が設定用途でますます使われるようになっている今では、有用性はリスクをはるかに上回る
これはありえない。ウェブページビューアにシリアルポートへのアクセスを追加することがどれほど狂っているか、言葉では表せない
ああ、そうだ。ウェブサイトにまさに必要だったのはこれだ。WebRawSockets を待っている。半分冗談だが、以前自分が関わっていたとき、SVG ワーキンググループは本当に SVG に raw socket を追加しようとしていた