1. はじめに
人々はユーザーエージェントを通じてウェブを体験します: ユーザーエージェントとは、それを利用する人に代わって ウェブコンテンツを取得し、提示し、それに作用するソフトウェアです。 ウェブブラウザーは最も身近な例ですが、 さまざまな他のソフトウェアも同じ役割を果たします。 「エージェント」という言葉は偶然のものではありません: ユーザーエージェントはそのユーザーのために働き、 ユーザーの利益が他の当事者の利益と衝突する場合には、 ユーザーを 最優先します。
この文書では、ソフトウェアを「ユーザーエージェント」たらしめるものと、 ユーザーエージェントがそのユーザーに対して負う義務について説明します: 保護、誠実さ、そして忠誠です。 これらの義務は、独立した要件として存在するのではなく、 コミュニティでの議論を通じて確立され、 ユーザーエージェントが実装する標準に具体化されることを意図しています。
この文書は、次の読者を対象としている:
-
これらの概念を自身の仕様または文書で再利用または参照したい 技術文書の著者。
-
ユーザーを優先する設計およびプライバシー原則に実装を沿わせたい ユーザーエージェントの開発者。
-
ユーザーエージェントが、開発者の利便性を含む他の利害関係者よりもユーザーのプライバシーと セキュリティを優先する理由を理解したいウェブ開発者。
-
ユーザーエージェントの動作を導く義務、原則、および 期待を理解しようとする規制当局および政策立案者。
2. ウェブユーザーエージェントとは
ユーザーエージェントは、一般的に、ユーザーのために他のエンティティとやり取りするソフトウェアです。 ユーザーエージェントには、多くのオペレーティングシステム、電子メールクライアント、PDF・電子書籍・画像ビューア、 認証情報マネージャー(デジタルウォレットを含む)、その他多くの種類のソフトウェアが含まれます。
ウェブユーザーエージェントとは、 自身以外のウェブサイトとユーザーの代わりにやり取りを行う すべてのソフトウェア実体を指します。 これには、ウェブサイトの内容の単純なレンダリングや、 ユーザーによって要求または許可された操作の実行も含まれます。 ウェブ仕様やこの文書内では、 ウェブユーザーエージェントは通常「ユーザーエージェント」とだけ呼ばれます。 混乱の恐れがある場合は、どちらの完全な用語も使用できます。 一人の人が日常生活で複数のユーザーエージェントを使うこともあります。
ウェブユーザーエージェントの最も一般的な種類はウェブブラウザーです。これには、 クロスサイトリンクをたどることができるアプリ内ブラウザーも含まれます(任意の コンテンツを読み込める製品はすべてウェブブラウザーです)。 ただし、ユーザーエージェントには、 検索エンジン、音声駆動型アシスタント、生成AIシステムなどのほかのツールも含まれます。 これらはウェブサイトのコンテンツの抜粋や要約を提示し、 人々がウェブサイトを移動して操作するのを支援したり、 ユーザーに代わって自動化された操作を実行したりします。
ユーザーエージェントの動作は、ウェブ標準や一般的な技術仕様によって完全には定義されていません。 特に、 ユーザーエージェントはユーザーのためにどの仕様を実装するか選択し、 また、実装した仕様のまわりに、独自のユーザーインターフェースやその他の動作を加えます。
2.1. ソフトウェア要素としてのユーザーエージェント
ソフトウェアコンポーネントとして、ユーザーエージェントはより大きなアプリケーションの一部となることができ、 Web プラットフォームまたはその一部を実装するライブラリを呼び出すことができる。
アプリケーションが、 ユーザー エージェントである部分と、そうでない部分とを明確に区別している場合、 ユーザーエージェント自体の外部にあるコンテンツを閲覧する ユーザーエージェント部分だけが、 ユーザー エージェントの義務に従う必要がある。 明らかにアプリケーション自身のコンテンツのみを表示する部分は、 自らのために動作することができるが、 それでもアプリケーションは、 アプリケーションの異なる部分から どのような挙動が期待されるかについて、利用者に明確な見通しを与える。 内部コンテンツと外部コンテンツの区別が小さすぎる場合、たとえば、 アプリケーションが外部コンテンツを閲覧するときに アドレスバー またはコンテンツのオリジンを示す別のインジケーターを表示しない場合、 アプリケーションは、 自身のコンテンツを表示するときにも ユーザーエージェントの義務に従うことが期待される。
同様に、Web プラットフォームを実装するライブラリが
完全な ユーザーエージェントであるかどうかは、そのライブラリが何を
行うかによって決まる。
SFSafariViewController
や Android Custom Tabs
のようなものは、ユーザーエージェントの義務を実装する責任と、
閲覧する外部コンテンツと
埋め込み元アプリケーションによって制御されるコンテンツとを明確に区別する責任を負う。
これらのライブラリは ユーザーエージェントである。
一方、 Android、 iOS、 および Windows WebView ライブラリのようなその他のライブラリは、 多くの種類のアプリケーションをサポートするように設計されている。 これらのアプリケーションの一部は自身のコンテンツだけを含むため、 WebView ライブラリは、それ自体で ユーザーエージェントとなることを意図したものではなく、 ユーザーエージェントの義務を実装しない。
最終的には、埋め込み元アプリケーション自身、またはその一部が ユーザー エージェントとして動作する場合、 埋め込み元アプリケーションが ユーザーエージェントの 義務に従う責任を負う。 アプリケーションが外部コンテンツを ユーザーエージェントライブラリを通じてのみ閲覧する場合、これは容易に実現できる。 開発者は、非ユーザーエージェント WebView を使用してアプリ内ブラウザーを実装する場合、 ユーザーエージェントの 義務に従うよう、特に注意する必要がある。
3. ユーザーエージェントの義務
各ユーザーエージェントは、その利用者に奉仕するものであり(インターネットはエンドユーザーのためのものである)、 その他のいかなる利害関係者に奉仕するものでもない。 ユーザーエージェントは、その利用者に対してさまざまな 義務を負っており、 これらは共同での議論を通じて確立され、 ユーザーエージェントが実装するさまざまな標準に具体化されている。
3.1. 保護
Web ページへのアクセスは安全であるべきである。 ページにアクセスすること自体によって、 ソフトウェアをインストールしたりハードウェアにアクセスしたりするなど、 ページが利用者のコンピューターや環境を変更できるようになってはならない。
サイトやその他の観察者に開示されるあらゆるデータは、 利用者の選好に沿い、 データ 最小化の原則に従う。 特に、ユーザーエージェントは、 サイトが利用者の活動を追跡できる可能性を制限するように動作する [unsanctioned-tracking]。
利用者は、フォームへの入力や権限の付与などによって、 より多くの情報を共有することを 選択できる。 その場合でも、ユーザーエージェントは利用者が欺かれるのを避けられるよう支援し、 ページが昇格したアクセス権を得ようとする場合には、それを明確に示す。
ページが複数の許可を求める場合、 インフォームド・コンセントを可能にするため、ユーザーエージェントは、 ユーザーが要求された許可の一部を付与できること およびユーザーが付与する許可の全体を認識していることを保証する必要がある。
ユーザーエージェントは、サイト上の悪意あるコードが ユーザーエージェントを抜けてユーザーのコンピュータや他の オリジン にアクセスしたり変更したりするのを防ぐ必要があります。 コンポーネントのサンドボックス化や メモリ安全な言語の採用、 脆弱性調査・対応チームの設置などによって ユーザーエージェントは保護義務を果たします。 こうした防御策は新たな脅威に合わせて絶えず進化させる必要があります。
ユーザーが無関係な複数のウェブサイトにアクセスする場合、 埋め込みiframeに共有識別クッキーを送信しない選択は十分に可能です。 そうしたクッキーを送信するブラウザーは保護義務を果たしていません。 一方、安定したIPアドレスを開示することは現時点では避けられないため、 それは違反ではありません。
ユーザーエージェントは、ユーザーが明示的に選択または開いた場合を除き ページによるローカルファイルへのアクセスを防ぐことが求められます。 これが次のような挙動の動機となります:
-
各
file:URLに固有のオリジンを割り当てる -
<input type=file>アップロード時にパス要素を削除する -
@font-faceルールで利用できるローカルフォントを制限する
ただし、ユーザーはファイルのアップロードやダウンロード等で ファイルを共有することが可能です。 File System Access などのAPIも、ユーザーが適切な判断ができる限り この義務に違反しません。
ユーザーエージェントは、訪問者を攻撃するページの特定を試みることが期待されます。 ユーザーがそのようなページへのアクセスを開始すると、 ユーザーエージェントは、例えばアクセスをブロックしたりユーザーに警告したりすることで、 被害を防ごうとする場合があります。
3.2. 誠実性
ユーザーエージェントは Web とそのユーザーの間を仲介し、 何が起きているかをユーザーが理解できる形で説明する。 ユーザーエージェントが自動的に、またはユーザーに代わって操作を行う場合、明確に伝える対象は、それらの 操作とその結果である。ユーザーエージェントがコンテンツを変換したり、ユーザーに代わって操作を行ったりする際に、 ユーザーが容易に観察できない方法を用いる場合、有意義な可視性を提供する対象は、依拠した情報源、 実行した操作、およびそれらの操作の結果である。
ユーザーエージェントは、説明のために複数の手法を使用できます。これには、 テキスト、権限プロンプト、インジケーター、プレビュー、その他のインターフェイス要素が含まれます。 これらの要素の配置と、何かを強調する必要があるかどうかを検討します。
代表的な例は、ウェブサイトが暗号化された接続を介して提供されたかどうかをユーザーエージェントが示すことです。 これは時間の経過とともに変化し、安全でないサイトを壊れた錠前アイコンで表示する方式から、 一部のユーザーエージェントでは URL バーに「安全ではありません」というテキストを明示的に表示する方式へと発展してきました。
メディアキャプチャとストリームのような仕様には、 ユーザーエージェントにウェブサイトの特定の種類の動作について説明することを要求する プライバシーインジケーターの 要件 が含まれていますが、 仕様がその動作を特に明示していない場合でも、ユーザーが その他の動作について知る必要があるときには、ユーザーエージェントが同じ手法を使用することが期待されます。
誠実なユーザーエージェントは、ユーザーに真実を提示するために積極的に取り組みます。 単に嘘を避けるだけではありません。 その説明は、 現在の状態と起こり得る結果を明確に表し、 婉曲表現や曖昧さを避け、 機密性の高い活動が行われているときには、それを明白にします。
ユーザーエージェントは、これらの説明をいつ、どの程度の頻度で表示するかを選択し、 説明が有用なときに提示され、注意をそらすのではなく情報を提供するようにします。 ユーザーエージェントは、ユーザーが意思決定を行うかどうか、またいつ行うかを制御できるようにします。
ウェブサイトが位置情報や音声録音のような長期間有効な権限を使用している場合、 ユーザーエージェントは URL バーにインジケーターアイコンを表示することで、何が起きているかを説明できます。
ユーザーに(特定のサイトではなく)ブラウザーへアカウント情報を提供するよう促しながら、 その後、その情報をトラッキングや広告ターゲティングなどの 他の目的にも使用することを密かにデフォルトとするユーザーエージェントは、誠実に行動しているとはいえません。ユーザー エージェントは、トレードオフが存在する箇所を明確に伝える必要があります。
3.3. 忠誠
ユーザーエージェントは、その実装者の利益や その他の当事者の利益よりも、 ユーザーの利益を優先します。
忠実義務は、次の場合にも適用される。 ユーザーエージェントを提供する組織が、 ユーザーエージェントの機能を方向付ける意思決定に参加する場合、 またはユーザーの将来の選択肢を制約する意思決定に参加する場合である。 これらの意思決定ではユーザーが十分に代表されない可能性があるため、 忠実義務の要請により、それらの組織は合理的な措置を講じて ユーザーの多様な利益を把握し、代表する必要があり、 その際、自らをユーザーの唯一の代表者とみなしてはならない。
ユーザーエージェントは、その忠誠を損なうことなく サービスの対価を受け取ることができます。 対価を受け取っても、忠誠義務を負う相手が変わることはなく、 たとえばプリインストールされたデフォルトのように、 ユーザーがその取り決めを受動的に受け入れた場合でも同様です: その忠誠は、対価を支払う当事者ではなくユーザーに向けられます。
ユーザーエージェントは、ユーザーがページに対して 信頼性のあるコミットメントを行うことを支援することもできる。 信頼性のあるコミットメントとは、ユーザーの将来の選択肢を意図的に制限するものであり、 ページがサービスを提供する前に要求するものである。 サービスの提供を受けた後もそのコミットメントを維持することは、ユーザーへの忠実さに反するものではない。 ユーザーに忠実なコミットメントは、そのサービスの利用のみを制約し、 ユーザーのその他のデータ、設定、選択を制約するものではない。 ユーザーは引き続き、サービスの利用をやめて自分のデータを消去でき、 それ以上の影響を受けることはない。
ユーザーエージェントは、ユーザーが別のユーザーエージェントに切り替えることを妨げません。
ユーザーエージェントは、ポータビリティを妨げるような方法で、ユーザーデータへのアクセスやエクスポートを妨げたり、ユーザーデータを保存したりしません。 これには、本人確認情報、ブックマーク、履歴、パスワード、およびパスキーなどの資格情報が含まれます。 ユーザーエージェントが資格情報の保存を基盤となるOSに依存している場合、 ユーザーが他のユーザーエージェントによるそれらの資格情報へのアクセスを許可できる手段が 必要です。
4. 謝辞
Infra Standard には ユーザーエージェントの初期定義で、 Privacy Principlesには これらの義務の初期バージョンで感謝します。