1. はじめに
人々はユーザーエージェントを通じてウェブを体験します: ユーザーエージェントとは、それを利用する人に代わって ウェブコンテンツを取得し、提示し、それに作用するソフトウェアです。 ウェブブラウザーは最も身近な例ですが、 さまざまな他のソフトウェアも同じ役割を果たします。 「エージェント」という言葉は偶然のものではありません: ユーザーエージェントはそのユーザーのために働き、 ユーザーの利益が他の当事者の利益と衝突する場合には、 ユーザーを 最優先します。
この文書では、ソフトウェアを「ユーザーエージェント」たらしめるものと、 ユーザーエージェントがそのユーザーに対して負う義務について説明します: 保護、誠実さ、そして忠誠です。 これらの義務は、独立した要件として存在するのではなく、 コミュニティでの議論を通じて確立され、 ユーザーエージェントが実装する標準に具体化されることを意図しています。
この文書は、次の読者を対象としている:
-
これらの概念を自身の仕様または文書で再利用または参照したい 技術文書の著者。
-
ユーザーを優先する設計およびプライバシー原則に実装を沿わせたい ユーザーエージェントの開発者。
-
ユーザーエージェントが、開発者の利便性を含む他の利害関係者よりもユーザーのプライバシーと セキュリティを優先する理由を理解したいウェブ開発者。
-
ユーザーエージェントの動作を導く義務、原則、および 期待を理解しようとする規制当局および政策立案者。
2. ユーザー エージェントとは
ユーザーエージェントとは、 自身以外のウェブサイトとやり取りを行うあらゆるソフトウェア実体であり、 ユーザーの代わりに動作するものを指します。 これには、ウェブサイトの内容の単純なレンダリングや、ユーザーによって要求または許可された 操作の実行も含まれます。 公開ウェブから任意のコンテンツを読み込める 製品はユーザーエージェントです。 一人の人が日常生活で複数のユーザーエージェントを使うこともあります。
ほかの文脈では、「ユーザーエージェント」という用語は、ユーザーがタスクを達成するのを 支援するソフトウェア実体を指すために使われます。 特に電子メールクライアントは、 少なくとも1980年代後半から「メールユーザーエージェント」と呼ばれてきました。[RFC1123] オペレーティングシステム、PDF・電子書籍・画像ビューア、 デジタルウォレットを含む認証情報マネージャー、その他多くの種類の ソフトウェアも、 ユーザーエージェントとみなすことができます。 しかし、本文書およびウェブ仕様でこの用語を使う場合は、 特にユーザーに代わってウェブサイトとやり取りするソフトウェアを指します。
ウェブの文脈では、 ユーザーエージェントの最も一般的な種類はウェブブラウザーです。これには、クロスサイトリンクをたどることができるアプリ内 ブラウザーも含まれます。 ただし、ユーザーエージェントには、 検索エンジン、音声駆動型アシスタント、生成AIシステムなどのほかのツールも含まれます。 これらはウェブサイトのコンテンツの抜粋や要約を提示し、 人々がウェブサイトを移動して操作するのを支援したり、 ユーザーに代わって自動化された操作を実行したりします。
ユーザーエージェントの動作は、ウェブ標準によって、 さらには一般的な技術仕様によっても、完全には定義されていません。 特に、 ユーザーエージェントは、どの機能を実装し、 各機能をどこまで利用可能にするかを、 ユーザーに最もよく役立つように選択します。 また、実装する機能の周辺に、 独自のユーザーインターフェースやその他の動作を実装します。 たとえば、許可の確認、エラーメッセージ、プライバシーインジケーターで使われる 文言やアイコンは、 ユーザーエージェントごとに異なることがよくあります。 ユーザーエージェントは、どの仕様でも要求されていない機能も追加します。 ブックマーク、リーダーモード、開発者ツールなどがその例です。
2.1. ソフトウェア要素としてのユーザーエージェント
ソフトウェアコンポーネントとして、ユーザーエージェントはより大きなアプリケーションの一部となることができ、 Web プラットフォームまたはその一部を実装するライブラリを呼び出すことができる。
アプリケーションが、 ユーザー エージェントである部分と、そうでない部分とを明確に区別している場合、 ユーザーエージェント自体の外部にあるコンテンツを閲覧する ユーザーエージェント部分だけが、 ユーザー エージェントの義務に従う必要がある。 明らかにアプリケーション自身のコンテンツのみを表示する部分は、 自らのために動作することができるが、 それでもアプリケーションは、 アプリケーションの異なる部分から どのような挙動が期待されるかについて、利用者に明確な見通しを与える。 内部コンテンツと外部コンテンツの区別が小さすぎる場合、たとえば、 アプリケーションが外部コンテンツを閲覧するときに アドレスバー またはコンテンツのオリジンを示す別のインジケーターを表示しない場合、 アプリケーションは、 自身のコンテンツを表示するときにも ユーザーエージェントの義務に従うことが期待される。
同様に、Web プラットフォームを実装するライブラリが
完全な ユーザーエージェントであるかどうかは、そのライブラリが何を
行うかによって決まる。
SFSafariViewController
や Android Custom Tabs
のようなものは、ユーザーエージェントの義務を実装する責任と、
閲覧する外部コンテンツと
埋め込み元アプリケーションによって制御されるコンテンツとを明確に区別する責任を負う。
これらのライブラリは ユーザーエージェントである。
一方、 Android、 iOS、 および Windows WebView ライブラリのようなその他のライブラリは、 多くの種類のアプリケーションをサポートするように設計されている。 これらのアプリケーションの一部は自身のコンテンツだけを含むため、 WebView ライブラリは、それ自体で ユーザーエージェントとなることを意図したものではなく、 ユーザーエージェントの義務を実装しない。
最終的には、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. 忠誠
ユーザーエージェントは、その実装者の利益や その他の当事者の利益よりも、 ユーザーの利益を優先します。
忠実義務は、次の場合にも適用される。 ユーザーエージェントを提供する組織が、 ユーザーエージェントの機能を方向付ける意思決定に参加する場合、 またはユーザーの将来の選択肢を制約する意思決定に参加する場合である。 これらの意思決定ではユーザーが十分に代表されない可能性があるため、 忠実義務の要請により、それらの組織は合理的な措置を講じて ユーザーの多様な利益を把握し、代表する必要があり、 その際、自らをユーザーの唯一の代表者とみなしてはならない。
ユーザーエージェントは、ユーザーがページに対して 信頼性のあるコミットメントを行うことを支援することもできる。 信頼性のあるコミットメントとは、ユーザーの将来の選択肢を意図的に制限するものであり、 ページがサービスを提供する前に要求するものである。 サービスの提供を受けた後もそのコミットメントを維持することは、ユーザーへの忠実さに反するものではない。 ユーザーに忠実なコミットメントは、そのサービスの利用のみを制約し、 ユーザーのその他のデータ、設定、選択を制約するものではない。 ユーザーは引き続き、サービスの利用をやめて自分のデータを消去でき、 それ以上の影響を受けることはない。
2012年ごろ、 ユーザーエージェントのベンダーと W3C は、著作権者が、 メディアの追加コピーを作ることを技術的に難しくするために DRM を使用できる非ウェブプラットフォーム上でしか、 ユーザーによるメディアの再生を許可しなくなるのではないかと懸念するようになりました。 約束だけでは信頼性がありません。 単なるデジタルファイルでは、コピーを妨げるものが何もないからです。
ユーザーエージェントのベンダーとほかの W3C メンバーは、 事実上、著作権者およびその代表者との 集団交渉の過程に入りました。 最終的に、ブラウザーは、 暗号化メディア拡張(EME)として知られる DRM システムを搭載することに同意し、 その見返りとして次のものを得ました。
-
ユーザーがウェブ経由でメディアにアクセスできること、および
-
DRM の動作に対する、ユーザーの利益となるいくつかの制限。 これには、制限された権限で動作し、 ウェブサイトに永続的なデバイス識別子を提供しないことが含まれます。
EME では、個々のユーザーは明示的な約束をしません。 代わりに、ユーザーエージェントが標準化された取り決めを実装します。この取り決めでは、 ユーザーが制限付きメディアの再生を決めると、 そのコピーに関する制限に自動的に拘束されます。 ユーザーエージェントが受信後のファイルのコピーを手助けしないことは、忠実義務への 違反に見えるかもしれません。 しかし、そのコミットメントが制約するのはユーザーが受信を選んだメディアだけであり、 ユーザーのほかのデータ、設定、選択ではありません。 また、それがなければ、ユーザーはそのメディアをまったく受信できなかったかもしれません。
あるコミットメントがユーザーの役に立つかを評価するには、 ユーザーが得る利益と課される制限を比較検討する必要があります。 そのバランスは文脈に依存しますが、 コミットメントが忠実さを反映するのは、 ユーザーの利益がその評価を真に導いている場合に限られます。
多くの人は、EME は誤りだったと考えています (例:[EFF-Defending-Interoperability])。 たとえば、EME は次のようなことを引き起こします。
-
著作権の例外である 「フェアユース」や「フェアディーリング」を人々が利用するのを妨げます。
-
視聴者にとってのアクセシビリティを高めるために メディアを改変するのを妨げます。
-
購入元のサーバーが利用できなくなると、購入したメディアへのアクセスを妨げます。
-
著作権の保護期間が終了した後もアクセスを妨げます。
-
新しいブラウザーに対して、事実上、 広く採用されているコンテンツ 復号モジュールのライセンスを取得することを要求します。
-
技術的保護手段の回避を禁じる法律の不当な利用を防ぎません。
それでも、ユーザーエージェントがユーザーのための交渉で誤った判断をしたとしても、 忠実義務に違反したことになるのは、ユーザーを最優先にしていなかった場合だけです。
ユーザーエージェントは、その忠誠を損なうことなく サービスの対価を受け取ることができます。 対価を受け取っても、忠誠義務を負う相手が変わることはなく、 たとえばプリインストールされたデフォルトのように、 ユーザーがその取り決めを受動的に受け入れた場合でも同様です: その忠誠は、対価を支払う当事者ではなくユーザーに向けられます。
ユーザーエージェントは、ユーザーが別のユーザーエージェントに切り替えることを妨げません。
ユーザーエージェントは、ポータビリティを妨げるような方法で、ユーザーデータへのアクセスやエクスポートを妨げたり、ユーザーデータを保存したりしません。 これには、本人確認情報、ブックマーク、履歴、パスワード、およびパスキーなどの資格情報が含まれます。 ユーザーエージェントが資格情報の保存を基盤となるOSに依存している場合、 ユーザーが他のユーザーエージェントによるそれらの資格情報へのアクセスを許可できる手段が 必要です。
4. 謝辞
Infra Standard には ユーザーエージェントの初期定義で、 Privacy Principlesには これらの義務の初期バージョンで感謝します。