2026-02-14

AndroidアプリでPasskeys対応したと行ってもだいたいGoogle Passowrd Managerのみという状況は理解出来る

巷のAndroidアプリケーションが「Passkeys対応しました」という話が出ても、実際にはAndroidデバイスでの自動入力の設定に従ってPasskeysプロバイダが選択されるのではなく、Google Password Manager(以下GPM)が使われることが多いと思う。AndroidでPasskeysプロバイダ(実際にはCredential Managerサービス)が自動入力でサポートされたのはAndroid 14からなのだが、Android 14以降のデバイスを使っていて、かつ自動入力をGPM以外(例えば1Password)に設定していたとしても、GPMが使われている場合をよく見る。

Googleは過去のAndroidバージョンでWebAuthn対応を容易にするため、FIDO2ライブラリを別途提供している。このライブラリは、Passkeysの場合、Android 14以降であってもGPMを使うように設計されている。Android 14以降のみをターゲットにするアプリはほぼ存在しないため、このライブラリを使うのが最も手っ取り早いからだろう。また、WebAuthnリクエスト用のJSONデータ構造などもライブラリ側で吸収してくれるため、WebAuthnの詳細な知識なしでPasskeys対応アプリケーションの実装が可能である。

Firefox for AndroidではCredential Manager対応をJetpackなしで実装しているため、FIDO2ライブラリとCredential Managerの両方を使うようにしている。これが非常に面倒で、例えばWebページがPasskeysを使ったログインをリクエストしてきたとしよう。その認証情報がどのプロバイダに入っているかという情報はWebブラウザ側にはないので、どうしようもない。仕方なく、まずGPMに認証情報が入っているかを確認し(GoogleのFIDO2ライブラリにはそのような機能が数年前に追加された)、そこになければCredential Managerに問い合わせするようにしている。これも苦肉の策なのだが、Chromeのコードを見ても同じようなことをしていて、まあ何とも言えない感じである。

またCredential Manager対応したとしても、Firefoxに寄せられているバグ報告を見ると、Bitwardenにしているのだけど動かないとかの報告がたまにある。こっちでは全く再現できないのだが (自分は1passwordとBitwardenで常にテストを行っている)、まぁデバイスやGoogle Play Serviceの依存関係で動いたり動かなくなったりするっぽいので、トラブルの元でもある

こんな状況なので、Credential Manager用のAndroidXライブラリを使うよりも、圧倒的にFIDO2ライブラリを使った方が楽である。 そもそもChrome for Androidがサードパーティ製のPasskeysプロバイダを積極的に使う仕組みになっていないので、Google側もきちんと問題をトラッキングできていないような気がしている。

こういうところはWindowsやmacOSのように、WebAuthnのクライアント機能自体をAPIとして提供した方が、クライアントアプリ側で全く考える必要がないし、そもそもFIDO2ライブラリ側ですべて吸収すればよかったのにそうしないところが、Googleのセンスのなさというか、まあ言い方を変えれば、雇った人たちの仕事を作ってあげたんだろうね、としか言いようがない。

2025-08-20

ZwideのSA11というN150なWindows タブレットを入手した

Surface Goがもっと安ければ検証用のPCとして買おうと思ってたのだが、Zwideという会社のSA11が安かったので買ってみた。

ZwideはどうもODMをやっている深圳の会社っぽいけど、最近は自社ブランドのPCをいくつか作っている。というかどこかでみたことあるようなデザインのPCがいくつかあるので、そういう会社何でしょうってことだろう。

このPC自体は、世の中で出回っているN100とかを採用したPCでなくTwin LakeなN150だが、Twin Lake自体がAlder Lake-Nの改良版でしかないので、消費電力的に優位なだけでほぼN100と変わらない (らしい)。同じIntel 7での製造ってことなので、今後はN100がN150に置き換わるのだろう。

自分は試していないのだが、Linuxを使うとタッチパネルのドライバに難があって、タッチしたポイントが正しくないらしい。自分はLinuxでのテスト環境としては使わないけど、Windows以外を使うときは要注意みたい。

あと、この値段でUSI 2.0のスタイラスペンが使えるというのは大きなメリット。Amazon Fire HD 10用のスタイラスペンがUSI 2.0準拠なので試しに使ってみたところ、ちゃんと使用可能でした。

2025-08-18

Switch2 の Web ブラウザ

数年前にNintendo Seattle (マイクロソフトの本社の敷地に隣接する任天堂のアメリカ拠点) のオープンポジションでChromiumがらみのものがあったので、Switch2 はもしかして、WebKitではなくて、Chromium/Blinkベースになるかと思ってたけど、結局は、

Mozilla/5.0 (Nintendo Switch; WifiWebAuthApplet)
AppleWebKit/613.0 (KHTML, like Gecko)
NF/7.0.3.8.16 NintendoBrowser/5.2.0.35533

ということで、WebKitベースのままだったのだが、Switchも含めて一番よくわからないのは、

証明書のダイアログが実装されていること。これはたぶんNetFrontの機能なんだろうな。なおJavaScriptエンジンのJITは無効になっている模様 (ゲームとかだと有効にできるかもだがSDK次第でしょう)

2025-07-22

Iterator.size_hint

Iteratorトレイトsize_hintというメソッドがあるけど、Iterator.collect()Vecにするときは、このsize_hintを実装するかしないかでVecの初期キャパシティが決まるので、collectのパフォーマンスに影響があるということを今日初めて知った。

Ref: https://github.com/unicode-org/icu4x/pull/6764 / https://bugzilla.mozilla.org/show_bug.cgi?id=1974993

2025-05-24

TemporalのV8での実装

GoogleのInternatiolization teamに所属するShane CarrがRust Weekでプレゼン (2:50:00くらいから) してるんだが、

GoogleのV8 (Chromium等で使われるJavaScript Engine) がTemporalの実装のバックエンドにICU4Xを使うことになりそうだ。そもそもShaneはICU4XのChairだし、Temporalの仕様策定もおこなっている人なので、そういうことなんだろう。

Firefoxも現在はICU4X 1.5ベースの実装が使えるようになっているが、次のサイクルで自分がICU4X 2.0ベースに変更する予定だが、SpiderMonkeyとV8の実装はそろそろ固まりそう。ただWebKitどうするんだろ。ICU4Cベースでどうにかするんですかね...