Help us understand the problem. What is going on with this article?

Web USBでPaSoRiを扱えるOSをまとめてみた

More than 1 year has passed since last update.

3行で

  • WebUSB 楽しい
  • でも、PaSoRiはmacOSかAndroid以外は面倒or無理かも
  • WebUSB+NFC 楽しい

本題

先月投稿されたこの記事を見て、社内のNFC勢としては、scriptタグですぐ使えるライブラリを作ってみたり 1、会社の社員証も読み込めないか試行錯誤してみたり2、してました。

で、いろいろと社内レベルでも実運用を考えてみた場合、気になるのがOSについて。
ブラウザはとりあえずGoogle Chromeとしても、「じゃあどのOSでなら動くのか?」が重要になるかと思います。
「Windows PCなら安かったり余りがあるから常時稼働させても大丈夫」「ラズパイなら場所も取らないしもっと楽じゃね?」とかあるじゃないですか。

というわけで、手元で試せる環境で色々と見て回ってきました。

前提条件

  • 前述の記事のデモサイトでIDmを表示させるところまでを確認する
    • 2019年以降、別のツールでIDm認識までできればOKに変更
  • 使用するカードリーダーデバイスは、Sony製PaSoRi RC-S380
  • 使用するブラウザはGoogle Chrome系(自分が低コストで調べられる範囲で)
    • Google Chrome
    • Google Chrome Canary
    • Chromium Web Browser
  • 今回突っ込んだ確認はしません

結果

macOS

OS ブラウザ バージョン その他条件 どこまで動くか
Yosemite(10.10.5) Google Chrome 62.0.3202.62 (なし) IDm表示までクリア
El Capitan(10.11.6) Google Chrome 62.0.3202.94 (なし) IDm表示までクリア
Sierra(10.12.5) Google Chrome 61.0.3163.100 (なし) IDm表示までクリア
Sierra(10.12.6) Google Chrome 62.0.3202.94 (なし) IDm表示までクリア
Sierra(10.12.6) Google Chrome Canary 64.0.3273.0 (なし) IDm表示までクリア

当然のごとく普通に動作しました。
バージョン61からWebUSB APIが有効になったっぽいので、基本的にOSは選ばないと思って問題ないのでしょう。

Windows

OS ブラウザ バージョン その他条件 どこまで動くか
Windows 7 Ultimate SP1 Google Chrome 62.0.3202.9 (なし) デバイスが見つからない
Windows 7 Ultimate SP1 Google Chrome 62.0.3202.9 管理者モードで起動 デバイスが見つからない
Windows 7 Ultimate SP1 Google Chrome 62.0.3202.9 Enable new WebUSB backend デバイスが見つかるが、Access Denied
Windows 7 Ultimate SP1 Google Chrome 62.0.3202.9 Enable new WebUSB backend+管理者モード デバイスが見つかるが、Access Denied
Windows 10 Pro Google Chrome 62.0.3202.62 (なし) デバイスが見つからない
Windows 10 Pro Google Chrome 62.0.3202.62 管理者モードで起動 デバイスが見つからない
Windows 10 Pro Google Chrome 62.0.3202.62 Enable new WebUSB backend デバイスが見つかるが、Access Denied
Windows 10 Pro Google Chrome 62.0.3202.62 Enable new WebUSB backend+管理者モード デバイスが見つかるが、Access Denied
Windows 10 Pro Google Chrome 73.0.3683 デフォルト設定+ZadiによるWinusb.sys利用 IDm認識までいける

(Windowsで)WebUSBでPasoriを扱ってみるを実際に手を動かして試す機会があったので追記しました。

素の状態では無理だけど、デバイスドライバを適切に扱えるものに切り替えることで動きはしますね。
閉じた環境でないと難しそうですが、それでも動くのはありがたいです。

見事なまでの全滅っぷり。ここまで来ると自分が最低限必要な準備を怠ったのかなと思うレベル。
挙動を整理すると、こんな感じでした。

  • デフォルトでは見つけられない
  • flagsでEnable new WebUSB backendを有効にすると、リストに出るようになる。
  • が、アクセスしようとすると失敗する
  • 管理者権限でも変わらない

デバイスへのアクセスをするときに何か特別な条件が必要なんでしょうか?

Linux系

OS ブラウザ バージョン その他条件 どこまで動くか
Ubuntu 16.04 Chromium Web Browser 62.0.3202.62 Parallels上のVM デバイスが見つかるが、Access Denied
CentOS 7.2 Google Chrome 62.0.3202.94 VirtualBox上のVM デバイスが見つかるが、Access Denied
Arch Linux Google Chrome (あとで確認) (※1) PASMOのIDmの表示までOK

あまり良い結果が出ませんでした。

適当にインストールした感じでは、「リストには最初から出るが、接続しようとすると失敗する」という理由を追うのにちょっと躊躇する結果に。要はWindowsでEnable new WebUSB backendした時と同じでした。
ちなみに手元にRaspberry Piがあったのですが、インストール済みのRaspbianではすぐインストールできるChromiumはバージョン56ぐらいまでらしく、調査を断念しました。

...だったのですが、こちらの記事を見てなるほどと思い手元で確認したところ、「udev設定による通常ユーザーのアクセス許可」+「USB Driverのunbound」でめでたくIDm取得まで確認できました。感謝感謝
つまりそういうことだと思うので、過去に調べてみた組み合わせもうまくいきそう?

Android系

OS ブラウザ バージョン その他条件 どこまで動くか
Fire OS 5.6.1.0 Amazon Slik (未確認) PASMOのIDmの表示までOK
Fire OS 5.6.1.0 Google Chrome 65.0.3325.109 PASMOのIDmの表示までOK
Android 8.0.0 Google Chrome 69.0.3497.100 IDm認識までいける

Android+Chrome系ならうまくいく模様

感想

そりゃ最近できたばっかりだし、Google主導だし対応できないほうが多いですよね。
試せてない環境だとChromebookとかは動いてくれないかなと期待してるのですが、手元にないので今回はパス。

もうちょっとバージョンが上がったりしたらまた試そうかなと思います。


  1. 今のところ非公開です 

  2. 結果については秘密で 

attakei
東京湾岸にて勤務中。 【公私】主にインフラ・サーバサイドWeb担当。Pythonista 【他】徒歩バカ
nijibox
ニジボックスの開発は、社内のUI/UXデザインチームと連携をとりながらワンストップで行う開発支援サービスです。Reactを始めPHP(Laravel)・Ruby on Rails、Swift・Kotlinを使った開発実績も多く、バックエンドからアプリまで幅広く対応しています。Twitterで情報発信しています: https://twitter.com/nijibox_jp
https://nijibox.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away