Web開発
数字を入力させてほしい
Just Let Me Write Digits (gendx.dev)
要約
スイスの政府ログインシステムAGOVの登録プロセスで、検証コード入力欄に数字を入力する際に発生したアクセシビリティバグについて詳述しています。筆者は、フォーカスが自動で移動しない、1つの入力欄に複数の数字が蓄積されるといった問題に直面し、様々なブラウザやOSで試しても解決しませんでした。サポートへの連絡も、同じ入力フォームを経由する必要があるため困難でした。最終的に、この問題は特定の環境でのみ発生するブラウザのバグである可能性が示唆されています。
全文翻訳
デジタルアイデンティティとそれがウェブにとって何を意味するのかは、ここ数年で活発な議論の的となっています。
また、多くの論争も引き起こしています。年齢確認法とそのオンライン匿名性への影響、Wikipediaが英国のユーザーの身元を確認する必要が生じる可能性、デジタルアイデンティティウォレットの必須フォームファクターとしての公式iOSおよびAndroidオペレーティングシステムへの依存、ましてや国際刑事裁判所の裁判官であるために米国のデジタルアカウントがキャンセルされた場合にこれらの相互依存関係が何を意味するかは言うまでもありません。
私の話は、スイスの政府ログインシステムAGOVに関するものです。
2024年から展開されており、現在160万アカウントを数え、失業保険の受給や税金の申告(必須活動!)など、多くのインタラクションでログインメカニズムとしてますます利用されるようになっています。
チューリッヒ州では、市民権を申請するための唯一のエントリーポイントです。
そのため、私もAGOVアカウントを作成する必要がありました。
残念ながら、アカウント登録は、奇妙なアクセシビリティバグの根幹を理解するまで、本当に困難なものとなりました。
「Just Let Me Select Text」に触発されて、今度は私が「Just Let Me Write Digits」を紹介します。
AGOV登録
サポートへの連絡?
周囲に尋ねる
ウェブページの調査
結論
事後分析
AGOV登録
AGOV登録プロセスの最初のステップは、メールアドレスを入力し、そのアドレスを検証するための検証コードを入力することです。
私の問題は、このコードを入力することさえできなかったことでした!
状況を説明すると、検証コードを入力するフォームは6つのボックス(数字ごとに1つ)に分割されています。
最初の奇妙な点は、数字を入力するたびに、フォーカスが次のボックスに自動的にジャンプしなかったことです。
代わりに、現在のボックスにさらに多くの数字が蓄積され、エラーを示す赤色でハイライトされました。
最初は、これは単なるマイナーなUIバグであり、各数字の後に手動で次のボックスにジャンプできると思っていました。
しかし、これは機能せず、1つのボックスに1つの数字を慎重に入力した場合でも、ページは最後に常に「フィールドが必要です」というエラーを表示しました。
奇妙です。
開発者ツールでDOMを見て、手動で調整できるフォーム値があるかどうかを確認しましたが、明白なものはありませんでした。
ウェブコンソールにもエラーメッセージは記録されませんでした。
別のメールアドレス、あるいはtest@example.comのような架空のアドレスを使用しても、違いはありませんでした。
Linux上のFirefoxでウェブを閲覧していたため、この組み合わせがサポートされていないか、CAPTCHAに失敗したのではないかと考えました。
これは可能性は低いですが、不可能ではありません。最近、FirefoxやLinuxで特に問題が発生するウェブサイトにはほとんど遭遇しません。
実際、登録ページは検証コードフォームが表示される直前にeu-api.friendlycaptcha.euに接続します。
そして、公式AGOVドキュメントは、セキュリティキーに関する別のページでLinuxとFirefoxがサポートされていると述べているにもかかわらず、サポートされているオペレーティングシステムとしてWindowsとmacOSのみを挙げています。
これを排除するために、最終的に6つのブラウザとオペレーティングシステムの組み合わせを試しました。Linux上のFirefox、Chromium、Chrome。macOS上のFirefox、Safari、Chrome。
すべて同じエラーが表示されました!
サポートへの連絡?
この時点で、公式サポートに連絡するのが理にかなっていると思いました。
AGOVウェブサイトには多くのヘルプセクションがありますが、残念ながら、サポートに連絡する唯一の方法はウェブフォーム経由であるため、これはあまり役に立ちませんでした。
そして、そのフォームはあなたのメールに検証コードを送信することから始まります!
私がパスできなかったのと同じフォームです。
そして、はい、FAQには、このフォームがサポートに連絡する唯一の方法であると明示的に記載されています(私の強調)。
参加機関へのサポートは、セカンドレベルサポートによって、営業時間中にオンラインでチケットを作成することによってのみ提供されます。
インプレスムには、スイス連邦官房の物理的な郵便住所も記載されていますが、おそらくウェブサイトを直接開発しているのは彼らではないでしょう。
メールや電話番号など、他の連絡先はありません。
あるいは、原則として「AGOVに関するフィードバック(賞賛、批判、リクエスト)を共有する」というコメントを書くことができますが、それにはログインするためにAGOVまたは同等のアカウントが必要です。
真の鶏と卵の問題です!
また、AGOV Access Androidアプリのオンラインレビューも調べましたが、現在1.4つ星と評価されており、私が使用しているどのアプリよりもはるかに低いです。
残念ながら、これらのGoogle Playストアのコメントで私と同じような問題に言及している人はいませんでした。
興味深いことに、GrapheneOS(Androidから派生したプライベートでセキュアなモバイルOS)のサポートに関するコメントが多く、公式FAQには現在それに関するエントリさえあります(私の強調)。
AGOVアクセスアプリは、AGOVアクセスアプリを不正な操作から保護するハードニングフレームワークがGrapheneOSと互換性がないため、GrapheneOSでは動作しません。
連邦官房は、サプライヤーに互換性を確保するよう指示しました。
これは有望に聞こえますが、今のところ、メール検証をパスした後、バニラiOSまたはAndroid搭載のスマートフォン、またはセキュリティキー(オプションであるのは良いことです!)のいずれかのセカンドファクターデバイスでのみ登録/ログインできます。
周囲に尋ねる
まだAGOVアカウントを作成するのに急いでいなかったので、この問題を友人にさりげなく話しましたが、誰もこの問題に遭遇したようには見えませんでした。
同僚に尋ねて、証拠としてスクリーンショットを撮るために職場のラップトップで登録ページを試すことも考えました。
驚くべきことに、今回はフォームが機能しました!
オートフィルは自動的に次のボックスにジャンプし、実際にはコードが入力されていないのではなく、間違ったコードが入力されたことを検出しました!
今回は「入力されたコードが間違っています」というエラーでした。
しかし、明らかに、政府との長期的なやり取りのために雇用主発行のコンピューターに依存したくはありません。
職場のラップトップで登録できたとしても、個人のラップトップでログインできなくなるリスクは常にありました。
残念ながら、私の同僚の誰も私のエラーに遭遇したことはありませんでした。
友人のコンピューターでも、macOS上の同じ3つのブラウザで試しましたが、すべて検証コードを受け入れました!
このウェブサイトが壊れる世界で唯一の2台のコンピューターを所有するほど運が悪かったのでしょうか??
ウェブページの調査
この時点で、簡単なアイデアは尽きたので、ウェブページを調べることにしました。
驚くほど少ないリソースしかロードしませんが、メインのJavaScriptファイルは2.4MBで、10万行以上の半難読化/ミニファイされたコードに展開されました。
一部のコードは一見すると非常に難読化されているように見えたため、これは非常に daunting に見えました。
...
var Pc = o(3980), eh = o(4572), wa = o(9974), El = o(2326), Tp = o(6450), th = o(1203), Ld = o(9326);
function Yl(...M) {
const m = (0, Ld.ms)(M);
return m ? (0, th.F)(Yl(...M), (0, Tp.I)(m)) : (0, wa.N)((I, _) => {
(0, eh.P)([I, ...(0, El.K)(M)])(_);
});
}
...
そのため、誰かがアイデアを出す場合に備えて、もう少し待つことにしました。
FAQによると、AGOVシステムのソースコードは、法的要件を満たすために2026年末に公開される予定です。
Article 9 EMBAGは、第1項で次のように規定しています。「この法律の対象となる連邦当局は、その任務の遂行のために開発した、または開発させたソフトウェアのソースコードを、第三者の権利またはセキュリティ上の理由が開示を妨げる、または制限しない限り、開示しなければならない。」
2026年12月、AGOVのソースコードは、この要件に従って公開されます。
これは、AGOVプロジェクトの目標、すなわちAGOVとAGOV e-ID Verifierを含むAGOVの達成を表すAGOVのバージョンです。
後続のバージョンは、リリースノートwww.agov.ch/rnで説明され、リリース後に公開されるように準備され、公開されます。
事前にソースコードがあり、開発者に直接バグを報告できる場所があれば、私の調査に役立ったでしょうが、残念ながら、AGOVはソースコードが公開される前に、すでに一部のサービスで必須のログインシステムとなっています。
最終的に戻ってきて、幸いなことに「field required」で検索すると、ロジックに関するいくつかのヒントが得られました。
get errorMessage() {
return this.translateService.instant(
this.emailC
}